在linux下配置gre隧道需确认环境、创建隧道接口、配置ip并启用、设置路由。1. 确保两端设备支持gre模块,使用modprobe ip_gre检查模块并确保公网ip互通;2. 使用ip tunnel add命令分别在两端创建gre接口并指定对端和本端ip;3. 为隧道接口分配ip地址并启用,通过ping测试连通性;4. 添加静态路由实现内网互通,并注意防火墙规则及配置持久化保存。

Linux下实现GRE隧道其实并不复杂,但很多用户对它的工作原理和配置步骤了解不深。简单来说,GRE(Generic Routing Encapsulation)是一种通用的封装协议,可以在不同网络之间建立隧道,常用于跨网络通信、虚拟私有网络搭建等场景。

下面通过一个实际的配置实例来讲解如何在Linux系统中配置GRE隧道。

1. 确认环境与基本准备
在开始之前,需要确保两端设备都支持GRE模块,并且操作系统为Linux。大多数现代Linux发行版默认已经加载了GRE模块,但可以使用以下命令检查:
modprobe ip_gre
如果系统没有报错,说明模块已存在或成功加载。接下来确认两台主机之间能够通过公网IP互通,这是建立GRE隧道的基础。

常见问题提示:
- 防火墙可能阻止了GRE流量(协议号47),需要放行;
- 如果是在云平台部署,需确认平台是否允许GRE协议。
2. 创建GRE隧道接口
假设我们有两台服务器:
- 主机A:内网IP
192.168.1.10,公网IP203.0.113.10 - 主机B:内网IP
192.168.2.20,公网IP199.51.100.20
我们需要在这两个主机之间创建一个GRE隧道。以主机A为例,执行如下命令:
ip tunnel add gre1 mode gre remote 199.51.100.20 local 203.0.113.10 ttl 255
解释一下参数:
-
gre1是创建的隧道接口名; -
mode gre表示使用GRE模式; -
remote指定对端公网IP; -
local指定本端公网IP; -
ttl 255设置TTL值,防止数据包在网络中无限循环。
同样地,在主机B上执行对应的命令:
ip tunnel add gre1 mode gre remote 203.0.113.10 local 199.51.100.20 ttl 255
3. 配置IP地址并启用接口
隧道接口创建好后,还需要给它分配IP地址,并启用接口。继续在主机A上操作:
ip addr add 172.16.0.1/24 dev gre1 ip link set gre1 up
主机B则设置:
ip addr add 172.16.0.2/24 dev gre1 ip link set gre1 up
此时,两个主机之间的GRE隧道已经建立完成。可以通过ping测试连通性:
# 在主机A上执行 ping 172.16.0.2
如果能通,说明隧道工作正常。
4. 配置路由让内网互通
为了实现两边内网通信,还需添加静态路由。比如在主机A上添加:
ip route add 192.168.2.0/24 dev gre1
主机B上添加:
ip route add 192.168.1.0/24 dev gre1
这样,主机A的内网设备就可以访问主机B的内网设备,反之亦然。
注意事项:
- 确保两边防火墙允许GRE协议和隧道内的流量;
- 如果是CentOS/RHEL系统,建议将配置写入
/etc/sysconfig/network-scripts/ifcfg-gre1以持久化保存; - 使用
systemctl restart network或nmcli可实现开机自动加载。
基本上就这些。整个过程看起来有点多,但只要一步步来,配置起来并不难。关键是要理解GRE的工作方式以及网络路由的基本逻辑。










