主机连接到 IPSec 隧道,docker 无法与 VPN 主机通信

主机连接到 IPSec 隧道,docker 无法与 VPN 主机通信

主机可以 ping 通 vpn 中的主机,但 docker 容器无法 ping 通 vpn 中的任何主机。

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    600    0        0 wlan0
3.210.122.60    192.168.100.1   255.255.255.255 UGH   0      0        0 wlan0
172.17.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.18.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.19.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.20.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.21.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.22.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.23.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.24.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.25.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.26.0.0      192.168.100.86  255.255.0.0     UG    0      0        0 wlan0
172.41.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.100.0   0.0.0.0         255.255.255.0   U     600    0        0 wlan0

tcdump 显示 ping 到达 VPN,并返回主机,但没有返回容器。我认为主机不知道如何处理从 VPN 收到的数据包。

我尝试了一些 iptables 规则,但无济于事。除了 tcpdump 之外,无法进行其他调试...

$ docker --version
Docker version 18.03.1-ce, build 9ee9f40

$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

答案1

更改主机上的网络(包括连接到 VPN)后,尝试重新启动 docker 守护进程 ( systemctl restart docker)。守护进程在首次启动时会配置各种 iptables 规则,当新网络连接到主机时,这些规则可能无法正常工作。

相关内容