GRE / IPIP Tunnnel

#GFW促進學習系列#

假如有多個VPS,那麼將這些VPS連接起來的最佳方式是 GRE / IPIP tunnel

Tunnel

VPS A: 假設 IP 1.2.3.4

ip tunnel add tunnelName mode gre remote 2.3.4.5
ip addr add dev tunnelName 192.168.20.1/24
ip link set dev tunnelName up

VPS B: 假設 IP 2.3.4.5

ip tunnel add tunnelName mode gre remote 1.2.3.4
ip addr add dev tunnelName 192.168.20.2/24
ip link set dev tunnelName up
  • 設置完成後,VPS A 上的隧道IP是 192.168.20.1,VPS B 上的隧道IP是 192.168.20.2
  • 只需啟動時執行一次,隧道建立後自動在內核運行,無任何用戶態守護進程
  • 使用 “ip tunnel del tunnelName” 刪除隧道。
  • “gre” 可以換成 “ipip”,理論上 ipip 模式 overhead 更低,性能更好。但我實際測試時發現某些網絡環境上 ipip tunnel 性能低下,可能因為網絡某些節點的QoS策略。

Routing

在 VPS A 上建立路由表,通過與 VPS B 的 tunnel 訪問 Internet:

VPS A

ip route add default dev tunnelName table 100
# 對特定流量走 tunnel
ip rule add iif tun0 table 100 prio 100

VPS B 上需要用 iptables 打開 MASQUERADE (SNAT)。

應用場景:你的本地網絡連接 VPS A 更快,但某些設置區域限制的網站只有 VPS B 能夠訪問(如 hulu / DMM 等日本很多18禁網站)。通過上面這種方式本地首先用 VPN 連接 VPS A,然後在通過 Tunnel 實際由 VPS B 去訪問目標網站。

One Reply to “GRE / IPIP Tunnnel”

Comments are closed.