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 真正用于保护数据的协议之一:

1
ESP = IP Protocol 50

注意:

1
ESP ≠ AES

ESP 是安全协议。

AES 是可能被 ESP 使用的加密算法。

例如:

1
2
3
4
5
ESP
↓
AES-CBC
+
HMAC-SHA

或者:

1
2
3
ESP
↓
AES-GCM

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:

1
IP Protocol 50

没有 TCP/UDP Port,穿越 NAT/PAT 时可能出现问题。

NAT-T 将 ESP 封装到:

1
UDP/4500

形成:

1
2
3
4
5
6
7
8
Outer IP

UDP
Src/Dst Port = 4500

ESP

Encrypted Payload

IKE 初始协商通常使用:

1
UDP/500

协议层次必须分清:

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

而:

1
2
UDP 500
UDP 4500

是 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 使用:

1
2
3
mGRE
+
NHRP

解决扩展性问题。

mGRE

mGRE:

一个 Tunnel Interface / 一个 Tunnel IP,可以动态与多个 NBMA Peer 通信。

例如:

1
Spoke1 Tunnel0 = 172.16.0.2

同一个 Tunnel0 可以和:

1
2
3
4
Hub
Spoke2
Spoke3
...

通信。

不是:

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:

1
ip nhrp nhs 172.16.0.1

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 不变:

1
10.1.1.10 → 10.2.2.20

Phase 2

允许:

1
Spoke1 → Spoke2

直接动态 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

即:

1
2
业务路由
→ Hub

第一次流量:

1
2
3
4
5
Spoke1
↓
Hub
↓
Spoke2

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 状态

例如:

1
172.16.0.3 → 3.3.3.3

注意:

Resolution Reply 是“得到答案”,NHRP Mapping/Cache 是“把答案保存下来”。

不是收到 Reply 后再额外发送一次 Mapping 请求。

后续业务数据可以:

1
Spoke1 → Spoke2

直接通信。

典型 Phase 3:

Hub:

1
ip nhrp redirect

Spoke:

1
ip nhrp shortcut

三个 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:

1
10.1.1.10 → 10.2.2.20

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

这里不会固定存在:

1
172.16.0.2 → 172.16.0.3

这样额外的一层 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:

1
show ip 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

先看:

1
show crypto ikev2 sa

IKE 不起来检查:

1
2
3
4
5
6
7
8
Peer
IKE Version
Encryption
Integrity
Authentication
DH Group
PSK / Certificate
Lifetime

然后:

1
show crypto ipsec sa

检查:

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
show ip nhrp
show 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
LAN-A → LAN-B

检查:

1
2
3
4
5
6
7
正向路由
返回路由
ACL / Firewall
IPsec Selector
MTU / MSS / Fragmentation
实际 Ping / Traceroute
IPsec encrypt/decrypt counters

Tunnel IP Ping 成功:

1
ping 172.16.0.3

并不能证明:

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

先判断坏在哪一层,再进入那一层查具体配置。