当前位置: 首页 > news >正文

Linux持久化配置GRE接口

Centos7持久化配置GRE接口

  • GRE协议简介
  • 前置条件
    • 1.开发ipv4转发
      • 1.1启用TCP窗口缩放
      • 1.2启用自动MTU
      • 1.3禁用ipv6--可选
      • 1.4使内核配置生效
    • 2.加载内核模块
    • 3.放通防火墙
  • 方案1:ip命令`临时配置`GRE隧道
    • VM1`临时配置`GRE接口
      • 配置邻居
      • 启动GRE隧道
    • VM2`临时配置`GRE接口
      • 配置邻居
      • 启动GRE隧道
    • 关闭和删除gre接口
  • 方案2:ifcfg持久化配置gre隧道
    • VM1配置gre1接口
      • 配置邻居
      • 启动GRE隧道
    • VM2配置gre1接口
      • 配置邻居
      • 启动GRE隧道
  • 方案3:ncmli配置GRE隧道
    • VM1配置gre1接口
      • 创建名为gre1的GRE隧道接口
      • 将gre1接口修改为静态IP
      • 为gre1接口手动配置本端内网IPv4地址
      • 添加静态路由
      • 配置邻居
      • 启用 gre1 连接
    • VM2配置gre1接口
      • 创建名为gre1的GRE隧道接口
      • 将gre1接口修改为静态IP
      • 为gre1接口手动配置本端内网IPv4地址
      • 添加静态路由
      • 配置邻居
      • 启用gre1连接
  • 结果验证
  • Ubuntu持久化配置GRE接口
    • 两端Ubuntu配置gre1接口
    • 保存配置
  • 关闭`gre0@NONE`和`gretap0@NONE`接口

GRE协议简介

什么是 GRE?
GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。 用于将数据包包装在二级数据包中,以建立直接的点对点网络连接。GRE采用了Tunnel(隧道)技术。
SSH 隧道TCP层(传输层),而GREIPIP这种隧道协议则直接在IP层(网络层)上。

GRE协议组网的优点不依赖端口
缺点:需要两端固定IP效率觉得不高


前置条件

先收集两端公网IP规划用于隧道通信内网IP

  1. 开启IPV4转发
  2. 加载ip_gre内核模块
  3. 放通防火墙

1.开发ipv4转发

https://blog.csdn.net/omaidb/article/details/122719243

vim /etc/sysctl.d/gre.conf

# 开启内核开启数据包转发## 1为开启;0为关闭net.ipv4.ip_forward=1

1.1启用TCP窗口缩放

# 启用TCP窗口缩放## 用于提高 TCP 连接的性能和吞吐量。它允许发送方和接收方在传输数据时使用更大的窗口大小,以支持更高的数据传输速率。net.ipv4.tcp_window_scaling=1

1.2启用自动MTU

# 开启动态MTUnet.ipv4.tcp_mtu_probing=1

1.3禁用ipv6–可选

# 关闭IPV6## 1为开启;0为关闭net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1

1.4使内核配置生效

保存后使内核配置生效

# 加载所有的sysctl配置文件sysctl--system

2.加载内核模块

# 查看tun模块是否加载lsmod|greptun# 查看gre模块是否加载lsmod|grepgre# 加载GRE模块modprobe ip_gre# 查看模块的信息modinfo ip_gre# 在系统启动时自动加载tun内核模块echotun>/etc/modules-load.d/tun.conf# 在系统启动时自动加载ip_gre内核模块echoip_gre>/etc/modules-load.d/ip_gre.conf


3.放通防火墙

两端机器都要执行

# 自动调整mss值--推荐iptables-AFORWARD-ptcp --tcp-flags SYN,RST SYN-jTCPMSS --clamp-mss-to-pmtu# 防火墙允许GRE协议的传入和传出流量# 放行IP协议号47(GRE协议)# iptables -A INPUT -p 47 -j ACCEPTiptables-AINPUT-pgre-jACCEPT# iptables -A OUTPUT -p 47 -j ACCEPTiptables-AOUTPUT-pgre-jACCEPT# 允许转发 GRE 流量# iptables -A FORWARD -p 47 -j ACCEPTiptables-AFORWARD-pgre-jACCEPT# 放通GRE的内网通信iptables-AFORWARD-s${GRE的内网网段}/24-d${GRE的内网网段}/24-jACCEPT

方案1:ip命令临时配置GRE隧道

https://www.linuxprobe.com/gre-tunnel-config.html
使用ip命令临时配置GRE隧道,重启后将丢失配置


VM1临时配置GRE接口

# 创建GRE隧道## 可选参数 key password1234iptunneladdgre1 mode gre remote${机器B的外网IP}local${机器A的外网IP}# 指定隧道内网IP## 建议内网网段10.187.71.0/30## 注意:建议使用 /30 掩码(如 10.0.0.1/30),peer 10.0.0.2/30。这是点对点链接的标准写法。ipaddradd${本端内网IP}/30 dev gre1 peer${对端内网IP}/30# 添加一条路由--如果已经指定peer则不需要添加路由## 通过隧道到机房内网的路由iprouteadd${B机目标内网IP}dev${GRE接口}iprouteadd${B机目标内网IP网段}/${网络掩码}dev${GRE接口}

配置邻居

## lladdr 链路层地址## 在因特网中,我们还得设置ip的关联ipneighadd<对端内网IP>lladdr<对端公网IP>dev<GRE接口># 列出邻居表ipneigh showipneigh show dev gre1

启动GRE隧道

# 必须先添加邻居再启用隧道# 启用GRE隧道iplinksetgre1 up

VM2临时配置GRE接口

# 创建GRE隧道iptunneladdgre1 mode gre remote<机器B的外网IP>local<机器A的外网IP># 指定隧道内网IP## 建议内网网段10.187.71.0/30## 注意:建议使用 /30 掩码(如 10.0.0.1/30),peer 10.0.0.2/30。这是点对点链接的标准写法。ipaddradd${本端内网IP}/30 dev gre1 peer${对端内网IP}/30# 根据需要配置route--如果已经指定peer则不需要添加路由iprouteadd<B机目标内网IP>dev<GRE接口>iprouteadd<B机目标内网IP网段>/<网络掩码>dev<GRE接口>

配置邻居

## 在因特网中,我们还得设置ip的关联## lladdr 链路层地址ipneighadd<对端内网IP>lladdr<对端公网IP>dev<GRE接口># 列出邻居表ipneigh showipneigh show dev gre1

启动GRE隧道

# 必须先添加邻居再启用隧道# 启用GRE隧道iplinksetgre1 up

关闭和删除gre接口

# 关闭GRE隧道iplinksetgre1 down# 或## 关闭接口ifdowngre1# 删除GRE1接口iptunnel del gre1

方案2:ifcfg持久化配置gre隧道

使用network服务的Centos7使用ifcfg持久化文件来配置gre的方法。

RHEL8默认使用NetworkManager作为网络管理器,可能不兼容此方法。
设备gre0名称被保留。gre1为设备使用或不同的名称。


VM1配置gre1接口

设备gre0名称被保留。gre1为设备使用或不同的名称。
持久化配置文件/etc/sysconfig/network-scripts/ifcfg-gre1

# 接口名称为gre1DEVICE=gre1# 不使用引导协议自动配置 IP 地址BOOTPROTO=none# 系统启动时自动激活接口ONBOOT=yes# 接口类型为GRE隧道TYPE=GRE# 本端 公网IP--(可选)# MY_OUTER_IPADDR=172.20.235.121# 对端 公网IP地址PEER_OUTER_IPADDR=172.20.235.124# 本端 隧道内网IP地址MY_INNER_IPADDR=10.0.0.1# 对端 隧道内网IP地址PEER_INNER_IPADDR=10.0.0.2# 掩码NETMASK=255.255.255.252

启动gre1接口

# 启动vm1上的gre1ifupgre1

配置邻居

## lladdr 链路层地址## 在因特网中,我们还得设置ip的关联ipneighadd<对端内网IP>lladdr<对端公网IP>dev<GRE接口># 列出邻居表ipneigh showipneigh show dev gre1

启动GRE隧道

# 必须先添加邻居再启用隧道# 启用GRE隧道iplinksetgre1 up# 或ifupgre1

VM2配置gre1接口

设备gre0名称被保留。gre1为设备使用或不同的名称。
持久化配置文件/etc/sysconfig/network-scripts/ifcfg-gre1

# 接口名称为gre1DEVICE=gre1# 不使用引导协议自动配置 IP 地址BOOTPROTO=none# 系统启动时自动激活接口ONBOOT=yes# 接口类型为 GRE 隧道TYPE=GRE# 对端 公网IP 地址PEER_OUTER_IPADDR=172.20.235.121# 本端 公网IP--(可选)# MY_OUTER_IPADDR=172.20.235.124# 对端 隧道内网IP 地址PEER_INNER_IPADDR=10.0.0.1# 本端 隧道内网IP 地址MY_INNER_IPADDR=10.0.0.2# 掩码NETMASK=255.255.255.252

配置邻居

## lladdr 链路层地址## 在因特网中,我们还得设置ip的关联ipneighadd<对端内网IP>lladdr<对端公网IP>dev<GRE接口># 列出邻居表ipneigh showipneigh show dev gre1

启动GRE隧道

# 必须先添加邻居再启用隧道# 启用GRE隧道iplinksetgre1 up# 或ifupgre1

方案3:ncmli配置GRE隧道

RHEL8默认采用nmcli网络管理工具

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-a-gre-tunnel-using-nmcli-to-encapsulate-layer-3-traffic-in-ipv4-packets_configuring-ip-tunnels


VM1配置gre1接口


创建名为gre1的GRE隧道接口

# 配置本端和远端公网IPnmcli conaddtypeip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 remote203.0.113.10local198.51.100.5

将gre1接口修改为静态IP

# 将gre1接口修改为静态IPnmcli con modify gre1 ipv4.method manual

为gre1接口手动配置本端内网IPv4地址

# 为gre1接口手动配置本端内网IPv4地址nmcli c mod gre1 +ip4'10.0.1.2/30'

添加静态路由

将到192.0.2.0/24网络的流量路由到路由器A上的隧道 IP:

# 添加静态路由## 假设对方内网是 192.0.2.0/24,下一跳是对端隧道IP 10.0.1.1nmcli con modify gre1 +ipv4.routes"192.0.2.0/24 10.0.1.1"

配置邻居

## lladdr 链路层地址## 在因特网中,我们还得设置ip的关联ipneighadd<对端内网IP>lladdr<对端公网IP>dev<GRE接口># 列出邻居表ipneigh showipneigh show dev gre1

启用 gre1 连接

# 启用 gre1 连接nmcli con up gre1

VM2配置gre1接口


创建名为gre1的GRE隧道接口

# 配置本端和远端公网IPnmcli conaddtypeip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 remote198.51.100.5local203.0.113.10

将gre1接口修改为静态IP

# 将gre1接口修改为静态IPnmcli con modify gre1 ipv4.method manual

为gre1接口手动配置本端内网IPv4地址

# 为gre1接口手动配置本端内网IPv4地址nmcli c mod gre1 +ip4'10.0.1.1/30'

添加静态路由

将到172.16.0.0/24网络的流量路由到路由器B上的隧道 IP:

# 添加静态路由## 假设对方内网是 172.16.0.0/24,下一跳是对端隧道IP 10.0.1.2nmcli con modify gre1 +ipv4.routes"172.16.0.0/24 10.0.1.2"

配置邻居

## lladdr 链路层地址## 在因特网中,我们还得设置ip的关联ipneighadd<对端内网IP>lladdr<对端公网IP>dev<GRE接口># 列出邻居表ipneigh showipneigh show dev gre1

启用gre1连接

# 启用gre1连接nmcli con up gre1

结果验证



Ubuntu持久化配置GRE接口

https://blog.csdn.net/NewTyun/article/details/109831641


两端Ubuntu配置gre1接口

/etc/netplan/00-installer-config.yaml

# /etc/netplan/00-installer-config.yamlnetwork:# 以太网配置--本地网卡ens3的配置ethernets: ens3:# 系统启动不用等待网络接口完全激活optional:true# 不使用DHCP获取IP--手动配置IP地址dhcp4:falseaddresses:# 本地网络接口 ens3 的 IP 地址为 200.1.1.1/24-200.1.1.1/24# 网关的 IPv4 地址为 200.1.1.254gateway4:200.1.1.254 nameservers: addresses:# DNS 服务器的地址为 114.114.114.114-114.114.114.114# 隧道配置tunnels:# 接口名称gre1:# 使用 GRE 模式进行隧道通信mode: gre# 本地 GRE 隧道端点的 IP 地址为 200.1.1.1local:200.1.1.1# 远程 GRE 隧道端点的 IP 地址为 100.1.1.1remote:100.1.1.1# 为 GRE 隧道分配的内网地址为 172.16.1.1/24addresses:[172.16.1.1/24]# 路由配置routes:# 隧道内部的目标子网为 192.168.1.0/24- to:192.168.1.0/24# 经由 GRE 隧道的下一跳 IP 地址为 172.16.1.2via:172.16.1.2# 路由优先级,越小优先级越高# metric: 50

保存配置

保存配置后,验证配置

# 先验证配置netplay try

如果机器没有断掉的话可以按ENTER确认配置
如果和主机SSH中断,等待120S会自动恢复。

确认配置无误后,应用配置

# 应用配置netplay apply

关闭gre0@NONEgretap0@NONE接口

Tunnelgre0接口被称为fallback接口,具有特殊的含义。它是由ip_gre内核模块在模块初始化时创建的,无法禁用此功能。

卸载ip_gre模块之后,gre0@NONEgretap0@NONE不会显示

# 关闭tun0接口ifdowngre1# 卸载ip_gre模块modprobe-rip_gre
http://www.jsqmd.com/news/622368/

相关文章:

  • 终极Tree of Thoughts实战指南:10个复杂问题解决案例详解
  • 3分钟搞定:让你的Switch手柄在电脑上畅玩所有游戏 [特殊字符]
  • 深度解析冷板式液冷技术在AI数据中心中的关键应用与规范
  • 蓝桥杯 504单词分析java
  • 东京大学团队:AI写论文时代已来,但“幻觉“问题却让人忧心忡忡
  • Ollama部署granite-4.0-h-350m:轻量模型本地运行完整教程
  • 告别复杂配置!Xinference-v1.17.1一键部署开源大模型指南
  • 5分钟上手PlantUML编辑器:告别拖拽式绘图,用代码高效设计UML图表
  • VBA-JSON实战解密:5步突破Excel与JSON数据转换瓶颈
  • Java连接Kafka示例
  • 2026年停车场照明哪家性价比高?多维度分析与选择参考 - 品牌排行榜
  • Qwen3-Embedding-4B惊艳案例:用128维向量实现高效语义搜索
  • 2026停车场照明品牌发展观察:智能节能技术引领行业升级 - 品牌排行榜
  • Poppler for Windows:让PDF处理变得简单高效的开源工具
  • Ant Media Server性能优化:10个提升流媒体质量的关键技巧
  • 重0到1基于langchain框架搭建一个智能体(chapter 1)
  • 雪女-斗罗大陆-造相Z-Turbo在元宇宙中的应用:为用户虚拟化身生成个性化动漫形象
  • 5分钟学会TurboDiffusion:Wan2.1快速生成产品演示视频教程
  • 奥运排行榜背后的数据博弈:如何为不同国家定制最佳排名策略
  • 2026停车场照明哪家好?智慧节能方案对比参考 - 品牌排行榜
  • C编码小技巧(代码注释,日志开启/关闭,#pragma once)
  • SmolVLA企业级应用:基于.NET框架的智能业务系统集成
  • TitanHide核心原理:SSDT Hook技术深度解析
  • Pixel Dream Workshop 控制生成技术:Depth与Canny控制网实战
  • SDMatte在嵌入式设备上的轻量化部署探索:基于STM32的启发
  • 终极ink运行时引擎解析:容器、控制命令与故事状态管理全指南
  • 2026年专业的论文降重网站助力学术写作高效完成 - 品牌排行榜
  • Sentinel-1 Burst数据处理避坑实录:从aria2c报错到wget脚本救场
  • HsMod:炉石传说终极个性化定制方案,实现游戏体验8倍效率提升
  • 2022.12四级听力真题解析:高效备考策略与实战技巧