【发布时间】:2017-09-15 13:12:43
【问题描述】:
我想让 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 是有问题的 LAN。
由于路由表,我们可以从主机 ping Docker 创建的每台机器。
在windows box上设置静态路由
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
【问题讨论】:
-
这个问题看起来更适合Server Fault
标签: docker networking