我有一台服务器和两个客户端的OpenVPNnetworking。 当我在C1上设置我的默认路由以通过S(其具有IP转发和NAT启用)时,一切按预期工作。 问题是,如果我将C1默认路由指向C2(也适当configuration为从VPN到Internet的NATstream量),则stream量会被S抢占并由其转发。 当我在C2的tcpdump,没有任何东西到达那里的迹象。 是否有可能在OpenVPN中将客户端设置为其他客户端的网关,或者如果客户端上的路由被指向其他客户端,是否是由服务器事件路由数据包的系统属性?
编辑:
方括号代表我的虚拟networking(它并不物理存在)。 C1 / C2 / S可以在networking内互相ping通没问题。 我想从C1到C2路由到互联网。 我可以从C1(也可能从C2)通过S路由到互联网,但通过C2路由不起作用,因为数据包转发由S而不是。 这似乎是OpenVPN服务器不想发送数据包,他们应该去的问题。
[C1-S(NAT)] - 互联网
互联网 - [(NAT)C2 /]
不知道你想描述的networking拓扑结构,完全回答这个问题是很困难的。 虽然我认为我可以说一般情况下可以做你所要求的。
考虑下面的情况:
C1 - R1 - (NAT) - Internet - (NAT) - R2 - C2
在这里,如果在R1和R2之间build立了(正确configuration的)OpenVPN隧道,则C1可以与C2通话,反之亦然。
这种情况更难以得到正确的答案:
C2 - R1 - (NAT) - 互联网 - (NAT) - R2 - C3 C1 / \ C4
C2和C3是OpenVPN端点,C1应该使用VPN去C4。 第一个障碍是获得在C2和C3之间build立的OpenVPN隧道,可能使用的端口分别从UDP 1190的R1&R2到C2&C3。
接下来是让C1使用C2来获取数据包到C4的方式。 这涉及在C1和C4上configuration路由表。 C1设置通往C4networking的路线通过VIA C2,C4设置通往C1networking的路线通过VIA C3。 这两个路线应该优先于默认值。 所以也许在C1上:{route add 192.168.3.0 gw 192.168.2.2}和C4:{route add 192.168.1.0 gw 192.168.3.2}。 假定C2和C3的地址分别为192.168.2.2和192.168.3.2,C1和C4分别与C2和C3在同一networking上。
希望这足以回答你的问题,并certificate在默认网关上configurationVPN要比在客户端上configurationVPN容易得多,但两者都有用例。
编辑:用这个拓扑和问题描述,我认为在C1和C2上有路由问题… C1的默认路由应该指向C2的VPN地址作为路由器。 这将迫使C1使用VPN来获取数据包到C2,然后C2决定如何处理它们。
在C2使用自己的互联网连接的情况下,正如你所示,C2的默认路由应该是自己的Internet连接。
如果C2实际上没有自己的Internetpath,而是经过S,那么S应该是C2的默认路由器。
我之前遇到过这个问题,我有一个vpn客户端工作,阻止我到达我家的局域网上的另一个设备。 我必须configuration到第二台机器的静态路由,因为VPN客户端将自动添加一个默认路由,并将所有stream量转发到服务器。
如果您可以通过服务器获取从C1到C2的stream量,则需要在server.conf中启用客户端到客户端指令,以便客户端可以通过VPN访问对方。 默认情况下,客户端将只能访问服务器。
在使用路由VPN(dev tun)时,在“在客户端包括多台机器”下检查http://openvpn.net/index.php/open-source/documentation/howto.html 。