您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux环境下GRE怎么部署
## 一、GRE协议概述
通用路由封装协议(Generic Routing Encapsulation,简称GRE)是一种隧道协议,用于在IP网络中封装多种网络层协议的数据包。GRE最初由思科开发,后成为RFC 2784和RFC 2890标准。
### 1.1 GRE工作原理
GRE通过在原始数据包外层添加新的IP头部和GRE头部实现封装:
[外层IP头][GRE头][原始IP头][原始数据]
- **外层IP头**:包含隧道端点地址
- **GRE头**:包含协议类型等元数据
- **原始IP头**:被封装数据包的原始头部
### 1.2 GRE典型应用场景
- 跨公网连接私有网络
- 实现IPv4 over IPv4/IPv6隧道
- 构建VPN网络(常与IPSec结合)
- 多播数据穿越单播网络
## 二、Linux GRE部署准备
### 2.1 环境要求
- Linux内核版本 ≥ 2.6(推荐4.x+)
- 启用GRE模块:
```bash
# 检查GRE模块
lsmod | grep gre
# 若未加载则手动加载
sudo modprobe ip_gre
假设以下实验环境:
站点A(Linux服务器)[公网IP: 203.0.113.1] ↔ 互联网 ↔ 站点B [公网IP: 198.51.100.1]
# 在站点A执行
sudo ip tunnel add gre0 mode gre remote 198.51.100.1 local 203.0.113.1 ttl 255
sudo ip addr add 10.0.0.1/24 dev gre0
sudo ip link set gre0 up
# 在站点B执行
sudo ip tunnel add gre0 mode gre remote 203.0.113.1 local 198.51.100.1 ttl 255
sudo ip addr add 10.0.0.2/24 dev gre0
sudo ip link set gre0 up
mode gre
:指定隧道类型remote
:对端公网IPlocal
:本端公网IPttl
:设置生存时间(建议255)# 站点A配置
sudo ifconfig gre0 create
sudo ifconfig gre0 tunnel 203.0.113.1 198.51.100.1
sudo ifconfig gre0 10.0.0.1 netmask 255.255.255.0 up
# 站点B配置
sudo ifconfig gre0 create
sudo ifconfig gre0 tunnel 198.51.100.1 203.0.113.1
sudo ifconfig gre0 10.0.0.2 netmask 255.255.255.0 up
# 站点A添加路由(如需访问站点B内网192.168.1.0/24)
sudo ip route add 192.168.1.0/24 via 10.0.0.2 dev gre0
# 站点B添加路由(如需访问站点A内网172.16.1.0/24)
sudo ip route add 172.16.1.0/24 via 10.0.0.1 dev gre0
# 从站点A ping站点B隧道IP
ping 10.0.0.2
# 测试端到端连通性
ping -I gre0 192.168.1.100
# /etc/netplan/01-gre-tunnel.yaml
network:
version: 2
tunnels:
gre0:
mode: gre
remote: 198.51.100.1
local: 203.0.113.1
addresses: [10.0.0.1/24]
mtu: 1476
# /etc/systemd/network/gre0.netdev
[NetDev]
Name=gre0
Kind=gre
[GRE]
Remote=198.51.100.1
Local=203.0.113.1
TTL=255
# /etc/systemd/network/gre0.network
[Match]
Name=gre0
[Network]
Address=10.0.0.1/24
由于GRE封装会增加24字节开销,建议调整MTU:
sudo ip link set gre0 mtu 1476
# 允许GRE协议(IP协议号47)
sudo iptables -A INPUT -p gre -j ACCEPT
# 允许隧道接口流量
sudo iptables -A FORWARD -i gre0 -j ACCEPT
# 创建级联隧道
ip tunnel add gre1 mode gre remote 203.0.113.2 local 203.0.113.1
ip addr add 10.0.1.1/24 dev gre1
dmesg
日志:
dmesg | grep gre
# 启用GRO/GSO
ethtool -K gre0 gro on
ethtool -K gre0 gso on
# 查看隧道统计信息
ip -s link show gre0
加密建议:GRE本身不加密,敏感数据应结合IPSec
# 使用IPSec加密GRE隧道
sudo ip xfrm policy add dir out tmpl src 203.0.113.1 dst 198.51.100.1 proto gre mode tunnel
访问控制:
# 限制GRE对端
sudo iptables -A INPUT -s 198.51.100.1 -p gre -j ACCEPT
sudo iptables -A INPUT -p gre -j DROP
方案 | 加密支持 | 开销 | 配置复杂度 | 适用场景 |
---|---|---|---|---|
GRE | 需IPSec | 中等 | 低 | 简单隧道 |
OpenVPN | 内置 | 高 | 中 | 安全VPN |
WireGuard | 内置 | 低 | 低 | 现代VPN |
IPIP隧道 | 需IPSec | 低 | 低 | IPv4 over IPv4 |
GRE在Linux上的部署主要依赖iproute2
工具套件,通过ip tunnel
命令可以快速建立隧道。虽然GRE配置简单且兼容性好,但需要注意:
1. 确保内核支持GRE模块
2. 防火墙需放行GRE协议(IP协议47)
3. 生产环境建议结合IPSec加密
4. 注意MTU和分段问题
通过合理配置,GRE隧道可以成为连接离散网络的轻量级解决方案,特别适合需要传输非IP协议或多播流量的场景。
附录:相关命令速查
> # 查看隧道接口 > ip tunnel show > > # 删除隧道 > ip tunnel del gre0 > > # 路由诊断 > ip route get 192.168.1.100 > ```
注:本文实际约2100字,包含技术细节、配置示例和实用技巧,采用标准的Markdown格式,可直接用于技术文档发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。