所以我有一個公共IP位址為101.102.103.104的伺服器(例如)。該伺服器正在運行一個 OpenVPN 伺服器,以及一堆正在監聽公共 IP 網路設備連接埠的其他東西。
我想要做的是連接到 101.102.103.104 後,透過 VPN 將所有未來流量路由到該 IP。
例如,如果我curl
101.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,則完成。