Linux OpenVPN Tap 路由適用於單一 IP,但不適用於所有流量

Linux OpenVPN Tap 路由適用於單一 IP,但不適用於所有流量

我正嘗試在假期旅行之前設定家庭 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/1128.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

相關內容