网络 – docker-machine:在某些wifi网络上没有主机到默认docker机器(使用仅限主机的vbox网络)的路由

我在OS X上运行docker-machine,它在我的家庭wifi网络(wifi-one)上工作得很好.

在另一个wifi网络(wifi-two)上,我无法通过docker-machine或ping来访问默认机器.我已经尝试删除所有的docker和虚拟盒软件和缓存,并在连接wifi-two时重新安装,但无济于事.

docker-machine在虚拟盒中使用一个小vm,它使用仅主机的vbox网络(vboxnet0)在主机和vm之间进行通信.

在wifi-one上,我可以将网关ping到vboxnet0(192.168.99.1),我可以ping vm(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-two上,我可以ping vboxnet0网关,但不能ping vm. Ping报告请求超时,但是docker-machine报告“没有到主机的路由”.路由表连接到wifi-two时,显示到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路由器与到虚拟机主机专用网络的路由有任何关系.

编辑:通过en0手动删除到192.168.99的en0路由并运行sudo route -nv add -net 192.168.99 -interface vboxnet0似乎在wifi-two上解决了这个问题.

但我想了解为什么会发生这种情况 – 为什么当我加入wifi-two时没有自动路由到vboxnet0,我想找到一个更好的解决方案,而不是在我使用wifi-two时运行路由添加.

最佳答案
我想到了.这有点愚蠢:

wifitwo的子网是192.168.99.相同的子网docker用于为默认VM创建的仅主机网络.所以冲突导致各种神秘的错误.

转载注明原文:网络 – docker-machine:在某些wifi网络上没有主机到默认docker机器(使用仅限主机的vbox网络)的路由 - 代码日志