Назад | Перейти на главную страницу

Как настроить iptables для передачи данных с сетевого интерфейса на мост?

Я создаю универсальную среду 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

Более подробную информацию можно найти в документация.