Docker 连接到 VPN 时无法访问容器

Docker containers not accessible while connected on VPN

我在 ubuntu 18.04 中使用 docker 19.03.5。通常,我可以访问所有容器。一切正常,但当我将我的机器连接到 VPN 客户端(Cisco anyconnect)时,真正的问题出现了。我一连接到 VPN 就无法访问任何容器。有什么方法可以让我访问 docker 甚至连接到 VPN 的容器?

此问题与 Docker 守护程序/容器设置无关。 VPN 服务器配置是罪魁祸首(禁用 split-include 或禁止本地网络访问)。

因此,您解决此问题的选项有限:

  • 请求 VPN 服务器管理员允许 split-include(mikrotik 术语)
  • 检查 anyconnect 客户端设置是否存在“通过 VPN 路由所有流量”之类的设置并将其禁用
  • 在您的机器上创建自定义静态路由以通过 Anyconect 客户端创建的接口访问特定 IP 范围(VPN 服务器后面的服务器)

我遇到过这个问题并尝试了互联网上所有可能的解决方案,但没有任何效果。看起来 Cisco Anyconnect vpn 对系统的路由进行了独占控制,所做的任何更改都没有显示任何效果。

以下对我有用。使用 OpenConnect VPN 而不是 Cisco Anyconnect。两者都使用相同的协议。下载:

sudo apt install openconnect network-manager-openconnect network-manager-openconnect-gnome

重新启动您的 PC,然后转到 VPN 设置 -> 多协议 VPN 客户端(打开连接)并根据您的组织要求提供设置。

那是因为 VPN 配置为使用全隧道。网络管理员应配置拆分隧道配置文件。

完全调整:

[PC] ---> [VPN] ---> { all networks

拆分隧道:

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

您可以尝试的另一件事是编辑路线。 你可以添加一个路由指向你的容器 IP 并指定好的网络适配器,然后你必须在这个路由上设置比 VPN 默认网关更高的优先级。