Networking

有什麼方法可以使單獨的 OpenVPN 連接使用單獨的網關?

  • March 22, 2017

我有一堆私有網路,都在 172.XXX.XXX.XXX IP 空間。當我通過 OpenVPN 連接時,有時 VPN 最終會通過同一個網關連接,該網關只允許來自第一個 VPN 的流量工作。

例子:

$ netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
............
172.31             10.8.0.5           UGSc            1        0   utun3
172.32             10.8.0.5           UGSc            1        0   utun3

這裡 172.31.XXX.XXX 和 172.32.XXX.XXX 使用相同的網關/介面,只允許來自第一個連接的 VPN 的流量傳輸。

伺服器 #1 的 OpenVPN 配置:

push "route 172.32.0.0 255.255.0.0"

伺服器 #2 的 OpenVPN 配置:

push "route 172.31.0.0 255.255.0.0"

有沒有辦法讓兩者使用不同的隧道/網關?有時,當我斷開和連接很多次時,他們最終會使用不同的隧道,但並非每次都發生這種情況,而且在一切正常之前必須連接和斷開連接也很痛苦。

VPN 配置只是帶有額外推送指令的範例配置。

既然你提到配置文件是預設的,除了推送線,我認為它們都包含預設值

server 10.8.0.0 255.255.255.0

行,這使得兩個 openvpn 伺服器使用同一個池。因此,當您連接到伺服器時,它們都會分配第一個可用地址,即 10.8.0.5,並指示客戶端通過該地址路由所有連接。這將解釋隨機的“現在可以工作”的時刻,因為如果伺服器認為該地址已被使用(例如,您重新連接太快),它將使用池中的下一個可用地址,因此您會獲得另一個分配的地址。

只需server將兩台伺服器上的線路更改為不同,這樣客戶端就可以擁有來自不同子網的 IP 地址。

這有點離題,但您可能想知道為什麼 10.8.0.5 是第一個地址。Openvpn 從 /30 子網分配 p2p 地址,因此對於每個連接,都使用單獨的 /30 子網。第一個是為伺服器本身保留的,因此 xxx1 和 xxx2 永遠不會分配給客戶端。接下來的 /30 子網有兩個可用地址,xxx5 和 xxx6,其中一個將分配給客戶端,另一個分配給伺服器對等地址。

引用自:https://serverfault.com/questions/839851