1. 为什么需要 Tunnel:Underlay 与 Overlay 企业两个私网之间如果隔着 Internet:
1 2 3 4 5 6 7 LAN-A LAN-B 10.1.1.0/24 10.2.2.0/24 | | R1 R2 203.0.113.1 198.51.100.1 | | +------------- Internet ---------------+
原始业务包:
1 2 SIP = 10.1.1.10 DIP = 10.2.2.20
无法直接依靠普通 Internet 路由完成跨站点私网通信。
Tunnel 的基本思想是:
1 2 3 4 5 6 7 8 9 10 11 12 原始业务包 10.1.1.10 → 10.2.2.20 ↓ 封装 Outer IP 203.0.113.1 → 198.51.100.1 GRE Inner IP 10.1.1.10 → 10.2.2.20
由此形成两个逻辑层次:
1 2 3 4 5 Underlay 负责 Tunnel Endpoint / NBMA 之间的真实 IP 可达性 Overlay 负责企业私网、Tunnel IP、路由协议以及业务通信
核心原则:
Underlay 先解决“隧道端点怎么到达”,Overlay 再解决“企业业务怎么通过隧道通信”。
Tunnel 隐藏了 Underlay 的拓扑细节,但不会消除 Underlay 的延迟、丢包、MTU、抖动等问题。
2. GRE:封装,而不是加密 GRE 的作用是把原始报文封装到另一个 IP 报文中。
典型 GRE:
1 2 3 4 5 6 7 8 9 10 11 12 [Outer IP Header] SIP = 203.0.113.1 DIP = 198.51.100.1 Protocol = GRE (47) [GRE Header] [Inner IP Header] SIP = 10.1.1.10 DIP = 10.2.2.20 [Data]
转发过程:
1 2 3 4 5 6 7 8 9 10 11 Internet / Underlay Router ↓ 只根据 Outer DIP 转发 远端 Tunnel Endpoint ↓ GRE 解封装 得到 Inner Packet ↓ 根据 Inner DIP 再进行路由
Tunnel IP 的真正作用 例如:
1 2 R1 Tunnel0 = 172.16.12.1/30 R2 Tunnel0 = 172.16.12.2/30
Tunnel IP 是真实的 Overlay L3 接口地址,可以用于:
路由协议邻居
BGP Peer
Overlay Next-Hop
Ping / 管理
NHRP Protocol Address
但普通业务包不会固定多出一层:
1 2 3 Outer IP Tunnel IP Business IP
普通业务 GRE 包仍然是:
1 2 3 4 5 6 7 Outer: 203.0.113.1 → 198.51.100.1 GRE Inner: 10.1.1.10 → 10.2.2.20
如果发送的是 Tunnel 自身的流量,例如:
1 ping 172.16.12.2 source 172.16.12.1
那么 Tunnel IP 就成为 Inner IP:
1 2 3 4 5 6 7 8 9 Outer: 203.0.113.1 → 198.51.100.1 GRE Inner: 172.16.12.1 → 172.16.12.2 ICMP
因此:
Tunnel IP 是真实可使用的 L3 地址,但不是每个业务报文都必须携带的一层额外 IP Header。
3. GRE 配置与 Recursive Routing 基本 GRE:
1 2 3 4 interface Tunnel0 ip address 172.16.12.1 255.255.255.252 tunnel source 203.0.113.1 tunnel destination 198.51.100.1
其中:
1 2 3 4 5 tunnel source → Outer SIP tunnel destination → Outer DIP
业务路由可以指向 Tunnel:
1 ip route 10.2.2.0 255.255.255.0 172.16.12.2
GRE Recursive Routing 必须特别注意:
到 Tunnel Destination 的 Underlay Route 不能反过来依赖 Tunnel 本身。
错误:
1 2 3 4 5 6 Tunnel destination = 198.51.100.1 但: 198.51.100.1 → via Tunnel0
形成:
1 2 3 4 5 6 7 建立 Tunnel ↓ 必须先到达 Tunnel Destination ↓ 到达 Tunnel Destination 又需要 Tunnel ↓ Recursive Routing
正确逻辑:
1 2 3 4 5 Tunnel Destination ↓ Underlay Route ↓ 物理接口 / ISP Next-Hop
常用验证:
1 2 3 4 5 show ip interface brief show interfaces tunnel0 show ip route <tunnel-destination> ping <tunnel-destination> source <local-underlay-ip> ping <remote-tunnel-ip> source <local-tunnel-ip>
GRE 排错基本顺序:
1 2 3 4 5 Underlay ↓ Tunnel ↓ Overlay
4. 为什么 GRE 之后还需要 IPsec GRE 只负责封装,不提供:
1 2 3 Confidentiality Integrity Peer Authentication
因此:
1 2 3 4 5 GRE → 解决“怎么把业务带过去” IPsec → 解决“怎么安全地带过去”
IPsec 的三个核心安全概念:
1 2 3 4 5 6 7 8 9 Encryption → Confidentiality → 防止别人读取内容 Integrity → 检测数据是否被篡改 Authentication → 确认通信对端身份
5. IKE、IPsec SA 与 ESP IKE IKE 负责:
1 2 3 4 5 6 7 协商安全参数 + 认证 Peer + 建立 IKE SA + 协商/建立 IPsec SA
可以理解为:
1 2 3 4 5 IKE SA → 保护协商/控制关系 IPsec SA → 保护真正的数据流量
SA 本质上是:
一组已经协商好的安全状态、算法、密钥、参数等信息。
IPsec SA 通常是单向的,因此双向通信通常存在两个方向的 SA。
ESP ESP 是 IPsec 真正用于保护数据的协议之一:
注意:
ESP 是安全协议。
AES 是可能被 ESP 使用的加密算法。
例如:
1 2 3 4 5 ESP ↓ AES-CBC + HMAC-SHA
或者:
AES-GCM 属于 AEAD,可以同时提供加密和认证完整性能力。
6. IPsec Transport Mode、Tunnel Mode 与 GRE over IPsec Transport Mode 1 2 3 4 5 6 7 8 [Original IP Header] [ESP Header] [TCP/UDP/Data] ← protected → [ESP Trailer / Auth Data]
特点:
不增加新的 Outer IP Header
原 IP Header 保留在外
ESP Header 本身不加密
Tunnel Mode 1 2 3 4 5 6 7 8 [New Outer IP Header] [ESP Header] [Original IP Header + L4 + Data] ← protected → [ESP Trailer / Auth Data]
整个原始 IP Packet 被作为 Inner Packet 保护。
GRE over IPsec 经典 GRE 已经完成:
1 2 3 4 5 Outer IP + GRE + Inner Packet
因此配合 IPsec Transport Mode 时:
1 2 3 4 5 6 7 8 9 10 [GRE Outer IP Header] [ESP Header] [GRE Header] [Original Inner IP] [Data] ← protected → [ESP Trailer / Auth Data]
线上最终可理解为:
1 2 3 4 5 6 7 8 Outer IP Protocol = ESP (50) ESP GRE Inner IP Data
所以:
1 2 3 4 5 6 7 8 无 IPsec: Outer IP Protocol GRE 47 ↓ GRE ↓ Inner Packet
1 2 3 4 5 6 7 8 GRE over IPsec: Outer IP Protocol ESP 50 ↓ ESP ↓ GRE + Inner Packet
7. NAT-T:为什么需要 UDP/4500 如果 VPN/IPsec 报文需要穿越 NAT/PAT:
1 2 3 4 5 VPN Endpoint ↓ NAT/PAT Device ↓ Internet
原生 ESP:
没有 TCP/UDP Port,穿越 NAT/PAT 时可能出现问题。
NAT-T 将 ESP 封装到:
形成:
1 2 3 4 5 6 7 8 Outer IP UDP Src/Dst Port = 4500 ESP Encrypted Payload
IKE 初始协商通常使用:
协议层次必须分清:
1 2 3 4 5 OSPF IP Protocol 89 EIGRP IP Protocol 88 GRE IP Protocol 47 ESP IP Protocol 50 UDP IP Protocol 17
而:
是 UDP 的端口号。
例如 OSPF 报文经过 GRE + IPsec + NAT-T:
1 2 3 4 5 6 7 8 9 OSPF ↓ GRE ↓ ESP ↓ UDP/4500 ↓ IP
注意:
NAT-T 不是为了“避免 NAT”,而是为了让 IPsec 能够穿越已经存在的 NAT/PAT。
8. DMVPN:mGRE、NHRP 与 Hub/Spoke 普通 GRE 的问题:
1 2 一个 Tunnel → 固定一个 tunnel destination
如果 Hub 有大量 Branch:
1 2 100 Branch → Hub 可能需要大量 P2P GRE Tunnel
DMVPN 使用:
解决扩展性问题。
mGRE mGRE:
一个 Tunnel Interface / 一个 Tunnel IP,可以动态与多个 NBMA Peer 通信。
例如:
1 Spoke1 Tunnel0 = 172.16.0.2
同一个 Tunnel0 可以和:
通信。
不是:
1 2 3 Tunnel0 → Hub Tunnel1 → Spoke2 Tunnel2 → Spoke3
NHRP NHRP 负责建立:
1 2 3 Overlay / Tunnel IP ↓ Underlay / NBMA IP
例如:
1 2 172.16.0.2 → 1.1.1.1 172.16.0.3 → 3.3.3.3
可以抽象类比 ARP:
1 2 3 4 5 ARP: IP → MAC NHRP: Tunnel / Protocol IP → NBMA IP
但两者不是同一个协议。
Hub / Spoke Hub/Spoke 是管理员设计出来的角色,不像 OSPF DR/BDR 那样通过选举产生。
Spoke 通常预先知道 Hub/NHS:
Spoke 会向 Hub/NHS 注册:
1 2 3 自己的 Tunnel IP ↔ 自己的 NBMA IP
Hub 因此维护 Spoke 的 NHRP Mapping。
9. DMVPN Phase 1 / 2 / 3 Phase 1 Spoke-to-Spoke 数据必须经过 Hub:
1 2 3 4 5 Spoke1 ↓ Hub ↓ Spoke2
业务数据经过 Hub 时,Hub 会:
1 2 3 4 5 6 7 8 收到: Outer = Spoke1 NBMA → Hub NBMA ↓ 解封装 ↓ 路由 重新封装: Outer = Hub NBMA → Spoke2 NBMA
Inner Business IP 不变:
Phase 2 允许:
直接动态 Shortcut。
关键条件:
路由必须保留真正的 Remote Spoke Tunnel IP 作为 Next-Hop。
例如:
1 2 10.2.2.0/24 via 172.16.0.3
然后:
1 2 3 4 5 6 7 8 9 10 11 12 13 Routing: 10.2.2.0/24 → 172.16.0.3 NHRP: 172.16.0.3 → 3.3.3.3 最终: Spoke1 → Spoke2
因此 Phase 2 的核心是:
1 2 3 4 5 Routing Business Prefix → True Spoke Tunnel Next-Hop NHRP Tunnel IP → NBMA IP
EIGRP 经典 Phase 2 环境中常见:
1 2 no ip split-horizon eigrp <AS> no ip next-hop-self eigrp <AS>
目的是让 Hub 能传播 Spoke 路由,同时保留真正的 Spoke Next-Hop。
Phase 3 Phase 3 最大的变化:
Shortcut 不再依赖 RIB 必须拥有真正的 Remote Spoke Next-Hop。
例如 Spoke1 只有:
1 2 10.0.0.0/8 via 172.16.0.1
即:
第一次流量:
Hub 发现可以建立更优 Shortcut:
1 2 3 4 5 Hub ↓ NHRP Redirect ↓ Spoke1
Redirect 的作用不是简单直接把完整 NBMA Mapping 塞给 Spoke1,而是:
通知 Spoke1:这个流量存在更直接的路径,可以进行 NHRP Resolution。
随后:
1 2 3 4 5 6 7 8 9 10 11 12 Spoke1 ↓ NHRP Resolution Request 经 Hub/NHS 向真正目标方向解析 ↓ Spoke2 ↓ NHRP Resolution Reply ↓ Spoke1
Spoke1 收到 Reply 后:
1 2 3 4 5 学习解析结果 ↓ 写入 / 更新 NHRP Cache ↓ 形成动态 Mapping / Shortcut 状态
例如:
注意:
Resolution Reply 是“得到答案”,NHRP Mapping/Cache 是“把答案保存下来”。
不是收到 Reply 后再额外发送一次 Mapping 请求。
后续业务数据可以:
直接通信。
典型 Phase 3:
Hub:
Spoke:
三个 Phase 最核心区别 1 2 3 4 5 6 7 8 9 10 11 12 13 Phase 1: 路由指向 Hub 数据 Spoke → Hub → Spoke Phase 2: 必须依靠真实 Remote Spoke Next-Hop NHRP 解析 NBMA 数据 Spoke → Spoke Phase 3: 即使路由仍然指向 Hub / 使用汇总路由 也可以通过 Redirect + Resolution 建立 Shortcut 最终数据 Spoke → Spoke
压缩记忆:
1 2 3 4 5 Phase 1:经 Hub Phase 2:靠真实 Next-Hop 直连 Phase 3:即使 Next-Hop 是 Hub,也能动态 Shortcut
10. Phase 3 数据平面、配置、Show 与排错 假设:
1 2 3 4 5 6 7 8 9 10 11 12 13 Spoke1 Tunnel0 = 172.16.0.2 NBMA = 1.1.1.1 LAN = 10.1.1.0/24 Hub Tunnel0 = 172.16.0.1 NBMA = 2.2.2.2 Spoke2 Tunnel0 = 172.16.0.3 NBMA = 3.3.3.3 LAN = 10.2.2.0/24
Phase 3 Shortcut 已建立。
Host:
Spoke1 已经拥有:
1 2 3 Routing / CEF Shortcut State + NHRP Mapping
逻辑过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 DIP = 10.2.2.20 ↓ Routing / CEF / Shortcut 识别 Remote Spoke / Overlay Peer ↓ NHRP 172.16.0.3 → 3.3.3.3 ↓ mGRE Outer DIP = 3.3.3.3
因此没有 IPsec 时:
1 2 3 4 5 6 7 8 Outer IP: 1.1.1.1 → 3.3.3.3 Protocol = GRE 47 GRE Inner IP: 10.1.1.10 → 10.2.2.20
GRE over IPsec Transport Mode:
1 2 3 4 5 6 7 8 9 10 11 12 Outer IP: 1.1.1.1 → 3.3.3.3 Protocol = ESP 50 ESP Header GRE Header Inner IP: 10.1.1.10 → 10.2.2.20 Data ESP Trailer / Auth Data
这里不会固定存在:
这样额外的一层 IP Header。
Tunnel IP 主要参与 Overlay Routing、NHRP、控制流量和 Next-Hop 逻辑。
DMVPN Phase 3 配置骨架 不同 IOS / IOS XE 版本的具体语法可能有所差异,以下用于理解结构。
Hub:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 interface Tunnel0 ip address 172.16.0.1 255.255.255.0 no ip redirects ip nhrp authentication DMVPN ip nhrp network-id 100 ip nhrp map multicast dynamic ip nhrp redirect tunnel source GigabitEthernet0/0 tunnel mode gre multipoint tunnel protection ipsec profile DMVPN-PROFILE
Spoke:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 interface Tunnel0 ip address 172.16.0.2 255.255.255.0 no ip redirects ip nhrp authentication DMVPN ip nhrp network-id 100 ip nhrp nhs 172.16.0.1 ip nhrp map 172.16.0.1 2.2.2.2 ip nhrp map multicast 2.2.2.2 ip nhrp shortcut tunnel source GigabitEthernet0/0 tunnel mode gre multipoint tunnel protection ipsec profile DMVPN-PROFILE
关键配置对应关系:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 tunnel mode gre multipoint → mGRE ip nhrp nhs → 指定 NHS / Hub ip nhrp map → Tunnel IP ↔ NBMA ip nhrp redirect → Phase 3 Hub ip nhrp shortcut → Phase 3 Spoke tunnel protection ipsec profile → 使用 IPsec 保护 DMVPN
常用 Show 命令 Underlay:
1 2 3 show ip interface brief show ip route <NBMA> ping <remote-NBMA> source <local-NBMA>
Tunnel / DMVPN:
1 2 show interfaces tunnel0 show dmvpn
NHRP:
Routing / CEF:
1 2 3 show ip route show ip route <business-prefix> show ip cef <destination> detail
IKE / IPsec:
1 2 3 show crypto ikev2 sa show crypto ipsec sa show crypto session
重点观察 IPsec Counter:
1 2 3 4 encaps encrypt decaps decrypt
推荐排错顺序 不要试图一次记住几十条命令。
先记住“分层”:
1 2 3 4 5 6 7 8 9 10 11 1. Underlay ↓ 2. Tunnel / mGRE ↓ 3. IKE / IPsec ↓ 4. NHRP / DMVPN ↓ 5. Routing / Shortcut ↓ 6. Business Traffic
实际问题中部分步骤可以根据现象调整,但核心思想始终是:
从底层依赖向上排,不要一开始就在所有协议配置里乱找。
1. Underlay 检查:
1 2 3 4 物理接口是否 up/up NBMA IP / Mask 是否正确 到 Remote NBMA 是否存在正确 Underlay Route NBMA 是否可达
2. Tunnel / mGRE 检查:
1 2 3 4 Tunnel IP Tunnel Source tunnel mode gre multipoint Tunnel 状态
3. IKE / IPsec 先看:
IKE 不起来检查:
1 2 3 4 5 6 7 8 Peer IKE Version Encryption Integrity Authentication DH Group PSK / Certificate Lifetime
然后:
检查:
1 2 3 4 5 6 IPsec SA Proposal / Transform Traffic Selector ESP PFS encrypt/decrypt counters
注意:
1 2 3 IKE Integrity ≠ 业务数据已经自动拥有完整性保护
IKE SA 与 IPsec SA 是不同安全上下文。
4. NHRP / DMVPN
检查:
1 2 3 4 5 Spoke 是否成功注册 NHS 是否正确 Tunnel IP ↔ NBMA Mapping 是否正确 Peer 状态 Shortcut 是否形成
5. Routing / Shortcut 检查:
1 2 3 4 Business Prefix 是否存在 Next-Hop 是否合理 Return Route 是否存在 CEF 是否使用预期 Shortcut
并特别防止:
1 2 Remote NBMA / Tunnel Endpoint → 反过来通过 Tunnel 本身到达
即 GRE Recursive Routing。
6. Business Traffic 最后真正测试:
检查:
1 2 3 4 5 6 7 正向路由 返回路由 ACL / Firewall IPsec Selector MTU / MSS / Fragmentation 实际 Ping / Traceroute IPsec encrypt/decrypt counters
Tunnel IP Ping 成功:
并不能证明:
1 10.1.1.0/24 ↔ 10.2.2.0/24
业务一定正常。
核心总结 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 GRE = 封装 = 不加密 IPsec = 安全保护 IKE = 协商 + Peer Authentication + 建立 SA ESP = 保护真正的数据流量 NAT-T = ESP over UDP/4500 = 让 IPsec 更好地穿越 NAT/PAT mGRE = 一个 Tunnel Interface 动态对应多个 NBMA Peer NHRP = Tunnel / Overlay IP → NBMA IP DMVPN = mGRE + NHRP + Routing + 可选 IPsec
DMVPN 三阶段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Phase 1 Spoke → Hub → Spoke Phase 2 真实 Spoke Next-Hop → NHRP → Spoke-to-Spoke Phase 3 路由即使仍指向 Hub → Redirect → Resolution → Shortcut → Spoke-to-Spoke
数据平面的核心分工:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Routing / CEF 回答: “这个业务目的应该交给哪个 Overlay Peer / Shortcut?” NHRP 回答: “这个 Overlay/Tunnel Peer 对应哪个 NBMA?” mGRE 回答: “如何根据这个 NBMA 封装发出去?” Underlay 回答: “如何真正把 Outer IP Packet 送到那个 NBMA?” IPsec 回答: “如何安全地把这些数据送过去?”
最终排错不要背成几十个零散检查项,而要始终抓住:
1 2 3 4 5 6 7 8 9 10 11 Underlay ↓ Tunnel / mGRE ↓ IKE / IPsec ↓ NHRP ↓ Routing / CEF / Shortcut ↓ Business Traffic
先判断坏在哪一层,再进入那一层查具体配置。