这几天看到国内主机商 olinkcloud 在卖 gre 隧道服务,可以实现其他国外 vps 主机通过 olink 的 gre 隧道强制回程走 as9929 线路,从而实现了回程线路的优化,据说效果媲美 CN2 GIA,但是价格却更便宜。一般通过中转优化线路的操作都是买个中转机再用 iptabls 转发流量实现的,用 gre 隧道实现也是本人头一次听说。于是就简单的了解了下,有理解不正确的地方请指正。
首先说下 olink 通过 gre 隧道优化线路的过程。过程还是比较简单。A 代表你本地客户机,B 代表你在欧洲的 vps、独服。C 代表 olink 的转发服务器。其中 B 与 C 之间通过 gre 隧道连接,C 到 A 的回程是高速 as9929 线路。普通从 B 到 A 的回程线路不算优秀,但是从 B-C-A 的线路质量就高的多了。官方给出的优化效果如下所示。
简单介绍下 gre 隧道是个什么技术。提前说明下,通过查找学习大致知道了 gre 协议的使用方式、作用及原理,但是 olink 的 gre 隧道貌似不是 gre 的典型用途。GRE: Generic Routing Encapsulation),即通用路由封装协议。可以对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在 IPv4 网络中传输。常见的封装形式就是 ip in ip,即把 ip 协议封装到 ip 协议中,实现 vpn 模型,即实现两个局域网间的双向通信。为什么是 ip in ip 呢?因为两个局域网间的内网 ip 无法互通,所以把局域网 A 的 ip 封装起来,通过 gre 隧道传到局域网 B,然后在解封 IP,实现通信。gre 实现两个局域网互通 vpn 的小实例如下。
对 AR1 做下面的配置:
# 创建 Tunnel 接口
interface Tunnel0/0/1
# 配置 IP 地址
ip address 10.1.12.1 255.255.255.0
# 配置 Tunnel 接口的隧道协议
tunnel-protocol gre
# 配置 Tunnel 源地址
source 10.1.12.1
# 指定 Tunnel 接口的目的 IP 地址
destination 10.1.12.2
# 配置一条静态路由指向 Tunnel
ip route-static 192.168.2.0 24 Tunnel 0/0/1
AR2 上的配置与上面类似。
配置完后,就可以在我们在 PC1 上 ping 通 PC2。抓取数据包可以看到外层的 IP 报文源目 IP 地址分别为 10.1.12.2,10.1.12.1。内层源目 IP 地址则成了 192.168.2.1,192.168.1.1。实现了在 AR1 与 AR2 之间的透明传输。