Docker容器在连接VPN时无法访问。

3

我在我的Ubuntu 18.04中使用Docker 19.03.5。通常,我可以访问所有容器。但当我连接到VPN客户端(Cisco AnyConnect)时,真正的问题就出现了。一旦连接到VPN,我就无法访问任何容器。是否有办法在连接到VPN的情况下仍然可以访问docker容器?


尝试删除 Docker 网络:docker network prune - Ashok
为Docker创建一个差异网络,请参见此处的33票答案:如何使OpenVPN与Docker一起工作 - Lawrence Cherone
我尝试通过删除Docker网络来解决问题,但没有成功。 - Abdullah Toufiq
3个回答

1
那是因为VPN配置了全隧道模式。网络管理员应该配置一个分隧道模式的档案。
全隧道模式:
[PC] ---> [VPN] ---> { all networks

分流:

[PC]  ------> [VPN] ---> [Configured networks]
      \-----> [Internet / other networks]

另外一件你可以尝试的事情是编辑路由。 你可以添加一个指向容器IP并指定正确网络适配器的路由,然后你需要将这个路由的优先级设置得比VPN默认网关高。


@abdullah-toufiq 如果我的回答有帮助到您,希望您能够点赞或将其标记为答案。如果我的回答并没有解决您的问题,也可以告诉我原因。 - vinalti
从思科AnyConnect VPN客户端切换到OpenConnect VPN客户端后,问题得到解决。 - Abdullah Toufiq

1
我曾经遇到这个问题,尝试了互联网上所有可能的解决方案,但都没有用。看起来Cisco Anyconnect vpn对系统的路由控制具有独占性,任何所做的更改都没有显示出任何效果。
以下方法适用于我。不要使用Cisco Anyconnect,而是使用OpenConnect VPN。两者使用相同的协议。下载方式如下:
sudo apt install openconnect network-manager-openconnect network-manager-openconnect-gnome

重新启动您的计算机,然后转到VPN设置 -> 多协议VPN客户端(Open Connect),并根据您的组织要求提供设置。

0

这个问题与Docker守护程序/容器设置无关。VPN服务器配置有问题(禁用了分割包含或禁止本地网络访问)。

因此,您有限的解决方案如下:

  • 请求VPN服务器管理员允许分割包含(mikrotik术语)
  • 检查AnyConnect客户端设置中是否有“通过VPN路由所有流量”的选项,并将其禁用
  • 在您的计算机上创建自定义静态路由,以通过AnyConnect客户端创建的接口访问特定IP范围(VPN服务器后面的服务器)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接