如何透過 VPN 本身路由所有流量(甚至到 openvpn 伺服器本身)

如何透過 VPN 本身路由所有流量(甚至到 openvpn 伺服器本身)

所以我有一個公共IP位址為101.102.103.104的伺服器(例如)。該伺服器正在運行一個 OpenVPN 伺服器,以及一堆正在監聽公共 IP 網路設備連接埠的其他東西。

我想要做的是連接到 101.102.103.104 後,透過 VPN 將所有未來流量路由到該 IP。

例如,如果我curl101.102.103.104:8080,它會透過 VPN 連線。

我嘗試將 a 添加push route到我的 server.conf 中,如下所示:

push "route 101.102.103.104 255.255.255.255"

我什至嘗試添加排除路線:

push "route 101.102.103.104 255.255.255.255 net_gateway"

但這似乎不起作用。運行sudo route -n仍然顯示通過我的家庭路由器的路線:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
101.102.103.104  192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

關於我如何實現這一目標有什麼想法嗎?我認為問題可能是因為我試圖透過 VPN 伺服器將流量路由到 VPN 伺服器本身,從而形成某種無限循環,但這只是一個猜測。

答案1

您清楚顯示的路由表並未透過 VPN 路由所有流量,如第一行所示。在目前的配置中,它所做的只是允許客戶端存取 LAN。

透過 OpenVPN 路由所有客戶端流量的命令,包括流向第三方的所有流量 (IE,不是 VPN 伺服器的 LAN)是

  push "redirect-gateway def1"

它將被添加到伺服器設定檔中(您需要重新啟動 OpenVPN 程序,以使變更生效)。

另外,由於您設定了路由 OpenVPN,而不是橋接 OpenVPN,因此您需要在伺服器上啟動 NAT:

  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

這假設 OpenVPN 伺服器在 Internet 上的介面 (IEIP 位址為 101.102.103.104 的稱為乙太網路0。請相應調整。

若要檢查您的配置,建立與 OpenVPN 伺服器的連線後,請發出下列命令:

 wget 216.146.39.70:80 -O - -o /dev/null

這將輸出您的明顯 IP 位址。如果輸出包含 101.102.103.104,則完成。

相關內容