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

docker-machine: No route to host to default docker machine (using host-only vbox network) on some wifi networks

我是 运行 docker-machine OS X,它在我的家庭 wifi 网络 (wifi-one) 上运行良好。

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

docker-machine 在使用 host-only vbox 网络(vboxnet0)的虚拟盒子中使用小型 vm 在 hos 之间进行通信t 和 vm.

在 wifi-one 上,我可以 ping 到 vboxnet0 (192.168.99.1) 的网关,也可以 ping 虚拟机 (192.168.99.100)。在路由 table 中,我可以使用正确的接口看到到虚拟机的路由:

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 通虚拟机。 Ping 报告请求超时,但 docker-machine 报告 "no route to host"。路由 table,当连接到 wifi-two 时,在 wifi 接口(en0)上显示到 vboxnet0 host-only 网络的路由,而不是 vboxnet0 接口。同样好奇的是默认路由是到vboxnet0网关的路由,但是路由中没有wifi路由器的迹象table。尽管如此,互联网连接在 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 和 运行 sudo route -nv add -net 192.168.99 -interface vboxnet0 手动删除到 192.168.99 的 en0 路由似乎在 wifi-two 上解决了这个问题。

但我想了解为什么会发生这种情况 - 为什么当我加入 wifi-two 时没有自动路由到 vboxnet0,我想找到比 运行 [=15 更好的解决方案=] 当我使用 wifi-two 时。

我明白了。这有点愚蠢:

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