我必须将来自我的机器的流量转发192.168.72.0/28
到在具有地址并以模式运行eth0
的同一台机器上运行的容器。172.7.0.4
bridge
我尝试过添加路由规则
ip route add 192.168.72.0/28 via 172.17.0.4
我可以看到接口处的流量eth0
,但在 Docker 容器的接口处看不到流量。
我也尝试过DNAT,但运气不佳
iptables -t nat -I PREROUTING -i eth0 -s 192.168.72.0/28 -j DNAT --to-destination 172.17.0.4
我缺少什么?
问题是容器正在网桥中运行,而我确实有一个网络接口,它是一个具有非标准名称的 veth。在这种情况下通常采用哪种方法?
答案1
/etc/iproute2/rf_tables
在追加下创建新的路由表2 connect
然后运行命令:
ip rule add from 192.168.72.0/28 table connect
ip route add default via 172.17.0.4 table connect
其中172.17.0.4
是 Docker 容器的 IP。在你的情况下可能会有所不同。
那么是时候遵守iptables
规则了
iptables -A INPUT -s 192.168.72.0/28 -j ACCEPT
iptables -A FORWARD -d 192.168.72.0/28 -j ACCEPT
iptables -A FORWARD -s 192.168.72.0/28 -j ACCEPT
iptables -A OUTPUT -d 192.168.72.0/28 -j ACCEPT
此时所有流量都将通过 Docker 容器并且可以正常工作。