Я создаю универсальную среду openstack на машине CentOS7.4. По какой-то причине у меня есть только один сетевой интерфейс (eth0) и один IP-адрес, поэтому я создал мост Linux (br0) и перенаправил данные на eth0 с помощью команды iptables:
iptables -t nat -A POSTROUTING -s {bridge virtual ip} -j SNAT --to {eth0 ip}
Но вроде не работает.
Когда я отправляю ping на 8.8.8.8 из br0 и запускаю tcpdump, я вижу, что данные могут быть перенаправлены на eth0 и отправлены на 8.8.8.8, но когда данные отправляются обратно на eth0, они не могут быть отправлены на br0.
Ip forwarding
, net.bridge.bridge-nf-call-iptables
и net.bridge.bridge-nf-call-ip6tables
установлены на 1.
Как я могу исправить эту проблему?
Чтобы перенаправить запрос с NAT, вы должны включить Masquerading в iptables:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Более подробную информацию можно найти в документация.