這個客戶端到客戶端的 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 192.168.255.1ping 通 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指令僅允許客戶端在使用相同子網路時相互通訊。例如,如果用戶端具有該192.168.255.X範圍內的 IP 位址,則它將只能與同樣具有該192.168.255.X範圍內的 IP 位址的其他用戶端通訊。為了使不同子網路中的用戶端能夠相互通信,您需要使用上述的 Push 指令。

相關內容