这个客户端到客户端 OpenVPN 设置中缺少什么?

这个客户端到客户端 OpenVPN 设置中缺少什么?

我已经能够使用静态 IP 设置一个带有多个客户端的 OpenVPN 服务器,静态 IP 是通过ifconfig-push 192.168.254.6 192.168.255.1为每个客户端添加一行(如 ccd 中所示)来设置的。我可以从服务器 ping 或 ssh 到每个客户端。在我的服务器配置中,我有以下几行(以及其他配置):

server 192.168.255.0 255.255.255.0

route 192.168.254.0 255.255.255.0

现在我想做的是能够从一个客户端 ssh 或 curl 到另一个客户端,因此在阅读文档后,我将以下行添加client-to-client到配置中。我注意到,在重新启动服务器并重新连接客户端时,它会将以下行添加ip route到我的客户端:

192.168.255.0/24 via 192.168.255.1 dev tun0

我似乎理解这是在向客户端表明每个地址192.168.255.X都会转到 VPN 服务器。事实上,我尝试通过运行traceroute 192.168.255.30并获取以下内容来验证:

traceroute to 192.168.255.30 (192.168.255.30), 30 hops max, 60 byte packets
 1  192.168.255.1 (192.168.255.1)  11.454 ms  14.491 ms  14.493 ms

但是,我想要连接的其他客户端的地址如下,192.168.254.X所以我想我漏掉了一些东西,但实际上我不知道是什么。我尝试手动添加此路由:

ip route add 192.168.254.0/24 via 192.168.255.1 dev tun0

对我来说,这意味着 192.168.254.X 等地址也会通过 VPN 服务器。但如果我这样做,traceroute 192.168.254.30结果会有所不同:

traceroute 192.168.254.30
traceroute to 192.168.254.30 (192.168.254.30), 30 hops max, 60 byte packets

另外,我可以向客户端机器发送 ping 消息ping 192.168.255.1,但是无法 ping 254 范围内的其他客户端,例如ping 192.168.254.30

我的网络知识非常有限,缺少什么才能让一个客户端192.168.254.30访问另一个客户端上的服务192.168.254.32

更新:我已经将一个新客户端连接到 vpn,这次在 ccd 文件中分配一个 192.168.255.X 范围内的 IP,然后我尝试从我正在测试的客户端运行 traceroute。我也无法在 255 范围内连接到这个客户端,而且,如果我运行 traceroute,会发生以下情况。

这个新客户端有192.168.255.22,如果在我的测试客户端中我这样做traceroute 192.168.255.3我会得到:

traceroute to 192.168.255.3 (192.168.255.3), 30 hops max, 60 byte packets
 1  192.168.255.1 (192.168.255.1)  11.481 ms  21.192 ms  21.472 ms

同样的情况也发生在没有客户端的 ips 4、5、6... 上,直到我找到22新客户端的 ip,在这种情况下,我traceroute 192.168.255.22得到:

traceroute to 192.168.255.22 (192.168.255.22), 30 hops max, 60 byte packets

为什么会发生这种情况?

答案1

听起来您正在尝试通过 OpenVPN 服务器在不同子网之间路由流量。这是可以做到的,但您需要对 OpenVPN 配置进行一些额外的更改。

首先要注意的是,serverOpenVPN 配置文件中的指令定义了服务器本身将使用的子网。 在您的例子中,服务器将使用子网192.168.255.0/24。 这意味着客户端将被分配该192.168.255.X范围内的 IP 地址。

route另一方面,该指令定义了从 OpenVPN 客户端到特定子网的流量的路由。 在您的例子中,该指令route告诉 OpenVPN 服务器,来自客户端的流量应路由到192.168.254.0/24子网。

但是,这还不足以让客户端跨不同子网相互通信。您还需要push在 OpenVPN 服务器配置文件中添加一个指令。该指令告诉 OpenVPN 服务器将路由推送到客户端,以便他们知道如何将流量路由到其他子网。

以下是配置文件中推送指令的示例:

push "route 192.168.254.0 255.255.255.0"

该指令告诉 OpenVPN 服务器向客户端推送路由,指示它们192.168.254.0/24通过 OpenVPN 服务器将流量路由到子网。

您还需要确保client-to-client在服务器配置中启用了该指令。该指令告诉 OpenVPN 服务器允许客户端直接相互通信,而无需通过服务器路由其流量。

一旦您对配置进行了这些更改,您应该能够将您的客户端连接到 OpenVPN 服务器并跨不同的子网相互通信。

值得注意的是,该client-to-client指令仅允许使用同一子网的客户端相互通信。例如,如果客户端的 IP 地址在该192.168.255.X范围内,则它只能与 IP 地址也在该192.168.255.X范围内的其他客户端通信。为了让不同子网中的客户端相互通信,您需要使用如上所述的推送指令。

相关内容