从外部(宿主机或者其他容器)访问docker容器的VPN

从外部(宿主机或者其他容器)访问docker容器的VPN

我在同一台机器上有几个docker容器,其中一个正在运行OpenVPN服务器,因此它有网络接口tun0192.168.255.1)。这个虚拟专用网络有一个192.168.255.2远程客户端。
我需要能够从另一个docker容器或主机与该远程客户端通信,就好像它们在同一个本地网络中一样。我在主机上添加了路由:

# ip route add 192.168.255.0/24 dev docker0 

现在我可以 ping 通192.168.255.1(VPN 服务器)但无法访问客户端:

# ping 192.168.255.2
PING 192.168.255.2 (192.168.255.2) 56(84) bytes of data.
From 172.17.0.1 icmp_seq=1 Destination Host Unreachable
From 172.17.0.1 icmp_seq=2 Destination Host Unreachable
From 172.17.0.1 icmp_seq=3 Destination Host Unreachable

我尝试了 TAP 和 TUN OpenVPN 设备模式、默认和子网拓扑 - 没有帮助

答案1

你应该看看我在这里的回答:https://serverfault.com/a/879809/67419这正是我所配置的,只是我没有使用默认的 Docker 桥,而是创建了一个专用的桥。但它与默认桥的工作方式类似。

您确实必须添加正确的路由(正如您所做的那样),但您至少还需要允许在您的 iptables 上转发,类似于sudo iptables -A FORWARD -i tun+ -j ACCEPT

确保client-to-client至少topology subnet在您的 OpenVPN 服务器配置中拥有。

所有细节都在我的另一个回答里。

相关内容