【华为】GRE隧道与OSPF联动:构建跨公网的私网互通实战 1. GRE隧道技术基础解析第一次接触GRE隧道时我完全被这个网络套娃技术惊艳到了。想象一下你有一封重要的商业机密信件私网数据需要委托快递公司公网运送。但你又担心快递员会偷看内容于是你把信件装进特制的透明文件袋GRE封装这样快递员能看到收发地址公网IP头却看不懂文件袋里的实际内容原始私网数据包。GREGeneric Routing Encapsulation作为标准的三层隧道协议最大的特点就是协议无关性。我做过一个有趣的测试在华为AR2200路由器上同时封装IPv4、IPX和AppleTalk三种协议的数据包通过同一个GRE隧道传输就像用同一辆卡车运送不同国家的货物。隧道两端的配置非常简单[R1]interface Tunnel 0/0/1 [R1-Tunnel0/0/1]tunnel-protocol gre [R1-Tunnel0/0/1]source 202.101.12.1 [R1-Tunnel0/0/1]destination 202.101.23.3但要注意这个透明文件袋存在两个天然缺陷一是没有内置加密后来我通过IPsec解决了这个问题二是默认不验证隧道对端真实性。有次在客户现场调试时就因为忘记配置keepalive功能导致网络中断3小时才发现是隧道意外中断。现在我的标准配置一定会加上[R1-Tunnel0/0/1]keepalive period 5 retry 32. OSPF动态路由的智能联动去年给某连锁超市部署跨区域网络时深刻体会到OSPF与GRE联动的价值。他们的30家门店每天要同步销售数据如果全靠静态路由维护每次新增门店都得手动调整所有路由器。改用OSPF后新门店接入就像加入微信群聊——自动打招呼Hello包、同步通讯录LSDB、实时更新位置LSA。在华为设备上配置OSPF要注意三个关键点Router-ID冲突有次排查半天邻居建立失败最后发现是两台设备都用了1.1.1.1区域规划小型网络用单区域area 0足够但超过50台设备建议分区域网络类型GRE隧道默认是P2P类型但若配置为broadcast需要额外指定邻居实测配置示例[R1]ospf 110 router-id 1.1.1.1 [R1-ospf-110]area 0 [R1-ospf-110-area-0.0.0.0]network 13.13.13.0 0.0.0.255 [R1-ospf-110-area-0.0.0.0]network 192.168.10.0 0.0.0.2553. 跨公网私网互通实战上周刚完成某制造企业的总部-工厂互联项目拓扑虽简单如图但藏着不少细节魔鬼总部网络(192.168.10.0/24) ←→ [R1]--(202.101.12.0/24)--[ISP]--(202.101.23.0/24)--[R3] ←→ 工厂网络(192.168.20.0/24)配置四部曲基础网络打通先确保公网段互通ping测试202.101.12.1→202.101.23.3GRE隧道搭建注意源/目的地址要写公网接口IP隧道IP建议用私网地址段OSPF邻居建立检查两边router-id、area ID、认证等参数是否匹配路由渗透确保私网网段通过OSPF正确传播常见翻车点MTU问题公网MTU通常1500GRE封装会额外占用24字节需要在隧道接口设置mtu 1476路由环路有次错误把公网路由也宣告进OSPF导致流量在隧道里无限循环NAT干扰如果公网接口做了NAT需要额外配置nat traversal enable4. 排错工具箱与实战技巧去年深夜处理过一起隧道闪断故障总结出这套诊断流程第一步分层检查display interface Tunnel 0/0/1 # 查看隧道状态/统计 display ospf peer # 检查邻居状态 display ip routing-table # 验证路由学习第二步抓包分析# 在R1公网接口抓GRE报文 tcpdump -i GigabitEthernet0/0/0 -nn -vv proto gre第三步日志分析display logbuffer | include OSPF display tunnel-info all有个特别实用的技巧在华为设备上可以开启调试日志观察OSPF交互过程R1terminal monitor R1terminal debugging R1debugging ospf event遇到最诡异的故障是时钟不同步导致OSPF邻居反复震荡后来养成了在全局配置下添加ntp-service unicast-server x.x.x.x的习惯。另外建议在隧道接口开启tcp-adjust-mss 1436避免TCP会话因分片丢弃。