为什么使用 vpn 时无法从 docker 容器内部通过 https 连接?

为什么使用 vpn 时无法从 docker 容器内部通过 https 连接?

我需要使用 VPN 来连接容器所需的一些资源。因此我使用集成打开连接Ubuntu 网络管理器中的客户端。当我连接到 VPN 时,从 Docker 容器内部,我

  • 可以访问正常的http网站
  • 只能通过我的 VPN 访问 http 网站
  • 无法通过 VPN 或互联网访问任何 https 站点(我甚至没有遇到超时)

从我的主机终端内部,我可以访问任何 http 和 https 站点。我使用 curl 进行了测试,因为我的 VPN 阻止了本地网络之外的 Ping。

当我断开与 VPN 的连接时,从我的 docker 容器内部

  • 可以访问正常的http网站
  • 无法访问任何仅可通过 VPN 访问的网站(显然)
  • 可以访问普通https网站

因此,我可以将问题缩小到依赖于我的 VPN 连接,但也仅发生在 Docker 容器内。

为什么会发生这种情况,我如何从 Docker 容器内部访问 VPN 中的 HTTPS 站点?

答案1

我在 Ubuntu 17.10 上遇到了同样的问题,并通过使用禁用 DTLS 的 openconnect 命令行实用程序而不是 Ubuntu 的 NetworkManager 连接到我的 VPN 解决了​​该问题。

openconnect VPNURL --user=USER --interface=tun0 --no-dtls

相关内容