Кажется, я не могу найти существующий вопрос, подобный моему сценарию. Я использую 2 публичных моста для 4 виртуальных машин. Две виртуальные машины на каждое устройство моста. Статистика интерфейса показывает, что для входящего трафика используется назначенный мост для виртуальной машины, но исходящий проходит только через первый мост.
# cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/firewall-rules
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
auto br1
iface br1 inet dhcp
bridge_ports eth1
bridge_stp off
bridge_maxwait 0
bridge_fd 0
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.a4badb4e3949 no eth0
vnet0
vnet2
br1 8000.a4badb4e394a no eth1
vnet1
vnet3
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default vlan-200.mydoma 0.0.0.0 UG 0 0 0 br0
XXX.YYY.200.0 * 255.255.248.0 U 0 0 0 br0
XXX.YYY.200.0 * 255.255.248.0 U 0 0 0 br1
Маршрутизация имеет смысл с тем, что я вижу: весь исходящий трафик, за исключением подсети 200, будет использовать br0.
Как его можно настроить так, чтобы исходящий трафик гостевых KVM на br1 действительно использовал br1 в качестве шлюза? Текущая настройка работает нормально, но я бы предпочел назначить мосты виртуальным машинам как их собственный полный шлюз, поэтому br1 лучше использовать для пакетов TX.
Если интерфейсы находятся в одной подсети, свяжите их. В противном случае, если у виртуальных машин нет маршрутов, пересекающих второй мост, они никогда не будут его использовать. Похоже, они находятся в одной подсети, и в этом случае следуйте этому руководству: