gpt4 book ai didi

windows - Docker Desktop Windows 和 VPN - 容器内没有网络连接

转载 作者:行者123 更新时间:2023-12-03 17:26:02 31 4
gpt4 key购买 nike

我正在尝试在连接到 VPN 时在 Windows 上使用 Docker。

当 VPN 未连接时,一切正常。

但是当我使用 Cisco AnyConnect 客户端连接到我们的公司 VPN 时,docker 容器内的网络不再工作:

docker run alpine ping www.google.com
ping: bad address 'www.google.com'

docker run alpine ping -c 5 216.58.204.36
PING 216.58.204.36 (216.58.204.36): 56 data bytes
--- 216.58.204.36 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss


如何解决此问题并使其正常工作?

我的设置是:
  • Windows 10 版本 1809(操作系统内部版本 17763.1098)
  • Docker 桌面社区 2.2.0.4 (43472):引擎 19.03.8、Compose 1.25.4、Kubernetes 1.15.5、Notary 0.6.1、Credential Helper 0.6.3
  • Docker 处于 Windows 容器模式,启用了实验功能(需要同时运行 windows 和 linux 镜像)
  • 最佳答案

    实际上我是使用 Docker Desktop 和 Hyper-V 虚拟机完成的。使用 OpenConnect,但我认为大多数 VPN 客户端只需稍作修改即可完成。
    完整的说明在这里 Docker Desktop, Hyper-V and VPN使用 Docker 容器、Windows 虚拟机和 Linux 虚拟机的设置

  • 我创建了一个新的内部虚拟交换机(我们称之为“内部”)并为其分配了一个静态 IP 地址(比如说 192.168.4.2)
  • 我用 Ubuntu 服务器和 OpenConnect 创建了一个新的虚拟机,连接到默认的虚拟交换机和“内部”
  • 在 OpenConnect 虚拟机上
  • 分配给“内部”一个固定 ip (192.168.4.3)
  • 添加了一个新的 tun 接口(interface)“persistent”,告诉 openconnect 使用该 tun(添加“-i tun0”参数作为 openconnect 启动参数)
    sudo ip tuntap 添加名称 tun0 模式 tun
  • 安装了persist-iptables
  • 强制ip转发
    sudo echo "net.ipv4.ip_forward=1">>/etc/sysctl.conf && sysctl -p
  • 设置路由
    sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
    sudo iptables -A FORWARD -o tun0 -j ACCEPT
    sudo iptables -A FORWARD -i tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -A INPUT -i tun0 -j ACCEPT
  • 连接 vpn 后,我将 dns 服务器永久添加到 resolve.conf
  • 并检索 VPN 的地址类别(如 10...* )

  • 在 Docker 容器上
  • 在 Dockerfile 上添加了基本路由
    运行路由添加 -net 10.0.0.0 网络掩码 255.0.0.0 gw 1​​92.168.4.3
  • 然后运行 ​​docker 文件,我添加了 dns,赋予 net admin 和 sys 模块权限
    --dns 8.8.8.8 --dns 10.1.77.21 --dns 10.4.52.21 --dns-search test.dns.it
    --cap-add=NET_ADMIN --cap-add=SYS_MODULE

  • 关于windows - Docker Desktop Windows 和 VPN - 容器内没有网络连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60869183/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com