У меня есть 2 голых сервера linux в DC, у каждого есть внешний и внутренний интерфейсы. Внутренние интерфейсы напрямую связаны друг с другом. Допустим, у меня есть eth1 на ServerA и eth1 на serverB. Если я назначаю ip-адреса на ServerA: eth1 и serverB: eth1 напрямую - все работает как шарм. Но мне нужно сделать виртуальные мосты на обоих серверах, а затем подключить на нем eth1, поэтому сделайте эту конфигурацию: ServerA
auto vmbr0
iface vmbr0 inet static
address 172.16.1.1
netmask 24
bridge-ports enp96s0f1
bridge-stp off
bridge-fd 0
postup ip route add 172.16.0.0/16 vmbr0
ServerB
auto vmbr0
iface vmbr0 inet static
address 172.16.2.1
netmask 24
bridge-ports eno2
bridge-stp off
bridge-fd 0
postup ip route add 172.16.0.0/16 vmbr0
И это тоже работает. Затем я создаю виртуальную машину с proxmox ob Server A и передаю сеть, адаптированную к мосту с ServerA: vmbr0 (eth1), и настраиваю ее как auto ens18
iface ens18 inet static
address 172.16.1.11/24
post-up ip route add 172.16.1.0/24 dev ens18
Итак, теперь я не могу пинговать 172.16.1.1 с ВМ и ВМ с serverA. Даже в tcpdump на ens18 (VM) я не вижу пакетов, исходящих от моста.
Маршруты на ServerA:
root@wss01:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 5.8.8** 0.0.0.0 UG 0 0 0 vmbr1
localnet 0.0.0.0 255.255.255.248 U 0 0 0 vmbr1
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 vmbr0
Цель состоит в том, чтобы добраться до ServerB и виртуальной машины за ним от виртуальной машины с serverA.
По-видимому, основная проблема заключалась в неправильных маршрутах (я писал это с помощью оператора "следующего перехода", а не интерфейса (как показано в конфигурации выше). Arter, я изменил маршруты на форму, которую я показываю в исходном сообщении, все, похоже, работает