GRE | linux下创建GRE隧道【转】

一、GRE是什么?

GRE隧道是一种IP-over-IP的隧道,是通用路由封装协议,可以对某些网路层协议的数据报进行封装,使这些被封装的数据报能够在IPv4/IPv6 网络中传输。

Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程。

要在Linux上创建GRE隧道,需要ip_gre内核模块,它是GRE通过IPv4隧道的驱动程序。

二、ip_gre模块加载

查看是否有加载ip_gre模块

# modprobe ip_gre
# lsmod | grep gre
ip_gre 15245 0

三、创建GRE隧道步骤

环境如下:
host A: 10.2.68.38
host B: 10.14.36.48

在host A上面:

# ip tunnel add gre mode gre local 10.2.68.38 remote 10.14.36.48 ttl 255
# ip link set gre up
# ip addr add 10.10.10.1 peer 10.10.10.2 dev gre

备注
创建一个GRE类型隧道设备gre, 并设置对端IP为10.14.36.48。隧道数据包将从本地IP发起,其TTL字段被设置为255。隧道设备分配的IP地址为10.10.10.1,掩码为255.255.255.0。

在host B上面:

# ip tunnel add gre mode gre local 10.14.36.48 remote 10.2.68.38 ttl 255
# ip link set gre up
# ip addr add 10.10.10.2 peer 10.10.10.1 dev gre

此时,host A和host B建立起GRE隧道了。

四、检测连通性

使用ping检测连通性

# ping 10.10.10.2 (host A)
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_req=1 ttl=64 time=0.319 ms
64 bytes from 10.10.10.2: icmp_req=2 ttl=64 time=0.296 ms
64 bytes from 10.10.10.2: icmp_req=3 ttl=64 time=0.287 ms

五、撤销GRE隧道

在任一一端操作下面命令

# ip link set gre down
# ip tunnel del gre

转载地址:http://www.ttlsa.com/linux/create-a-gre-tunnel-linux/