我试图build立一个OpenVPN的“链”,类似于这里所描述的。 我有两个独立的networking,A和B.每个networking都有一个使用标准的“道路战士”或“客户端/服务器”方法的OpenVPN服务器。 客户端可以连接到任一个用于访问相应networking上的主机/服务。
但服务器A和B也相互连接。 每个networking上的服务器之间都有一个“站点到站点”的连接。
我试图完成的是能够连接到networkingA作为客户端,然后与networkingB上的主机连接。我使用tun /路由的所有VPN连接。 “链”看起来像这样:
[客户端] ---> [服务器A] ---> [服务器A] ---> [服务器B] ---> [服务器B] ---> [主机B]
(tun0)(tun0)(tun1)(tun0)(eth0)(eth0)
整个想法是,当来自tun0的客户端尝试连接时,服务器A应该通过在tun1上设置的“站点到站点”VPN来路由去往networkingB的stream量。
我简单地通过在服务器A上设置了两个连接configuration文件来完成此操作。一个configuration文件是在tun0上运行的标准服务器configuration,定义了虚拟客户端networking,IP地址池,推送路由等。另一个是与服务器B运行的客户端连接在tun1上。 启用ip_forwarding后,我只是简单地将一个“推送路线”添加到广告到networkingB的路由的客户端。
在服务器A上,当我查看tcpdump输出时,这似乎工作。 如果我作为客户端连接,然后pingnetworkingB上的主机,则可以看到服务器A上的stream量从tun0传递到tun1:
tcpdump -nSi tun1 icmp
奇怪的是,我没有看到服务器B通过隧道接收stream量。 就好像服务器A正在通过站点到站点的连接发送它,但服务器B完全忽略它。 当我查找服务器B上的stream量时,它根本不在那里。
服务器A – >主机B的ping工作正常。 但是从连接到服务器A到主机B的客户端ping不通。
我想知道如果服务器B是忽略stream量,因为源IP不匹配客户端IP池,它交给客户端? 有谁知道我是否需要在服务器B上做点什么才能看到stream量?
这是一个复杂的问题来解释,所以谢谢你,如果你坚持到目前为止。
我find了解决办法。 答案#1描述的方式不需要多个/冗余的VPN连接。 我也不认为它会做任何事情来解决我的问题,尽pipe我赞赏反馈。
这个问题是由于OpenVPN服务器只有在连接的客户端的隧道上接受IPstream量时,如果源IP地址与build立隧道时服务器分配给客户端的服务器匹配。 源自通过隧道的任何其他源IP地址的stream量将被服务器完全忽略。
看看下面的内容:
10.2.1.15 10.2.0.1/123.123.123.1 124.124.124.1/10.1.0.1 10.1.1.20
(eth0)(eth0 / eth1)(eth0 / eth1)(eth0)
———- ————- ———— ———-
| 主机A | ————- | 网关1 | —————————————— | 网关2 | ——– | 主机B |
– – – – – – – – – – – – {互联网} – – – – – – – – – – – – —-
VPN客户端VPN服务器
172.16.1.12 172.16.2.1
(tun0)(tun0)
因此,在本例中,“网关1”是VPN客户端build立到“网关2”的隧道作为VPN服务器。 我们想要完成的是主机A通过VPN与主机B通信的能力。 所以我们build立了一个标准的OpenVPN连接,Gateway 1作为Gateway 2服务器的客户端。 每个网关都有一个“公共”和“私人”的界面。 一个用于私人networking,一个用于公共互联网。 build立VPN连接时,每台服务器都使用一个附加的“tun0”接口。 作为VPN服务器的网关2接受来自网关1的连接,并为其分配IP 172.16.1.12。
问题是,如果源IP为172.16.1.12 ,网关2将只接受通过该VPN隧道的stream量。
当网关1想要连接到主机B时,这可以正常工作,但当主机A尝试连接到主机B时,这是一个问题。当主机A尝试连接时,网关1充当路由器,并通过VPN隧道正确地路由stream量到网关2(假设您的路由设置正确)。 如果在网关1的tun0设备上运行tcpdump,您甚至可以看到主机A通过隧道的stream量,发往另一个networking。 但是,网关2将源IP地址视为10.2.1.15 , 它与为连接分配的IP地址不匹配 ,并完全忽略它。
因此,解决scheme是configuration网关2通过VPN隧道接受来自10.2.0.0/16networking的stream量。 VPN服务器需要configurationiroute设置。 这个设置的过程和所有的configuration参数在官方的OpenVPN网站上有解释,所以我不会在这篇文章中重新解释它。
我build议你在阅读本文档时要特别注意,你需要在OpenVPNconfiguration中使用客户端configuration文件(CCD)来使用iroute 。 确保你仔细阅读了这部分文档。 当然,您还需要在所有网关上设置路由,以便他们知道如何通过VPN隧道路由stream量。 参考上面的图,你仍然需要像这样在网关2上添加一个路由:
路由add -net 10.2.0.0 netmask 255.255.0.0 gw 172.16.1.12 tun0
并在网关1上这样的:
路由add -net 10.1.0.0 netmask 255.255.0.0 gw 172.16.2.1 tun0
为了使主机B的stream量在尝试连接到主机A时正确路由VPN。
在我的情况下,网关1既是网关2的客户端 ,也是从互联网连接到需要访问主机A的其他客户端的服务器 。因此,我需要创build两个接口tun0和tun1,以便一个可以用于客户端连接到另一个networking,另一个可以用作连接到公路战士的服务器。我还需要添加额外的路由,以便我可以build立到网关1(服务器)从互联网上,我能够路由stream量到另一个networking上的主机B.
我希望这能帮助那些对此感到困惑的人。
我最近设置了这个。 我需要的是在openvpn.confs中添加正确的路由命令。
我的configuration比你的configuration还要复杂一些。 我有三个站点,恰好是EC2地区:us-east-1(VA),us-west-1(CA)和us-west-2(OR)。 每个都有自己的私有IP范围如下:
VA 10.1.0.0/16 CA 10.0.0.0/16 OR 10.10.0.0/16
configuration是OR <=> CA <=> VA,与CA形成一个中央“枢纽”。
configurationva到ca.conf
# Sample OpenVPN configuration file using a pre-shared static key # Port to use: 1194 is the official IANA port number port 1194 # Use a dynamic tun device. dev tun # Remote peer and network remote 54.241.174.228 route 10.0.0.0 255.255.0.0 route 10.10.0.0 255.255.0.0 # Configure local and remote VPN endpoints ifconfig 169.254.255.1 169.254.255.2 # The pre-shared static key secret ovpn.key # keepalive keepalive 10 120
configurationca-to-va.conf
# Sample OpenVPN configuration file using a pre-shared static key # Port to use: 1194 is the official IANA port number port 1195 # Use a dynamic tun device. dev tun # Remote peer and network remote 54.244.21.223 route 10.10.0.0 255.255.0.0 # Configure local and remote VPN endpoints ifconfig 169.254.255.3 169.254.255.4 # The pre-shared static key secret ovpn.key # keepalive keepalive 10 120
configurationca-to-or.conf
# Sample OpenVPN configuration file using a pre-shared static key # Port to use: 1194 is the official IANA port number port 1194 # Use a dynamic tun device. dev tun # Remote peer and network remote 54.236.173.50 route 10.1.0.0 255.255.0.0 # Configure local and remote VPN endpoints ifconfig 169.254.255.2 169.254.255.1 # The pre-shared static key secret ovpn.key # keepalive keepalive 10 120
config或者to-ca.conf
# Sample OpenVPN configuration file using a pre-shared static key # Port to use: 1194 is the official IANA port number port 1195 # Use a dynamic tun device. dev tun # Remote peer and network remote 54.241.174.228 route 10.0.0.0 255.255.0.0 route 10.1.0.0 255.255.0.0 # Configure local and remote VPN endpoints ifconfig 169.254.255.4 169.254.255.3 # The pre-shared static key secret ovpn.key # keepalive keepalive 10 120
注意转到另一个端点的路由命令。 我想如果你在任何一个端点上布置你的networking和所有的IP地址,你就可以很快的把我的例子修改成你的拓扑结构。