通过主机上的 cisco VPN 连接路由 docker 网络流量

通过主机上的 cisco VPN 连接路由 docker 网络流量

我有一个桥接 docker 网络,并希望容器能够通过 CiscoAnyConnect VPN 访问我公司 LAN 上的设备。(即,我希望将流量从路由docker0cscotun0

但是,我无法让它工作。

这是我的桥接网络:

[
    {
        "Name": "bridge",
        "Id": "5ec3c7c84c649c1126370d95cfaf7528e54c57a46e6070de02c14f55d7b5a218",
        "Created": "2024-04-03T09:25:23.699641867+02:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

我已开启 IP 转发:

net.ipv4.ip_forward = 1

我可以 ping 通外面的世界:

root@36610d5128e6:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=6.50 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=10.7 ms

但不是我的 VPN 上的服务器:

root@36610d5128e6:/# ping 192.168.119.179
PING 192.168.119.179 (192.168.119.179) 56(84) bytes of data.

路线:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.214.1     0.0.0.0         UG    600    0        0 wlp4s0
10.30.214.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp4s0
10.30.214.1     0.0.0.0         255.255.255.255 UH    0      0        0 wlp4s0
10.101.7.0      0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
100.79.0.0      0.0.0.0         255.255.0.0     U     0      0        0 cscotun0
100.79.119.2    0.0.0.0         255.255.255.255 UH    0      0        0 cscotun0
100.79.119.3    0.0.0.0         255.255.255.255 UH    0      0        0 cscotun0
100.80.0.0      0.0.0.0         255.255.0.0     U     0      0        0 cscotun0
155.190.67.21   10.30.214.1     255.255.255.255 UGH   0      0        0 wlp4s0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 br-2b540c1d9d5b
172.16.46.0     0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.119.0   0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
192.168.124.0   0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
192.168.192.0   0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
192.168.219.0   0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
208.67.220.220  10.30.214.1     255.255.255.255 UGH   0      0        0 wlp4s0
208.67.222.222  10.30.214.1     255.255.255.255 UGH   0      0        0 wlp4s0

我尝试了这个:

sudo iptables -t nat -A POSTROUTING -o cscotun0 -j MASQUERADE
sudo iptables -A FORWARD -i cscotun0 -o docker0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i docker0 -o cscotun0 -j ACCEPT

但这没有帮助。我是新手,iptables所以我可能会遗漏一些东西,例如冲突的配置。显示此输出的相关命令是什么?

关于这种方法有什么提示吗?

答案1

查看帖子 通过 VPN 连接时无法访问 Docker 容器

我曾遇到过这个问题,并尝试了互联网上所有可能的解决方案,但都不起作用。看起来 Cisco Anyconnect vpn 对系统的路由拥有独占控制权,所做的任何更改都没有效果。

以下方法对我有用。不要使用 Cisco Anyconnect,而是使用 OpenConnect VPN。两者使用相同的协议。下载:

sudo apt install openconnect network-manager-openconnect network-manager-openconnect-gnome

重新启动您的电脑,然后转到 VPN 设置 -> 多协议 VPN 客户端(打开连接)并根据您的组织要求提供设置。

相关内容