network 命令的两个前提
Cisco IOS 的 network 命令不是「凭空宣告」,而是「把本机路由表中已有的路由交给 BGP 发布」。它要求配置的前缀与掩码在路由表中完全一致地存在,并且该条目已被成功选入路由表。任一条件不满足,命令不报错但不会有任何路由被宣告,这类静默失败是常见坑点。
基本信息
| 条件一 | 路由表中存在前缀与掩码完全一致的路由 |
|---|---|
| 条件二 | 该路由已被采用并安装,而非挂起或被抑制 |
| 掩码写法 | network x.x.x.x mask y.y.y.y,省略掩码时按有类网络处理 |
| 默认路由 | network 0.0.0.0 需配合一条默认路由存在 |
| 对比重分发 | redistribute 按来源整批引入,控制力弱但省事 |
典型使用场景
- 发布稳定的业务网段:静态或直连路由已存在,用 network 精确宣告
- 发布默认路由:边界设备产生默认路由后,用 network 0.0.0.0 宣告给内部邻居
- 配合 Null0 汇总:先写汇总静态再用 network 发布该汇总前缀
- 排障对照:确认前缀为何没有对外发布时,先查路由表是否存在完全相同条目
- 迁移收敛:把重分发引入的路由逐条改为 network,提升可控性
配置与验证
配置与验证
# 前提:路由表中先有该前缀(直连或静态)
ip route 10.10.10.0 255.255.255.0 10.0.0.2
!
router bgp 65001
network 10.10.10.0 mask 255.255.255.0
network 192.0.2.0 mask 255.255.255.0
!
# 验证:确认标记与来源
show ip bgp 10.10.10.0
show ip route 10.10.10.0
show ip bgp neighbors 10.0.0.2 advertised-routes查看标记读法
| 标记 | 含义 | 处理提示 |
|---|---|---|
| > | 当前最优路径 | 无此标记说明没有胜出 |
| * | 有效可用路径 | 配合 > 表示正被使用 |
| r | RIB 失败,未能装入路由表 | 多为下一跳不可达 |
| i | 由 iBGP 学到的内部路径 | 注意下一跳解析 |
| ? | ORIGIN 为 incomplete | 来自重分发引入 |
宣告不生效的定位步骤
宣告不生效的定位步骤
# 1) 路由表是否有完全匹配的条目
show ip route 10.10.10.0
# 2) 掩码是否一致(/25 与 /24 不匹配)
show ip route | include 10.10.10.0
# 3) BGP 表中是否出现该前缀
show ip bgp 10.10.10.0
# 4) 是否被出方向策略过滤
show ip bgp neighbors 10.0.0.2 advertised-routes省略掩码的 network 命令按有类网络理解:network 10.0.0.0 实际宣告的是 10.0.0.0/8。这在现代组网中几乎总是与预期不符,配置子网时务必显式写出掩码。