OpenVPN 多個用戶端同一網關

OpenVPN 多個用戶端同一網關

我有兩個客戶端需要連接到一台 OpenVPN 伺服器。是否可以在 ifconfig 參數中為兩個客戶端使用相同的網關?

Client A config file
[...]
ifconfig 10.0.0.2 10.0.0.1

Client B config file
[...]
ifconfig 10.0.0.3 10.0.0.1

伺服器上的情況如下:

tun0
inet 10.10.0.1 destination 10.10.0.2

tun1
inet 10.10.0.1 destination 10.10.0.3

現在一切正常,但可能會出現一些問題嗎?

我被告知要使用不同的網關,如下所示:

Client A config file
[...]
ifconfig 10.0.0.2 10.0.0.1

Client B config file
[...]
ifconfig 10.0.1.2 10.0.1.1

但我認為僅出於路由目的需要不同的網關,如果我想添加一條路由並在特定的tun 介面上轉送我的流量,我確實需要不同的網關,或者伺服器不知道要發送資料包的哪個網關,但如果我不這樣做不需要特定的路線我可以使用我的第一個配置嗎?

謝謝

答案1

這是可能的,也是正確的。網關參數定義用戶端上用於將資料傳送到 VPN 的配置,以便可以像通常的 IP 中一樣定義路由。一旦封包被傳送到 OpenVPN 進程,它就會處理其路由(直到它離開其他某個 OpenVPN 進程)。

特別是,您定義:

ifconfig 10.10.0.3 10.10.0.1

僅有的該命令的結果就像您在客戶端上執行以下命令一樣:

ip address add 10.10.0.3 dev tun0
ip route add 10.10.0.1 dev tun0

就這樣。其他客戶端、伺服器、外部系統—沒有其他人知道這個客戶端配置。

唯一使用網關的就是編寫通往 VPN 的路由,如下所示:

ip route add 192.168.0.0/24 via 10.10.0.1

例如,將此網路設定為可透過 VPN 存取。例如,到VPN伺服器和其他客戶端的路由就是這樣完成的。當然,如果您有多個用戶端,您可以在它們上使用相同的網關位址(並且您自然會這樣做,例如,對於同一 LAN 中的鄰居電腦)。

同樣的事情也適用於伺服器。例如,我在一台機器上執行多個VPN(一個是透過UDP,另一個是透過連接埠443 上的TCP,並帶有連接埠共享選項— 以便能夠潛入阻止常用連接埠但允許443 的防火牆,甚至檢查是否存在是一個網頁伺服器)。這些伺服器都有相同的當地的地址已配置,不同之處在於偏僻的(這使得可以設定我透過哪個 VPN 路由封包)。

現在談談您會遇到的問題。當然,使用成熟的 Linux OpenVPN 就沒有問題。如果您要使用“OpenVPN 用戶端”,無論是 Linux、Windows、iOS/iPadOS/macOS 還是 Android 用戶端,這取決於topology您的設定。在net30拓撲中,它們會將此類配置視為無效而拒絕。在這種情況下,客戶端位址及其遠端位址應屬於相同 /30 子網路。

答案2

通常,點對點介面(例如tun0或任何其他類似隧道的介面)僅需要用於隧道管理目的或特定隧道識別的本機位址。

將隧道介面視為遠端連線端點。這個介面有兩端——你和另一端。一般來說,沒有必要使用任何當只有連接的兩方參與資料交換時,這樣的介面上的位址 - 您只需透過此介面發送資料包,它就會被傳遞到另一端,沒有其他方法。

如果某些第三方需要能夠到達您的遠端連線端點,事情就會變得更加複雜。為了到達這個端點,他們需要一個遠端位址作為資料包目的地。相反,遠端使用您的本機位址來識別它的版本另一端當需要時,即安裝預設路由;但是,它可以使用隧道介面本身作為路由目的地,甚至不知道您的本地地址,並且它仍然可以工作。

因此,除非您需要透過本地端點來識別隧道介面(即,將其用作隧道上某些動態路由協定場景的來源位址),否則您可以使用任何您希望的位址作為隧道上的本機位址- 它不會甚至不需要與遠端位址位於同一子網路中。

相關內容