【发布时间】:2016-05-01 04:27:06
【问题描述】:
我在 OS X 上运行 docker-machine,它在我的家庭 wifi 网络 (wifi-one) 上运行良好。
在另一个 wifi 网络 (wifi-two) 上,我无法通过 docker-machine 或 ping 访问默认机器。我尝试删除所有 docker 和 virtual box 软件和缓存并在连接 wifi-2 时重新安装,但无济于事。
docker-machine 在 virtual box 中使用了一个小型 vm,它使用主机专用的 vbox 网络 (vboxnet0) 在主机和 vm 之间进行通信。
在 wifi-one 上,我可以 ping 通 vboxnet0 (192.168.99.1) 的网关,也可以 ping 虚拟机 (192.168.99.100)。在路由表中,我可以使用正确的接口查看到 vm 的路由:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default dlinkrouter UGSc 60 2 en0
...
dlinkrouter c0:a0:bb:xx:xx:xx UHLWIir 66 155 en0 1180
192.168.99 link#10 UC 2 0 vboxnet
192.168.99.100 8:0:27:db:16:21 UHLWIi 2 42 vboxnet 1109
...
在 wifi-2 上,我可以 ping vboxnet0 网关,但不能 ping 虚拟机。 Ping 报告请求超时,但 docker-machine 报告“没有到主机的路由”。路由表在连接到 wifi-2 时,会在 wifi 接口 (en0) 上显示到 vboxnet0 主机专用网络的路由,而不是 vboxnet0 接口。同样好奇的是默认路由是到 vboxnet0 网关的路由,但路由表中没有 wifi 路由器的迹象。尽管如此,互联网连接在 wifi-two 上仍能正常工作。
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.99.1 UGSc 46 0 en0
...
192.168.99 link#4 UCS 9 0 en0
192.168.99.1/32 link#4 UCS 2 0 en0
192.168.99.1 dc:9f:db:2b:89:39 UHLWIir 46 61 en0 1197
192.168.99.100 link#4 UHLWIi 1 3 en0
所以,我真的不知道问题出在哪里 - 路由器、mac os、虚拟机或 docker-machine。我怀疑路由器的配置有些有趣,但我不明白为什么 wifi 路由器会与 virtualbox host-only 网络的路由有任何关系。
编辑:通过 en0 手动删除到 192.168.99 的 en0 路由并运行 sudo route -nv add -net 192.168.99 -interface vboxnet0 似乎确实可以在 wifi-2 上解决此问题。
但我想了解为什么会发生这种情况 - 为什么当我加入 wifi-two 时没有自动到 vboxnet0 的路由,我想找到一个比在 wifi 上运行 route add 更好的解决方案-两个。
【问题讨论】:
标签: networking docker routing virtualbox docker-machine