为什么当容器连接到 VPN 时,X11 会在 Docker 容器内部中断?

为什么当容器连接到 VPN 时,X11 会在 Docker 容器内部中断?

我的主机是 Windows 10。我的目标是制作连接到容器内部 VPN 的 Docker 容器。我这样做是为了不必将整个主机都放在 VPN 上。

我使用 ubuntu docker 容器通过 openconnect 连接到 anyconnect 协议;我有两个不同的容器连接到两个不同组织的 VPN。

两个容器都可以使用 X11 连接到我的 vcxsrv,例如我可以看到 xeyes 甚至 vscode。但是,当我将其连接到 VPN 后,只有一个可以工作。

容器仍然可以连接到网站、ping google 等。但我尝试将 DISPLAY 变量设置为新的 IPv4 私有 VPN 地址,但没有成功。xeyes 没有出现。xeyes 一直运行直到我按 Ctrl+C,但 xeyes 没有出现在 vcxsrv 上

如何让 X11 在连接到 VPN 时在 docker 容器内工作?我的主机未连接到 VPN。只有容器内有 VPN。

答案1

vpn-slice解决方案是在连接VPN时在docker容器内部使用:

openconnect -b -v --protocol=anyconnect \
    # some cert files, key files, etc... whatever you normally use
    vpn.myorganization.com \
    -s 'vpn-slice --prevent-idle-timeout mymachine.myorganization.com'

因此,只有发往的请求和连接mymachine.myorganization.com才会通过 VPN。要使用此功能,必须使用 pip 安装 vpn-slice

相关内容