Windows7下Docker Toolbox连接Cisco VPN时运行失败的解决办法咨询
我之前也踩过一模一样的坑!Windows 7上用Docker Toolbox搭配Cisco VPN确实会出现这种网络冲突,核心原因是VPN会强行修改系统的路由规则,要么把Docker虚拟机的流量给“截胡”了,要么直接和Docker默认的子网段产生冲突。下面是几个亲测有效的解决办法,按从易到难的顺序来:
解决方法1:调整Docker虚拟机的路由优先级(最常用)
Cisco VPN添加的路由条目优先级通常比Docker的高,导致容器的网络请求走不通。可以手动修改虚拟机的路由表:
- 打开Docker Quickstart Terminal,进入你的Docker虚拟机(默认名字是
default,如果你的不一样就替换成对应名称):docker-machine ssh default - 查看当前路由表,找到Docker虚拟机的网关(一般是
192.168.99.1)和VPN对应的内网网关:route -n - 把Docker子网的路由优先级设为最高,比如Docker默认子网是
192.168.99.0/24,执行:sudo route add -net 192.168.99.0 netmask 255.255.255.0 gw 192.168.99.1 metric 1 - 退出虚拟机并重启Docker服务:
exit docker-machine restart default
解决方法2:开启VPN的拆分隧道(需要权限)
如果公司IT允许的话,让管理员给你的Cisco VPN开启拆分隧道功能。这个功能会让VPN只接管公司内网的流量,Docker本地子网的流量还是走原来的网络,从根源上避免冲突:
- 在Cisco AnyConnect客户端里,进入
Preferences->Network Access Manager,设置只对公司内网的IP段启用VPN,其他流量不经过VPN通道。如果自己没有权限修改,直接找IT部门帮忙配置就行。
解决方法3:修改Docker虚拟机的子网段
如果VPN的子网刚好和Docker默认的192.168.99.0/24重合了,就换个不冲突的子网:
- 先关掉Docker虚拟机:
docker-machine stop default - 打开VirtualBox,找到你的Docker虚拟机(一般叫
default),右键选Settings->Network - 切换到
Adapter 1,选择Host-Only Adapter,然后手动设置虚拟机IP为其他子网,比如192.168.100.100,子网掩码255.255.255.0 - 启动虚拟机并重新加载Docker环境变量:
docker-machine start default eval $(docker-machine env default)
解决方法4:在Windows主机手动添加路由
如果上面的方法都没效果,直接在Windows主机上强制指定Docker子网的流量走VirtualBox虚拟网卡:
- 以管理员身份打开Windows命令提示符
- 找到VirtualBox虚拟网卡的IP(一般是
192.168.99.1,可以在“网络连接”里找到VirtualBox Host-Only Network查看) - 添加路由规则:
route add 192.168.99.0 mask 255.255.255.0 192.168.99.1 metric 1 - 注意这个命令每次重启VPN后都要重新执行,嫌麻烦的话可以写个批处理脚本一键运行。
内容的提问来源于stack exchange,提问作者Oscar Foley
相关产品推荐
相关产品推荐

