我需要根据以下模式通过 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 服务器上。
我的每个客户端都使用唯一的客户端证书连接到我的服务器。我使用客户端证书提供的 CommonName 在客户端配置目录中查找进一步的设置。
我的 VPN 服务器托管在 VPS 托管设施 (TransIP.eu) 中,该设施位于与我完全不同的国家/地区。我选择它们是因为它们很便宜,而且 VPN 服务器具有连接速度非常快到互联网(10 Gbps)。
您不需要使用我的 VPS 提供商。任何人都可以,只要您有权自行配置 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 地址的人都可以访问该子网。
...但这是一个完全不同的故事。:-)
希望这可以帮助。 :-)