Привет, лор. Я снова выхожу на связь.
Есть три тачки, конфигурация такая:
1. Интернет шлюз и одновременно хост для виртуальных машин. Есть две сетевухи
- eth1 - pppoe соединение ppp0
- eth0 - сетевуха для внутренней сети, напрямую соединена со второй машиной. На интерфейсе адрес 192.168.0.1
2. Некая машина, ее настройка меня не касается, там одна сетевуха соедененная кроссовером с eth0 машины 1. На интерфесе адрес 192.168.0.2
3. Виртуальная машина, хостится на машине 1. На хостовой машине представлена интерфесом vnet0. Внутри машины это eth0 с адресом 192.168.0.5
Задача состоит в том, чтобы все три машины были в одной подсети, как будто они воткнуты в один свич. Я логично решил, что тут надо сделать мост на машине 1
root@localhost /var/log # brctl show
bridge name bridge id STP enabled interfaces
br0 8000.bc5ff40f6a12 no eth0
vnet0
root@localhost /var/log # ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
ether bc:5f:f4:0f:6a:12 txqueuelen 0 (Ethernet)
RX packets 176 bytes 23531 (22.9 KiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 609 bytes 89383 (87.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Пришлось также добавить дополнительные правила в файрвол
-A FORWARD -i br0 -o br0 -j ACCEPT
-A INPUT -i br0 -j ACCEPT
Теперь самое интересное: доступ с виртуальной машины в интернет. Как тут быть совсем не понятно. Если бы машины были реальные и воткнуты в настоящий свич, я бы просто на машине 3 дал шлюз по умолчанию 192.168.0.1 и пакеты бы реально на него направлялись, но в случае с мостом адрес присвоен мосту, а не интерфейсу. Логирование iptables показывает вот такие пакеты в цепочке PREROUTING
Oct 14 02:46:02 localhost kernel: [113114.183459] IN=br0 OUT= PHYSIN=vnet0 MAC=bc:5f:f4:0f:6a:12:52:54:00:f8:c8:b1:08:00 SRC=192.168.0.5 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=1769 SEQ=1
Вобщем логично, что тут что то не правильно. Целевого устройства нет, как и phys-out тоже.
Что мне тут нужно сделать чтобы правильно направить пакеты с виртуальной машины в инет ?
PS Поздновато, и мозги уже не хотят придумать ответ сами.