openvpn访问客户端后面的局域网NAT和其他VPN客户端的dynamicIP

我已经阅读并尝试过很多指南,包括关于这方面的官方指南 ,但是我仍然无法得到这个工作。 这是设置:

(client1 LAN: 192.168.10.0/24 (OpenVPN client: client1, 192.168.10.101) | | v (NAT router, *dynamic* internet IP: 178.1.2.3) | | (...internet...) | | v (OpenVPN server, *static* IP: 1.2.3.4) <--- (...internet...) <--- (OpenVPN client, *dynamic* internet IP: client2, 88.1.2.3) 

我想要的是client2能够访问所有client1的networking。 正如我在下面的EDIT#2中所说的,只有通过在局域网中的所有机器上设置静态路由才能正常工作(出于某种原因,NAT路由器上的静态路由不起作用,请参阅下面的编辑#2 )。

所有机器运行Ubuntu 16.04 OpenVPN 2.3.10。 NAT路由器是一个TP-Link MR200如果重要,client1运行一个KVM虚拟机服务器,OpenVPN服务器运行一个docker容器。

隧道在服务器client1和client2之间正常工作。 客户端2也可以ping 192.168.10.101,但不能ping 192.168.10.211,例如。 我有专门的证书,为每个客户端工作正常,我启用IP在OpenVpn服务器和客户端1转发。

这是服务器的configuration:

 # cat /etc/openvpn/graphyc.conf server 10.8.0.0 255.255.255.0 verb 3 key server-key.pem ca ca.pem cert server-cert.pem dh dh.pem keepalive 10 120 persist-key persist-tun comp-lzo user nobody group nogroup # dir "clients" is chown'ed to nobody:nogroup client-config-dir clients client-to-client push "route 192.168.10.0 255.255.255.0" route 192.168.10.0 255.255.255.0 proto udp port 1194 dev tun 

服务器上的/etc/openvpn/client1的内容(静态vpn租约)

 # cat /etc/openvpn/clients/client1 ifconfig-push 10.8.0.101 10.8.0.5 iroute 192.168.10.0 255.255.255.0 

client1configuration的内容

 # cat /etc/openvpn/client1.conf client remote 1.2.3.4 1194 udp nobind dev tun comp-lzo yes verb 3 explicit-exit-notify 5 key /etc/openvpn/client1-key.pem cert /etc/openvpn/client1-cert.pem ca /etc/openvpn/ca.pem 

client2configuration的内容

 # cat /etc/openvpn/client2.conf client remote 1.2.3.4 1194 udp nobind dev tun comp-lzo yes verb 3 explicit-exit-notify 5 key /etc/openvpn/client2-key.pem cert /etc/openvpn/client2-cert.pem ca /etc/openvpn/ca.pem 

我可以ping从客户端192.168.10.101,但不能ping 192.168.10.211例如。 当尝试后者时,服务器看到ping并将其路由到客户端路由器178.1.2.3的互联网IP:

 Sat Nov 18 11:48:29 2017 client2/88.1.2.3:48069 MULTI: Learn: 192.168.10.211 -> client1/178.1.2.3:52928 

官方指南说,我还应该在NAT路由器上添加一个路由。 具体来说它说:“ 如果运行OpenVPN的客户端机器不是客户端LAN的网关,则客户端LAN的网关必须有一个路由,将通过VPN可达的所有子网指向OpenVPN客户端机器

但是,我现在无法做到这一点,因为我无法访问路由器的Web界面,但我也不确定在NAT路由器上添加什么路由(我不知道这是必要的,因为我不'不需要访问服务器后面的局域网)。

我会很感激一些具体的步骤,我仍然需要做(或纠正)。

编辑:**

以下是连接到OpenVPN服务器后,服务器client1和client2的路由表。

服务器:

 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 1.1.1.1 0.0.0.0 UG 0 0 0 eth0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun 10.8.0.2 * 255.255.255.255 UH 0 0 0 tun localnet * 255.255.255.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 1000 0 0 eth0 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0 192.168.10.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun 

客户端1:

 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.10.1 0.0.0.0 UG 0 0 0 eno1 10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun 10.8.0.5 * 255.255.255.255 UH 0 0 0 tun link-local * 255.255.0.0 U 1000 0 0 eno1 192.168.10.0 * 255.255.255.0 U 0 0 0 eno1 192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 

客户机程序:

 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 178.1.1.1 0.0.0.0 UG 0 0 0 eth0 10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun 10.8.0.5 * 255.255.255.255 UH 0 0 0 tun 88.1.2.0 * 255.255.255.0 U 0 0 0 eth0 192.168.10.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun 

编辑#2:

好的,对我来说这很奇怪:我在NAT路由器上添加了一条静态路由,通过192.168.10.101路由所有发往10.8.0.0/24的数据包。 然后我试图从客户端2 ping 192.168.10.211,它没有工作。 然后我login到192.168.10.211,在10.8.0.6上Ping了client2,它说:

 # ping 10.8.0.6 PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data. 64 bytes from 10.8.0.6: icmp_seq=1 ttl=63 time=83.5 ms From 192.168.10.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.10.101) 64 bytes from 10.8.0.6: icmp_seq=2 ttl=63 time=75.4 ms 64 bytes from 10.8.0.6: icmp_seq=3 ttl=63 time=79.9 ms 

哇! 坚持…然后当我回到客户端2并ping了192.168.10.211,它现在工作:

 # ping 192.168.10.201 PING 192.168.10.201 (192.168.10.201) 56(84) bytes of data. 64 bytes from 192.168.10.201: icmp_seq=1 ttl=63 time=78.6 ms 64 bytes from 192.168.10.201: icmp_seq=2 ttl=63 time=77.5 ms 64 bytes from 192.168.10.201: icmp_seq=3 ttl=63 time=75.1 ms 

它看起来像NAT路由器没有路由只是ping的答复,可能是因为它从来没有看到转发ping数据包 – 我试图看看它是否有一个状态的防火墙,可以被禁用,但事实并非如此。

然后,我去了另一台机器192.168.10.207,并通过192.168.10.101(覆盖NAT路由器)为其自己创build了一个专门用于10.8.0.0/24的静态路由:

 route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.10.101 

然后ping从客户端192.168.10.207工作正常。

是不是有办法避免在客户端1局域网中的每台本地机器上创build静态规则? NAT路由器上的规则是否正常工作,但由于某种原因,它不?

不要忘记将客户端1configuration为网关(数据包转发器)。 你可以用来validation

 # sysctl net.ipv4.ip_forward 

它的值应该是1.如果没有,请configuration它

 # sysctl -w net.ipv4.ip_forward=1 

你也可以访问这个值来检查/更改/ proc / sys / net / ipv4 / ip_forward