Linux

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

  • November 25, 2020

目標:為雙跳 VPN 路由從 eth0 -> tun0 -> tun1 的所有網際網路流量。以下路由表是否適合該目標?

$ 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
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。

引用自:https://serverfault.com/questions/999617