我的设置:
- 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
我将允许它再次工作-但我无法访问公司的内部服务器,这也是构建我们的软件所需要的。
我试过这些东西:
- 添加DNS到daemon.json(My docker container has no internet)
- 修复resolv.conf(My docker container has no internet)
- https://superuser.com/questions/1130898/no-internet-connection-inside-docker-containers
- Docker container can only access internet with --net=host
- https://stackoverflow.com/a/35519951/9496422
- 和基本上任何其他命中的前两页谷歌搜索“码头集装箱没有互联网背后的VPN”
2条答案
按热度按时间kfgdxczn1#
为此,您需要在Cisco AnyConnect中启用“使用VPN时允许本地(LAN)访问(如果已配置)”设置。
cisco-anyconnect-preferences-window
然而,有些公司不允许这样做,因为安全策略。
6tdlim6h2#
在我的机器(Ubuntu)与思科AnyConnect和Docker,我发现VPN不正确的工作与iptables,所以我的桥接网络不工作。
解决方法是添加以下规则:
docker 0是默认的docker网桥网络的名称,对于自定义网络,您需要将“docker 0”替换为网络的接口名称。通常这个名字以“br-”开头。