通过 VPS 链接两个 VPN 子网

通过 VPS 链接两个 VPN 子网

我需要根据以下模式通过 VPS 链接两个子网:

192.168.1.0/24 -> VPN 客户端 -> VPS <- VPN 客户端 <- 192.168.2.0/24

例如,我想从 192.168.1.0/24 到达 192.168.2.2,反之亦然。我创建了两个 OpenVPN 隧道,192.168.1.0/24 连接到第一个隧道,192.168.2.0/24 连接到第二个隧道。当然,我设置了静态路由,将 192.168.2.0/24 添加到第一个隧道的本地网络,将 192.168.1.0/24 添加到第二个隧道的本地网络。

问题是我无法从客户端获得任何东西。

答案1

我实际上已经使用了类似的东西来从互联网连接到我的家庭网络。

我的家庭网络位于运营商级网络之后,因此我必须经过一系列的麻烦才能使用 VPN。

缺点:当我们通过 VPN 与原始互联网连接测量带宽时,性能非常差。

提示:我有一个 300/300 Mbps 的连接,但我通过 VPN 测量的速度最多为 17 Mbps。

我将OpenVPN其用作 VPN 服务器。主要是因为我需要支持 TCP 包的 VPN 服务器,因为我无法通过 UDP 保持 VPN 连接处于活动状态。

这太糟糕了,我需要将保活定时器设置为 10 秒或更短,否则运营商级 NAT将会下降我的 VPN 连接从我的家庭网络到 VPN 服务器。:-(

所以我的建议是:如果你想要获得最佳的 VPN 连接性能。如果可能的话,请切换到 UDP 包。

免责声明:

我的 VPN 网络目前处于非活动状态,因此下面提供的信息可能存在拼写错误,但总体思路应该工作。

无论如何。接下来介绍我的设置:

我的 VPN 网络的网络示意图

大多数神奇的事情都发生在 VPN 服务器上。

我的每个客户端都使用唯一的客户端证书连接到我的服务器。我使用客户端证书提供的 CommonName 在客户端配置目录中查找进一步的设置。

我的 VPN 服务器托管在 VPS 托管设施 (TransIP.eu) 中,该设施位于与我完全不同的国家/地区。我选择它们是因为它们很便宜,而且 VPN 服务器具有连接速度非常快到互联网(10 Gbps)。

您不需要使用我的 VPS 提供商。任何人都可以,只要您有权自行配置 OpenVPN。:-)

我的解决方案基本上建立在此基础上:

路由 TUN 上的 OpenVPN 多个客户端

我的重要内容如下server.conf

# The actual VPN net. 
# Each VPN client connected to the VPN server can ping each other 
# on the 192.168.100.0/24 subnet.

server 192.168.100.0 255.255.255.0

# I can't really remember if I need to push the 192.168.100.0/24 subnet 
# from the general settings to the client.
#
# All VPN clients gets an IP address from this range.
#
# Comment it out if not needed. 
push "route 192.168.100.0 255.255.255.0

ifconfig-pool-persist ipp.txt

# Location of the client specific configuration files.
# It is in the 'ccd/' subfolder.

client-config-dir ccd

# Neccessary so that each VPN client can see each other (aka 'ping'). 
client-to-client

在我的ccd子文件夹中,有以下文件:

RasberryPi4
MyFriend

文件内容RasberryPi4

ifconfig-push 192.168.100.2 255.255.255.0
push "route 192.168.0.0 255.255.255.0 192.168.100.3 1"
iroute 192.168.1.0 255.255.255.0

文件内容MyFriend

ifconfig-push 192.168.100.3 255.255.255.0
push "route 192.168.1.0 255.255.255.0 192.168.100.2 1"
iroute 192.168.0.0 255.255.255.0

现在假设客户端使用具有 CommonName“RasberryPi4”的客户端证书连接 VPN 服务器,而另一个客户端证书具有 CommonName“MyFriend”。

我的手机没有特殊文件,因此当它连接到 VPN 服务器时,它会被分配 192.168.100.0/24 子网上的可用 IP 地址,但它无法访问 192.168.0.0/24 或 192.168.1.0/24 子网。

如果我想访问两个子网,并且我的电话证书具有 CommonName MyPhone,那么我需要在ccd子目录中MyPhone使用至少以下最低设置命名另一个文件:

push "route 192.168.0.0 255.255.255.0 192.168.100.3 1"
push "route 192.168.0.0 255.255.255.0 192.168.100.2 1"

我还扩展了上面的配置,因此我可以从 Hurricane Electric 中分离出一个 /48 IPv6 子网,这样我和我的朋友在家里就有了我们自己的 /56 IPv6 子网,每个拥有 IPv6 地址的人都可以访问该子网。

...但这是一个完全不同的故事。:-)

希望这可以帮助。 :-)

相关内容