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

ada*_*dev 5 networking routing virtualbox docker docker-machine

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

在另一个wifi网络(WIFI-二),我无法访问默认的机器,无论是通过搬运工机或坪.我已经尝试删除所有的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
...
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

所以,我真的不知道问题在哪里 - 路由器,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,我想找到一个更好的解决方案,而不是route add在我使用wifi-two时运行.

ada*_*dev 4

我想到了。这有点愚蠢:

wifitwo的子网是192.168.99。docker 用于为默认虚拟机创建的仅主机网络的同一子网。因此,冲突导致了各种神秘的错误。