我想让docker主机成为一个网关来路由172.0.0.0范围内的所有流量,因此所有机器都可以通过本地局域网上的静态路由访问。
例如,请查看下表。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 bond0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 bond0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-8cb984474cf3
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-08751d4f00ac
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-205529b1f9cc
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-f199a191f679
172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-67ac401705aa
172.23.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-ec7ad4f839dd
172.24.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-f7af361c29fb
172.25.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker_gwbridge
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Bond0是有问题的局域网。
从主机我们可以ping由Docker创建的每台机器,因为路由表。
在Windows框route add 172.0.0.0 MASK 255.0.0.0 192.168.2.3
在Linux Docker主机上启用了已检查转发
在bond0接口上启用伪装iptables -t nat -A POSTROUTING -o bond0 -j MASQUERADE
我选择了一个示例接口br-08751d4f00ac
,即172.19.0.0
设置转发
sudo iptables -t nat -A POSTROUTING -o bond0 -j MASQUERADE
sudo iptables -A FORWARD -i bond0 -o br-08751d4f00ac -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i br-08751d4f00ac -o bond0 -j ACCEPT
但是,我仍然无法通过与bond0相同的网络上的Windows机器进行ping操作。
Tracing route to 172.19.0.2 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 192.168.2.3
2
答案 0 :(得分:0)
好的,我正在思考它!
我用
解决了这个问题property = 10
#property = 10
#this is a test for #property
#this is a test for property
解决了问题 - 我现在可以从局域网访问Docker容器内分配的所有IP地址了:)