透過 tun1 路由 tun0 流量(雙跳 VPN)

透過 tun1 路由 tun0 流量(雙跳 VPN)

目標:路由所有來自 eth0 -> tun0 -> tun1 的網路流量以達到雙跳 VPN。以下路由表對於該目標是否正確?

$ ip 路由顯示:

0.0.0.0/1 via 10.8.1.1 dev tun1 
default via 10.8.3.1 dev tun0 proto static metric 50 
10.8.1.0/24 dev tun1 proto kernel scope link src 10.8.1.6 
10.8.3.0/24 dev tun0 proto kernel scope link src 10.8.3.4 metric 50 
101.133.213.73 via 10.8.3.1 dev tun0 
127.0.0.0/8 dev lo scope link 
128.0.0.0/1 via 10.8.1.1 dev tun1 
191.72.65.45 via 182.160.0.1 dev eth0 proto static metric 100 
182.160.0.0/24 dev eth0 proto kernel scope link src 182.160.0.19 metric 100 
182.160.0.0/24 dev eth0 proto dhcp scope link src 182.160.0.19 metric 208 
182.160.0.1 dev eth0 proto static scope link metric 100

答案1

eth0 : 182.160.0.19/24 (GW: 182.160.0.1)
tun0 : 10.8.3.4/24 (GW: 10.8.3.1 / VPN endpoint : 191.72.65.45 via eth0)
tun1 : 10.8.1.6/24 (GW: 10.8.1.1 / VPN endpoint : 101.133.213.73 via tun0)

這樣,除了乙太網路(182.160.0.0/24) 上的本地流量和tun0/「VPN1」(10.8.3.0/24) 上的本地流量之外,所有流量(包括來自tun0 的傳入流量)都將通過tun1 路由。

有了這個路由表所有來自 eth0 的流量也將透過 tun1 路由問題中沒有提到/要求...這種情況適合您嗎?如果答案是肯定的,那麼您可以保留此設定。

如果這是不願意的情況(您不想將流量從 eth0 路由到 tun1 / tun0),您(至少)有兩種選擇來處理它。

  • “自訂”路由表

可以不只一個路由表,並且根據規則/策略,您可以管理哪些流量將由預設流量以外的其他流量處理。透過這種方式,您可以設定自訂路由表,其中預設 GW 為 tun1,並且只有來自 tun0 的流量才會指向此自訂路由表。

  • 網路命名空間

透過這種方式,您可以將整個tun 介面與eth0 隔離(在命名空間之間使用內部路由),這樣您就可以在命名空間中設定簡單(預設)路由表,這樣只有來自tun0 的流量才能到達tun1 。

答案2

假設所需的順序是來自 LAN 的流量應從本機電腦 -> tun0 -> tun1,這很可能正在發生,但它的發生方式在 traacreroute 上不可見。

讓我們取得一個發送到任意網路位址的封包 - 在本例中我將使用 8.8.8.8。

電腦接收資料包並尋找如何發送它。它認為它應該通過 tun1 發送(因為下面的 2 個路由相當於預設路由,但更受限制,因此優先於預設路由 - 在這種情況下,第一個路由被命中) -

 0.0.0.0/1 via 10.8.1.1 dev tun1
 128.0.0.0/1 via 10.8.1.1 dev tun1

但這是可能不明顯的部分。如果您查看 tun1 的配置,您會發現它的端點為 101.133.213.73。該 IP 位址有一條經過 tun0 的特定路由

 101.133.213.73 via 10.8.3.1 dev tun0

同樣,還有另一條路線

  191.72.65.45  via 182.160.0.1 dev eth0 proto static metric 100 

此路由使透過 tun0 發送的流量可以透過乙太網路介面直接存取。

由於這是一條非常具體的路線,因此流向 101.133.213.73 的流量將經過 tun0。因此,所有流向互聯網(通過 tun1)的流量都必須經過 101.133.213.73,它本身就是一個隧道,所以是的,數據將流經兩個隧道。

追蹤路由不會顯示這一點,因為封包不知道它正在通過隧道傳輸。也就是說,您仍然可以透過查看較低層級來檢查是否正在發生這種情況 - 在另一個視窗中執行「sudo tcpdump -n -i any」時產生流量。您將看到,每當將資料包發送到更廣泛的網路時,都會透過 eth0、tun0、tun1 中的每一個發送資料包,傳回的資料包也是如此。與 tun0 關聯的資料包的目標皆為 101.133.213.73。

相關內容