Для линукс универсально, если прописывать при старте ручками.
#!/usr/bin/bash
##########sets
PATH=$PATH:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin;
export PATH;
echo $PATH;
brc=`which brctl`;
ifcfg=`which ifconfig`;
fcommand=`which sysctl`;
ebt=`which ebtables`;
v=`which vconfig`;
m=`which modprobe`;
r=`which route`;
i=`which ip`;
en=`which ifenslave`;
gw="хххххххххххххххх";
ns="nameserver ххххххххххххх
nameserver 8.8.8.8
nameserver 8.8.4.4";
###########modules
$m 8021q;
поддержка влан если присутствуют
$m bonding miimon=100 mode=1;
поддержка балансировки если таковая присутствует
mode; посмотреть в интернете, число зависит от применяемой технологии на подключаемых портах коммутатора
###########network bridge
#$brc addbr br0;
создаём бридж
#$brc stp br0 off;
отключаем в бридже стп, в том случае если у Вас "тупой коммутатор"
#$brc addif br0 eno1;
добавляем в бридж сетевую карту eno0
#$ifcfg br0 ххх.ххх.ххх.ххх netmask 255.255.255.0 up;
назначаем адрес бриджу + включаем
#$ifcfg eno1 0.0.0.0 promisc up;
включаем без адреса сетевую карту eno1
Вот в этом месте внимание: без включения в мост виртуальных интерфейсов работать не будет.
т.е пока исходный интерфейс или интерфейсы не будет назначены в квм, форвардинг не работает
Для каждой машины не нужно создавать бридж. Достаточно одного. Вот так примерно выглядит подключение через бридж на железке с двумя виртуальными интерфейсами:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.XXXXXXXXXXX no eno1
vnet0
vnet1
про sysctl;
Вносим в sysctl.conf или /etc/sysctl.d/{номер меньше су шествующих конфигов }-xxxxxxxxx.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.eno1.forwarding = 1
net.ipv4.conf.eno1.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv4.conf.all.arp_accept = 1
net.ipv4.conf.all.arp_announce = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 1
net.ipv4.conf.all.proxy_arp = 1
net.ipv4.conf.all.proxy_arp_pvlan = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.default.proxy_arp_pvlan = 1
#########arp+ip фильтр
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0