Docker容器无法通过Cisco VPN访问Internet

fykwrbwg  于 2023-05-28  发布在  Docker
关注(0)|答案(2)|浏览(209)

我的设置:

  • Linux Mint 20
  • Docker版本19.03.12
  • Cisco AnyConnect 4.3.05017

我的问题:

当我连接到公司的VPN时,我无法通过我的Docker容器访问互联网。例如,运行docker run -it ubuntu apt update将失败,并显示消息“Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
解析“www.example.com”时暂时失败archive.ubuntu.com
断开VPN连接并不能***解决问题。(参见解决方法#2)
我有两个解决方法:
1.使用docker run -it --net=host ubuntu apt update运行docker可以很好地工作,但是,这对于我公司的脚本和构建系统来说不是一个合适的解决方案。它将用于临时工作。
1.断开与VPN的连接并运行以下脚本(从https://github.com/moby/moby/issues/36151):

# /bin/bash
docker system prune -a
systemctl stop docker
iptables -F
ip link set docker0 down
brctl delbr docker0
systemctl start docker

我将允许它再次工作-但我无法访问公司的内部服务器,这也是构建我们的软件所需要的。
我试过这些东西:

kfgdxczn

kfgdxczn1#

为此,您需要在Cisco AnyConnect中启用“使用VPN时允许本地(LAN)访问(如果已配置)”设置。
cisco-anyconnect-preferences-window
然而,有些公司不允许这样做,因为安全策略。

6tdlim6h

6tdlim6h2#

在我的机器(Ubuntu)与思科AnyConnect和Docker,我发现VPN不正确的工作与iptables,所以我的桥接网络不工作。
解决方法是添加以下规则:

iptables -I FORWARD -i docker0 -j ACCEPT
 iptables -I FORWARD -o docker0 -j ACCEPT

docker 0是默认的docker网桥网络的名称,对于自定义网络,您需要将“docker 0”替换为网络的接口名称。通常这个名字以“br-”开头。

相关问题