dab*_*sal 5 vpn docker docker-toolbox
我正在Windows上使用Docker工具箱进行Docker相关的开发。当我在家庭或办公室网络中时,此方法工作正常,但在使用Anyconnect VPN连接至办公室网络时,此方法不起作用。请让我知道是否存在可以更改以使其正常工作的网络设置。
我真的很喜欢 OpenConnect(它比 network-manager-openconnect 支持更多的配置选项)。即使是需要 csd-wrapper 的可怕安装通常也能很好地工作。
AnyConnect 以一种奇怪的方式破坏了 docker 网络,即使在您退出 VPN 后它们也仍然处于破坏状态(即使您之后停止了 vpnagentd)。
解决方法是停止 docker,清除其所有网络和网桥,然后才启动 AnyConnect VPN。您可以在 VPN 会话结束后启动 docker,它将重新创建所有必要的内容。
我创建了一个脚本来解决这个不幸的行为,它正是这样做的:
#!/bin/sh
# usage:
# vpn.sh [start]
# vpn.sh stop
if [ "$1" = "stop" ]; then
/opt/cisco/anyconnect/vpn/vpn disconnect
sudo systemctl stop vpnagentd
echo "Cisco VPN stopped"
echo "Starting docker"
sudo systemctl start docker
else
echo "Stopping docker"
sudo systemctl stop docker
bridges=$(sudo brctl show | cut -f1 | tail -n +2)
for b in $bridges; do
sudo nmcli connection delete $b
sudo ip link set dev $b down
sudo brctl delbr $b
done
echo "Starting Cisco VPN"
sudo systemctl start vpnagentd
/opt/cisco/anyconnect/vpn/vpn connect 'VPN-NAME'
fi
Run Code Online (Sandbox Code Playgroud)
注意:VPN 管理员可以阻止您使用 OpenConnect 并强制您仅使用 Cisco AnyConnect,但如果LocalLanAccess在您的 VPN 配置文件中启用,您可能会获得更好的体验。
以下内容对我有用。
尝试使用 OpenConnect 而不是 Anyconnect:
sudo apt install openconnect
sudo apt install network-manager-openconnect
Run Code Online (Sandbox Code Playgroud)
然后(至少对于 Ubuntu 16)注释掉该行dns=dnsmasq,所以它变成这样:
$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
Run Code Online (Sandbox Code Playgroud)
然后使用 NetworkManager 将连接添加到您的 VPN 提供商并进行连接。(NetworkManager -> 编辑连接 -> 添加。然后选择连接类型为 VPN -> Cisco Anyconnect)
重新启动并重新连接,现在 docker 容器应该可以访问互联网了。
| 归档时间: |
|
| 查看次数: |
3202 次 |
| 最近记录: |