如何配置 iptables 以将数据从网络接口传递到网桥?

如何配置 iptables 以将数据从网络接口传递到网桥?

我在一台 CentOS7.4 机器上搭建了一个 openstack 一体机环境,由于某些原因我只有一个网络接口(eth0)和一个 ip 地址,所以我创建了一个 linux 网桥(br0),并使用 iptables 命令将数据转发到 eth0:

iptables -t nat -A POSTROUTING -s {bridge virtual ip} -j SNAT --to {eth0 ip}

但似乎不起作用。

当我从 br0 ping 到 8.8.8.8 并运行 tcpdump 时,我可以看到数据可以转发到 eth0 并发送到 8.8.8.8,但是当数据发送回 eth0 时,它们不能转发到 br0。

Ip forwardingnet.bridge.bridge-nf-call-iptablesnet.bridge.bridge-nf-call-ip6tables设置为1。

我该如何解决这个问题?

答案1

要转发 NAT 请求,您应该在 iptables 中启用伪装:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

更多详情请参阅文档

相关内容