
我正嘗試在假期旅行之前設定家庭 VPN。
我有一個使用 TAP 設定的 OpenVPN 伺服器成功運行,並且我能夠使用客戶端連接到它。
但是,我在通過它路由客戶端流量時遇到問題。
該redirect-gateway
選項對我不起作用。目前,我放棄了這一點並嘗試手動設定我的路線。
我的方法是先針對 Tap 介面執行 DHCP 用戶端 (dhcpcd),然後嘗試手動新增路由。
# dhcpcd tap0
dhcpcd-9.4.1 starting
...
tap0: rebinding lease of 192.168.1.137
tap0: probing address 192.168.1.137/24
tap0: leased 192.168.1.137 for 86400 seconds
tap0: adding route to 192.168.1.0/24
forked to background, child pid 11185
DHCP 用戶端設定的路由對於內部 IP 可以正常運作。我能夠 ping/ssh 家庭網路上的電腦。我正在透過系留電池連接對此進行測試。
# ip route
default via 192.168.149.13 dev wlan0 proto dhcp src 192.168.149.193 metric 600
192.168.1.0/24 dev tap0 proto dhcp scope link src 192.168.1.137 metric 1052
192.168.149.0/24 dev wlan0 proto kernel scope link src 192.168.149.193 metric 600
# ping 192.168.1.136 # another IP on my network
PING 192.168.1.136 (192.168.1.136) 56(84) bytes of data.
64 bytes from 192.168.1.136: icmp_seq=1 ttl=64 time=104 ms
64 bytes from 192.168.1.136: icmp_seq=2 ttl=64 time=83.5 ms
...
如果我使用家庭網路的網關 IP 手動新增網際網路主機的 IP 路由,我就可以透過 OpenVPN 存取這些路由。
(注意,175.55.55.55 應該是我的系留手機連接,72.33.33.33 應該是我的家庭 IP)
# curl -4 https://icanhazip.com
175.55.55.55
# host -t a icanhazip.com
icanhazip.com has address 104.18.115.97
icanhazip.com has address 104.18.114.97
# ip route add 104.18.115.97 via 192.168.1.1
# ip route add 104.18.114.97 via 192.168.1.1
# curl -4 https://icanhazip.com
72.33.33.33
問題是我不知道如何推廣到所有流量。
我嘗試添加包羅萬象的路由來透過 VPN 傳遞流量:
# ip route add 0.0.0.0/1 via 192.168.1.1 dev tap0
# ip route add 128.0.0.0/1 via 192.168.1.1 dev tap0
當我再次嘗試存取 icanhazip.com 時,逾時,OpenVPN 用戶端日誌顯示:
2022-12-15 15:27:38 us=127602 Recursive routing detected, drop tun packet to [AF_INET]72.33.33.33:2445
2022-12-15 15:27:38 us=122602 Recursive routing detected, drop tun packet to [AF_INET]72.33.33.33:2445
2022-12-15 15:27:38 us=147702 Recursive routing detected, drop tun packet to [AF_INET]72.33.33.33:2445
如果有幫助的話,我可以提供來自客戶端(或伺服器)的日誌或配置,但我認為這可能更多是路由問題。
答案1
哦,呃。
@TomYan 幫我解決了這個問題。
OpenVPN 用戶端透過裝置與 OpenVPN 伺服器進行通訊wlan0
。
當我將wlan0
路由覆蓋為預設(或實際上默認,使用0.0.0.0/1
和128.0.0.0/1
位址)並嘗試透過 VPN 設備發送所有流量時tap0
,其中也包括 OpenVPN 流量。
「遞歸路由」訊息確實是正確的。
如果我一直使用 TCP,我可能會更快注意到這個問題,因為一旦我將這些路由放在那裡,連接就會逾時。
解決方案是明確地新增一條允許 OpenVPN 用戶端仍然到達伺服器的位址路由。
因此,在 DHCP 之後,路由立即具有:
# ip route
default via 192.168.149.13 dev wlan0 proto dhcp src 192.168.149.193 metric 600
192.168.1.0/24 dev tap0 proto dhcp scope link src 192.168.1.137 metric 1052
192.168.149.0/24 dev wlan0 proto kernel scope link src 192.168.149.193 metric 600
我的 OpenVPN 伺服器位址是72.33.33.33
,所以我將透過上面預設提到的 wlan0 網關手動添加一條路由到它:
# ip route add 72.33.33.33 via 192.168.149.13 dev wlan0
現在我的兩條包羅萬象的路線將會起作用:
# ip route add 0.0.0.0/1 via 192.168.1.1 dev tap0
# ip route add 128.0.0.0/1 via 192.168.1.1 dev tap0
# curl -4 https://icanhazip.com
73.33.33.33