无编号隧道:它借用哪个地址?
无编号隧道借用另一个接口的地址,使提供方成为依赖。区分外部源、借用身份与路由前缀。
无编号隧道跳过了为逻辑接口虚构子网的步骤,但并没有完全跳过编址。实现仍然需要一个本地 IP 身份,因此它借用另一个已配置接口的地址。这个提供方如今属于你的设计:一旦它的地址变化或接口抖动,隧道的 IP 行为就随之改变。大多数文章把三个决策混在一起,把它们分开就能避免那种看起来正确、却什么都路由不了的配置。
把提供方当作设计选择,而不是语法细节。
三个地址角色,分开看待
外部源是承载隧道报文穿越下层网络的地址,也是对端必须能够到达的地址。借用地址是逻辑接口在报文解封装后进行 IP 处理时使用的身份。受保护前缀是流量应当穿过隧道的 LAN 网段,它们由路由协议通告,而不是由隧道地址通告。把接口标记为无编号,并不会把其中任何一个角色交给另外两个。
这种区分解释了一个常见混淆:借用地址并不会把提供方的整个以太网段交给远端对端。
选择提供方接口
回环接口通常是更好的提供方,因为它的地址稳定、始终在线,并且不依赖任何单条物理链路。从 LAN 接口借用则把隧道与该接口的状态和地址分配绑定在一起,这是另一种运维取舍:在实验室里方便,LAN 重新编址时就变得脆弱。在做出选择之前,先确认平台支持你所构建的隧道类型上的无编号运行。
无论选择哪个提供方,都要把它作为依赖写进变更记录,就放在隧道配置旁边。
配置并回读隧道
下面的示例是 IOS 系列路由器上的多点 GRE 隧道,它借用一个回环接口,并把外部源指向下层接口。NHRP 身份与借用地址相互独立,必须显式配置。
interface Loopback0 ip address 10.255.255.1 255.255.255.255 interface Tunnel0 ip unnumbered Loopback0 tunnel source GigabitEthernet0/0 tunnel mode gre multipoint ip nhrp network-id 100 ! verify show interfaces Tunnel0 | include line protocol|Tunnel source show ip interface brief | include Tunnel|Loopback show ip nhrp
先读接口行:报告 down 的无编号隧道无论借用地址如何都不会路由。然后确认提供方处于 up,且它的地址正是你想要的那个,因为重新编址的回环接口会悄悄改变隧道所呈现的身份。
最后检查受保护前缀的路由表以及隧道之上的邻接关系,因为 正确的接口状态既不能证明两者的可达性。
借用地址不提供什么
DMVPN 需要 NHRP 注册与映射,spoke 之间才能互相解析;无编号线路并不提供这些。认证、允许的转发和返回路由仍然需要,而且路由协议必须先跨越隧道形成邻接,之后才能交换任何前缀。这些环节都可能在接口报告 up 的同时失效,因此验证要从地址走到映射,再走到路由。
命令语法和编址规则也因产品和版本而异,所以要贴合眼前设备的接口模型,而不是照抄另一个平台的配置。目标可能相同,所需命令行却未必。
把提供方、外部源和通告前缀写进隧道的文档,然后增加一项检查:一旦提供方地址变化就大声失败。正是这一项检查,抓住了无编号设计最容易隐藏的失效模式。