1. GRE介绍
GRE隧道是一种IP-over-IP的隧道,是通用路由封装协议,可以对某些网路层协议的数据报进行封装,使这些被封装的数据报能够在IPv4/IPv6 网络中传输。
Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。
一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程。
要在Linux上创建GRE隧道,需要ip_gre内核模块,它是GRE通过IPv4隧道的驱动程序。

2. 查看是否有加载ip_gre模块
# modprobe ip_gre
# lsmod | grep gre

3. 创建步骤

环境如下:
host A:107.173.146.8
host B: 88.214.23.103
在host A上面:
ip tunnel add gre1 mode gre remote 88.214.23.103 local 107.173.146.8 ttl 255
remote 88.214.23.103 远方 ip;local 107.173.146.8 当地 ip
ip link set gre1 up 设置 gre1 网卡
ip addr add 192.168.168.2/24 dev gre1 设置 ip 192.168.168.2/24
在host B上面:
ip tunnel add gre1 mode gre remote 107.173.146.8 local 88.214.23.103 ttl 255
ip link set gre1 up
ip addr add 192.168.168.3/24 dev gre1
此时,host A 和 host B 建立起GRE隧道了。

4. 检测连通性:ping 192.168.168.3

5. 撤销GRE隧道
在任一一端操作下面命令
ip link set gre1 down
ip tunnel del gre1