使用路由表和 OpenVPN 桥接两个 VPN

使用路由表和 OpenVPN 桥接两个 VPN

我有一个如下的设置:

                                                    +                                      
                                                    |                        +------------+
+---------+                  +---+-----+            |              +---------+ Remote Host|
|Client 1 +--+--------------->Server 1 |            |              |         | 10.19.2.2  |
|10.19.1.2|  +---------------|10.19.1.1|            |              |         +------------+
+---------+  |  +------------v-------+-+            |              |                       
+---------+  |  |                    |            +-----------+    |                       
|Client 2 |  |  |               ^    |        +--------------------+                       
|10.19.1.3+--+  |               |    |        |   |  Switch   |                            
+---------+     |               |    v        |   |           |                            
+---------+     |               |             |   +-+---------+                            
|Client 3 +-----+            +--++-----+      |     |                                      
|10.19.1.4|                  |Server 2 |      |     |                                      
+---------+                  |10.19.2.1| <----+     |                                      
                             +---------+            |                                      
                                                    |                                      
                                                    |                                      
                                                    |                                      
                                                    ++                                     

我使用的是 OpenVPN。服务器一设置为 24 位子网上的地址 10.19.1.1,将 IP 租给客户端 1-3。服务器 1 也连接到服务器 2,并在服务器 2 的 24 位子网上拥有第二个 IP 地址。服务器 2 的客户端/服务器设置与服务器 1 相同。它在 24 位子网上拥有 IP 地址 10.19.2.1,将 IP 租给远程主机。

每个服务器都有两个接口:

+---+--------+                    
|Server 1    +-+tun0  10.19.1.0/24
|            |                    
|            +-+tun1 10.19.2.0/24 
+------------+                    
+------------+                    
|Server 2    +-+tun0 10.19.2.0/24 
|            |                    
|            +-+tun1 10.19.1.0/24 
+------------+                    

其中 tun0 是其服务器接口,而 tun1 是其客户端接口。如何让这两个网络使用路由表与服务器 1 和服务器 2 进行通信?我已经能够在服务器 1 上实现这一点,以便客户端 1 可以 ping 远程主机,但反之则不行。

我通过从服务器 1 向客户端推送路由来实现此目的,以便 10.19.0.0/16 通过服务器 1 路由,然后我在 tun1 上为服务器 1 设置伪装。我尝试对服务器 2 进行相同的设置,但它不允许远程主机 ping 各个客户端。

答案1

如果我理解正确的话,您希望在两个 VPN 子网之间实现路由 (L3) 连接。无需添加任何额外路由,服务器 1 和 2 应该已经知道如何在两个网络之间路由数据包,因为它们具有连接到两个网络的接口。所缺少的只是通知各自的 VPN 客户端如何到达另一个网络。

具体来说,需要通知服务器 1(位于 10.19.1.0/24 上)的客户端,可以通过 10.19.1.1 访问网络 10.19.2.0/24;需要通知服务器 2(位于 10.19.2.0/24 上)的客户端,可以通过 10.19.2.1 访问网络 10.19.1.0/24。两台服务器上都无需配置 NAT 伪装。

OpenVPN 服务器允许您将路由命令推送到客户端。我认为在服务器 1 上输入 OpenVPN 服务器配置文件的命令是:

push "route 10.19.2.0 255.255.255.0"

服务器 2 上的相应配置为:

push "route 10.19.1.0 255.255.255.0"

答案2

事实证明,Server2 上的 IPV4 转发已关闭。我仍然必须使用 NAT,我认为这是因为 OpenVPN 需要身份验证,并且所有客户端都连接到 OpenVPN 服务器。一旦在 Server2 上启用 IPV4 转发,一切都可以双向进行。

相关内容