我已經能夠使用靜態 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.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 設定進行一些額外的變更。
首先要注意的是,server
OpenVPN 設定檔中的指令定義了伺服器本身將使用的子網路。在您的情況下,伺服器將使用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 指令。