Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Машины теряют сетевое подключение после перезапуска сети на хосте

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Машины теряют сетевое подключение после перезапуска сети на хосте, Proxmox Виртуальная Среда
     
    TodorPetkov
    Guest
    #1
    0
    16.10.2021 16:16:00
    Привет! У меня есть кластер из 3 узлов с последней версией PVE7 no-subscription. На каждом сервере два интерфейса объединены в OVS бонд, на нем настроены два VLAN-интерфейса: первый — management (891), второй — corosync (213). У меня есть пару ВМ в третьем VLAN 892 (он не настроен на самом PVE, только внутри ВМ).

    Когда я перезапускаю сеть на сервере, ВМ теряют сетевое подключение, и чтобы его восстановить, приходится менять модель сетевой карты в настройках ВМ. Перезагрузка сервера не помогает, но выключение и затем включение — работает. Проверял с ВМ в VLAN 891 и 892, поведение одинаковое. Что я делаю не так?

    Вот конфигурация сети с одного из серверов, остальные отличаются только IP-адресами. Заранее спасибо.

    Код:

    # network interface settings; autogenerated  
    # Please do NOT modify this file directly, unless you know what  
    # you're doing.  
    #  
    # If you want to manage parts of the network configuration manually,  
    # please utilize the 'source' or 'source-directory' directives to do  
    # so.  
    # PVE will preserve these directives, but will NOT read its network  
    # configuration from sourced files, so do not attempt to move any of  
    # the PVE managed interfaces into external files!

    auto lo  
    iface lo inet loopback

    auto eno1np0  
    iface eno1np0 inet manual  
    #10GBASE-T card

    auto eno3  
    iface eno3 inet manual  
    #1000BASE-T card

    auto eno4  
    iface eno4 inet manual  
    #1000BASE-T card

    auto eno2np1  
    iface eno2np1 inet manual  
    #10GBASE-T card

    auto vlan891  
    iface vlan891 inet static  
           address 172.20.145.9/24  
           gateway 172.20.145.254  
           ovs_type OVSIntPort  
           ovs_bridge vmbr0  
           ovs_options tag=891  
    #OVS management

    auto vlan213  
    iface vlan213 inet static  
           address 192.168.1.1/24  
           ovs_type OVSIntPort  
           ovs_bridge vmbr0  
           ovs_options tag=213  
    #OVS corosync

    auto bond0  
    iface bond0 inet manual  
           ovs_bonds eno1np0 eno2np1  
           ovs_type OVSBond  
           ovs_bridge vmbr0  
           ovs_options bond_mode=active-backup other_config:bond_updelay=1000  
    #OVS Bond

    auto vmbr0  
    iface vmbr0 inet manual  
           ovs_type OVSBridge  
           ovs_ports bond0 vlan213 vlan891  
    #OVS Bridge
     
     
     
    webftpmaster
    Guest
    #2
    0
    16.12.2021 04:25:00
    Та же проблема!!! Пожалуйста, помогите. Очень страшно думать, что любые изменения в сетевых настройках хоста могут отключить сеть у моих виртуальных машин, а они работают в боевом окружении!
     
     
     
    TodorPetkov
    Guest
    #3
    0
    16.12.2021 08:49:00
    Думаю, нашёл причину, но понятия не имею, как это исправить и задумано ли это вообще так. При перезапуске сети мост пересоздаётся, но интерфейсы виртуальных машин больше не являются его членами. Когда меняю модель сетевого устройства, они снова (пере)добавляются. Ищу способ добавить их через командную строку, иначе придётся проходить по X виртуальным машинам через интерфейс и кликать там много раз.
     
     
     
    webftpmaster
    Guest
    #4
    0
    16.12.2021 19:38:00
    Нашёл быстрый и грязный способ... но он требует обслуживания, так что будьте осторожны!

    Шаг 1: Создайте новый скрипт (bash) в месте, где вы можете его запускать согласно своим пользовательским правам. Например: /root/scripts/reload_vm_network

    Шаг 2: Нужно собрать пару данных по вашим ВМ. (Это самая сложная часть, если вы часто меняете настройки ВМ или создаёте много ВМ)  
    Получите список ваших VMID:  
    Код: sudo qm list  
    Запомните ID ВМ, они вам понадобятся.

    Получите сетевую информацию каждой ВМ:  
    Код: get config <vmid>  
    Замените vmid на каждый ID, который получили на первом шаге.  
    Обратите внимание на строку: netX: ....  
    Пример:  
    Код: net0: e1000=DE:9D:F0:86:A8:DB,bridge=vmbr1,firewall=0  
    Повторите этот шаг для каждой ВМ и запишите результаты.

    Шаг 3: Отредактируйте скрипт из шага 1 и добавьте всю информацию по вашим ВМ следующим образом:  
    nano /root/scripts/reload_vm_network  
    Код:  
    #!/bin/bash

    vm101="e1000=DE:3E:6E:FE:C2:D8:F9,bridge=vmbr1"  
    vm102="e1000=2E:00:A6:1D:62:7F,bridge=vmbr1"

    qm set 101 --net0 $vm101",link_down=1"  
    qm set 101 --net0 $vm101""

    qm set 102 --net0 $vm102",link_down=1"  
    qm set 102 --net0 $vm102""

    ВАЖНО! Если вы меняете MAC-адреса ВМ, нужно править их и в скрипте. Если меняете bridge — тоже меняйте в скрипте. И так далее...  
    Если добавляете новую ВМ (скажем, 103), просто повторяете шаг 2 для неё и добавляете в скрипт так:  
    Код:  
    #!/bin/bash

    vm101="e1000=DE:3E:6E:FE:C2:D8:F9,bridge=vmbr1"  
    vm102="e1000=2E:00:A6:1D:62:7F,bridge=vmbr1"  
    vm103="e1000=AE:40:B6:5C:CC:3D,bridge=vmbr1"

    qm set 101 --net0 $vm101",link_down=1"  
    qm set 101 --net0 $vm101""

    qm set 102 --net0 $vm102",link_down=1"  
    qm set 102 --net0 $vm102""

    qm set 103 --net0 $vm103",link_down=1"  
    qm set 103 --net0 $vm103""

    Шаг 4: *** Перезагрузите сетевые настройки на вашем Proxmox хосте ***  
    ВНИМАНИЕ! Это прервёт сеть на сервере, так что будьте готовы к доступу через IPMI, если это выделенный сервер и если скрипт сломает соединение.  
    Код: systemctl restart networking

    Шаг 5 (опционально): Для удобства я добавил пару алиасов в файл bashrc, чтобы проще редактировать настройки портов и перезагружать сеть.  
    Отредактируйте bashrc:  
    Код: nano /root/.bashrc  
    Добавьте в конец файла:  
    Код:  
    alias net.m='nano /etc/network/interfaces'  
    alias netall='systemctl restart networking'  
    alias net1='ifdown vmbr1; ifup vmbr1;'

    Объяснение:  
    net.m — откроет файл /etc/network/interfaces для редактирования (чтобы менять настройки портов, например)  
    netall — полностью перезапустит сеть на хосте (смотрите предупреждение выше)  
    net1 — выключит и включит только мост vmbr1 (в моём случае) — к которому подключены все ВМ в качестве шлюза по умолчанию, остальные мосты и сам хост не затронет.

    Теперь, когда нужно добавить новый маршрут iptable или форвард для одной из ВМ на vmbr1, я просто в консоли хоста запускаю:  
    Код: net1  
    Это перезагрузит настройки адаптера vmbr1 и «заставит» все ВМ переподключить сетевой интерфейс. Связь с ВМ может пропасть на пару секунд, пока vmbr1 не заработает — это нормально.

    Улучшение: можно создать отдельный мост для каждой ВМ и сделать скрипт для каждой из них — тогда при изменении настроек для одной вы не затронете остальные. В любом случае, это костыль... Мне кажется, разработчикам Proxmox стоит заняться этим вопросом. Или если кто-то знает более хорошее решение, делитесь.

    Надеюсь, это поможет.
     
     
     
    spirit
    Guest
    #5
    0
    02.01.2022 06:50:00
    Привет, зачем тебе перезагружать сеть? Если ты используешь ifupdown2, то просто можно перезагрузить конфигурацию сети — она применит изменения, не отключая при этом мост и tap-интерфейсы виртуальных машин, которые к нему подключены. Команда "ifreload -a" или кнопка "apply configuration" в графическом интерфейсе.
     
     
     
    hvisage
    Guest
    #6
    0
    15.06.2022 00:28:00
    Одна причина: демон OpenVSwitch нужно перезапустить, и это убивает мост во время обновления или апгрейда пакета `openvswitch-switch`.
     
     
     
    Andrii.B
    Guest
    #7
    0
    04.07.2025 12:17:00
    Я пытался отключить bond. Но это не помогло. Я вижу, что нужно подождать примерно 10 секунд после перезагрузки сети, потому что на сервере нет сети. Может ли это быть причиной отсутствия сети на виртуальных машинах?
     
     
     
    hvisage
    Guest
    #8
    0
    15.06.2022 01:26:00
    Спасибо, мои "моды"

    Bash:

    # Сначала получаем нужные нам данные:
    qm list | grep running | awk '{print "qm config "$1" | grep ^net | sed -e '\''s/^/qm "$1" /'\''"}' | sh >> /tmp/t1
    pct list | grep running | awk '{print "pct config "$1" | grep ^net | sed -e '\''s/^/pct "$1" /'\''"}' | sh >> /tmp/t1

    # Теперь преобразуем их в нужный нам вид:
    # P.S. Я *НЕ* использую опцию firewall, поэтому буду использовать её как «общий знаменатель» между pct и qm — у pct нет опции link_down=
    cat /tmp/t1 | awk '{print $1" set "$2" -"$3" firewall=1,"$4}' > /tmp/tt1
    cat /tmp/t1 | awk '{print $1" set "$2" -"$3" "$4}' > /tmp/tt2

    # Обязательно запускайте эти команды из КОНСОЛИ!!!!

    apt upgrade # Или что там ещё требует «веселья»

    systemctl restart networking

    bash < /tmp/tt1
    bash < /tmp/tt2
     
     
     
    railgunning
    Guest
    #9
    0
    15.03.2023 06:11:00
    У меня была та же проблема. До этого я просто перезапускал каждый хост после значительных изменений в сети (не слишком часто, да и в домашней лаборатории). Наконец, из любопытства я поискал решение и наткнулся на это место. В качестве вклада хочу поделиться своим взглядом на предложенные выше скриптовые решения. Они просто генерируют команды для тестирования. Уберите «echo», чтобы команды реально выполнялись.

    Однострочник на Bash:

    while read vmid _ status _; do [[ "$status" == "running" ]] && while read net conf; do echo sudo qm set $vmid --${net:0:-1} ${conf}",link_down=1"; echo sudo qm set $vmid --${net:0:-1} ${conf}; done <<< $(sudo qm config $vmid | grep "^net" | grep -v "link_down=1"); done <<< $(sudo qm list | tail -n +2)

    Файл скрипта / более читаемая версия на Bash:

    #!/bin/bash

    while read vmid _ status _; do  
     [[ "$status" == "running" ]] &&
     while read net conf; do  
       echo sudo qm set $vmid --${net:0:-1} ${conf}",link_down=1"  
       echo sudo qm set $vmid --${net:0:-1} ${conf}  
     done <<< $(sudo qm config $vmid | grep "^net" | grep -v "link_down=1")  
    done <<< $(sudo qm list | tail -n +2)
     
     
     
    thomas.zirkler
    Guest
    #10
    0
    05.04.2023 20:39:00
    Для меня эта проблема сохраняется даже после того, как я попробовал скрипты отсюда. Честно говоря, это немного ломает всю затею...
     
     
     
    hvisage
    Guest
    #11
    0
    05.04.2023 22:12:00
    Да, эти скрипты не дают «гарантии». Более надёжный и гарантированный способ — перезагружать ProxMox всякий раз, когда что-то меняется в openvswitch или происходят другие изменения в сетевых интерфейсах хоста.
     
     
     
    nadalizadeh
    Guest
    #12
    0
    29.11.2023 22:21:00
    Для меня перезагрузка интерфейса не помогла, и интерфейс так и не присоединился к недавно созданному мосту после перезапуска сетевой службы. Поэтому я сделал вот что: временно переключил интерфейс на другой мост (с vmbr1 на vmbr0), а затем обратно на vmbr1. Сохраните этот скрипт в /etc/network/if-up.d/vm_net_restart и сделайте его исполняемым — так при каждом перезапуске сети сетевая часть вашей ВМ будет автоматически подключаться к мостам.

    Примечание 1: этот код не влияет на vmbr0 и требует доработки, если вам действительно важен и этот мост.  
    Примечание 2: если хотите запускать скрипт вручную, не кладите его в папку if-up.d и уберите строку  
    Code: [ "$IFACE" == "vmbr1" ] || exit 0
     
     
     
    LEI
    Guest
    #13
    0
    19.10.2024 15:46:00
    Похоже, это всё еще происходит: переключение "link_down" на контейнерах и "firewall" на виртуальных машинах решает проблему после перезапуска сети. Также, используя post-up хуки, пришлось запускать скрипт в фоновом режиме, чтобы избежать ошибок "не удалось перезагрузить конфигурацию сети" и "превышено время ожидания завершения задачи".
     
     
     
    Andrii.B
    Guest
    #14
    0
    04.07.2025 02:42:00
    Сегодня я обнаружил ту же проблему на одном узле. Очень странно.
     
     
     
    Andrii.B
    Guest
    #15
    0
    04.07.2025 03:28:00
    Если команда ifquery -c -a не показывает виртуальные интерфейсы.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры