使用路由表和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。 将服务器1设置为位于IP地址为10.19.1.1的24位子网上,将IP租赁给客户端1-3。 服务器1也连接到服务器2,并在服务器2的24位子网上有第二个IP地址。 服务器2具有与服务器1相同的客户机/服务器。它在IP地址为10.19.2.1的24位子网上向远程主机租用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是其客户端接口。 我怎样才能让这两个networking使用路由表进行通信到服务器1和服务器2? 我已经能够在服务器1上解决这个问题,所以客户端1可以ping远程主机,而不是相反。

我这样做是通过从服务器1推送到客户端的路由,以便10.19.0.0/16通过服务器1路由,然后我在服务器1的tun1上设置了伪装。我试图做同样的设置与服务器2,它不允许远程主机ping单个客户端。

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

具体来说,需要通知服务器1(10.19.1.0/24)的客户端可以通过10.19.1.1到达networking10.19.2.0/24,并且需要通知服务器2的客户端(在10.19.2.0/24上)networking10.19.1.0/24可以通过10.19.2.1到达。 应该不需要在任一服务器上configurationNAT伪装。

OpenVPN服务器允许您将路由命令推送到客户端。 我相信命令放在服务器1上的OpenVPN服务器configuration文件将是:

 push "route 10.19.2.0 255.255.255.0" 

而服务器2上的相应configuration将是:

 push "route 10.19.1.0 255.255.255.0" 

事实certificate,在Server2上closures了IPV4转发。 我仍然需要使用NAT,我相信这是因为OpenVPN需要身份validation,所有客户端都连接到OpenVPN服务器。 一旦在Server2上启用IPV4转发,一切工作都可以。