Есть два хоста A и B. На каждом из хостов работают виртуальные машины. Виртуальные машины находятся в сети 172.16.0.0/12. На хосте A есть интернет. Задача: сделать интернет на всех виртуальных машинах. Сложность заключается в том, что физический интерфейс один.
Делаем на хосте A:
/sbin/iptables -t nat -A POSTROUTING -s 172.16.0.0/12 ! -d 172.16.0.0/12 -j LOG --log-prefix "iptables nat"
/sbin/iptables -t nat -A POSTROUTING -s 172.16.0.0/12 ! -d 172.16.0.0/12 -j MASQUERADE
Делаем на виртуальной машине хоста A:
$ ping linux.org.ru
PING linux.org.ru (217.76.32.61) 56(84) bytes of data.
64 bytes from linux.org.ru (217.76.32.61): icmp_seq=1 ttl=56 time=2.82 ms
Делаем на виртуальной машине хоста B:
$ ping linux.org.ru
PING linux.org.ru (217.76.32.61) 56(84) bytes of data.
--- linux.org.ru ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1010ms
В это время в логах хоста A:
Jun 10 17:56:12 machine-01c kernel: [22872.850936] iptables natIN= OUT=br0 PHYSIN=eth1 SRC=172.16.0.21 DST=217.76.32.61 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=9024 SEQ=1
Как это победить?