问题描述
我的设置:
- Linux Mint 20
- Docker版本19.03.12
- Cisco AnyConnect 4.3.05017
我的问题:
当我连接到公司的VPN时,无法通过Docker容器访问Internet。
例如运行docker run -it ubuntu apt update
将失败,并显示以下消息
“ Err:1 http://archive.ubuntu.com/ubuntu焦点释放
解决“ archive.ubuntu.com”的临时失败”
- 使用
docker run -it --net=host ubuntu apt update
运行docker可以正常工作,但是,这对于我公司的脚本和构建系统来说不是一个合适的解决方法。它将用于临时工作。 - 断开与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
- 以及搜索“ docker容器,vpn背后没有互联网”的Google的前两页上的任何其他匹配内容
解决方法
为此,您需要在Cisco AnyConnect中启用设置“使用VPN时允许本地(LAN)访问(如果已配置)”。
cisco-anyconnect-preferences-window
但是,由于安全政策,一些公司不允许这样做。