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 去访问目标网站。

0 Responses to “GRE / IPIP Tunnnel”


Comments are currently closed.