距离矢量算法基于Bellman-Ford算法,每个路由器维护一个距离矢量表,包含到所有目标网络的距离和下一跳信息。
距离矢量计算公式:
D(i,j) = min{D(i,k) + d(k,j)} ∀k ∈ N
其中:
- D(i,j):路由器i到目标网络j的距离
- D(i,k):路由器i到邻居k的距离
- d(k,j):邻居k到目标网络j的距离
- N:所有邻居路由器集合
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| Command | 1 | 1(请求)或2(响应) |
| Version | 1 | RIP版本(1或2) |
| Must Be Zero | 2 | 必须为0 |
| Route Entries | 可变 | 路由条目(最多25个) |
┌─────────┬─────────┬─────────┬─────────┐ │Address │Subnet │Next Hop │Metric │ │Family │Mask │ │ │ │(2 bytes)│(4 bytes)│(4 bytes)│(4 bytes)│ └─────────┴─────────┴─────────┴─────────┘ │Route Tag│ │ │ │ │(2 bytes)│ │ │ │ └─────────┴─────────┴─────────┴─────────┘
更新计时器(30秒)
失效计时器(180秒)
抑制计时器(180秒)
刷新计时器(240秒)
从某个接口接收到的路由信息,不会再从该接口发送出去
接口A收到路由:192.168.1.0/24 via B 则接口A不会将192.168.1.0/24发送给B
从某个接口接收到的路由,会以metric=16(不可达)的方式从该接口发送
接口A收到路由:192.168.1.0/24 via B 则接口A会发送192.168.1.0/24 metric=16给B
当路由标记为不可达时,在抑制时间内不接受该路由的更好度量值
当路由发生变化时,立即发送更新,而不等待下一个更新周期
Command字段值:1 作用:向邻居请求路由信息 发送时机:路由器启动、定期查询
Command字段值:2 作用:发送路由信息给邻居 发送时机:定期更新、触发更新
┌─────────┬─────────┬─────────┬─────────┐ │Command │Version │Must Be │Route │ │(1 byte) │(1 byte) │Zero(2) │Entries │ └─────────┴─────────┴─────────┴─────────┘ │ │ │ │ │ │ Route Entry 1 (20 bytes) │ │ │ │ │ │ ├─────────┼─────────┼─────────┼─────────┤ │Address │ │ │Metric │ │Family │Must Be │Must Be │(4 bytes)│ │(2 bytes)│Zero(2) │Zero(4) │ │ └─────────┴─────────┴─────────┴─────────┘ │ │ │ │ │ │ Route Entry 2 (20 bytes) │ │ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘ │ │ │ │ │ │ ... (最多25个路由条目) │ │ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘
| 字段名 | 长度 | 值/含义 | 详细说明 |
|---|---|---|---|
| Command | 1字节 | 1或2 | 1=Request请求,2=Response响应 |
| Version | 1字节 | 1 | RIP版本号,RIPv1固定为1 |
| Must Be Zero | 2字节 | 0 | 必须为0,用于未来扩展 |
| Address Family | 2字节 | 2 | 地址族标识,2表示IP |
| Route Tag | 2字节 | 0 | RIPv1中未使用,必须为0 |
| IP Address | 4字节 | 网络地址 | 目标网络的IP地址 |
| Must Be Zero | 4字节 | 0 | RIPv1中必须为0 |
| Must Be Zero | 4字节 | 0 | RIPv1中必须为0 |
| Metric | 4字节 | 1-16 | 跳数,16表示不可达 |
┌─────────┬─────────┬─────────┬─────────┐ │Command │Version │Must Be │Route │ │(1 byte) │(1 byte) │Zero(2) │Entries │ └─────────┴─────────┴─────────┴─────────┘ │ │ │ │ │ │ Route Entry 1 (20 bytes) │ │ │ │ │ │ ├─────────┼─────────┼─────────┼─────────┤ │Address │Route │IP │Subnet │ │Family │Tag │Address │Mask │ │(2 bytes)│(2 bytes)│(4 bytes)│(4 bytes)│ └─────────┴─────────┴─────────┴─────────┘ ├─────────┼─────────┼─────────┼─────────┤ │Next Hop │Metric │ │ │ │(4 bytes)│(4 bytes)│ │ │ └─────────┴─────────┴─────────┴─────────┘ │ │ │ │ │ │ Route Entry 2 (20 bytes) │ │ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘
| 字段名 | 长度 | 值/含义 | 详细说明 |
|---|---|---|---|
| Command | 1字节 | 1或2 | 1=Request请求,2=Response响应 |
| Version | 1字节 | 2 | RIP版本号,RIPv2为2 |
| Must Be Zero | 2字节 | 0 | 必须为0,用于未来扩展 |
| Address Family | 2字节 | 2 | 地址族标识,2表示IP |
| Route Tag | 2字节 | 可变 | 路由标记,用于区分外部路由 |
| IP Address | 4字节 | 网络地址 | 目标网络的IP地址 |
| Subnet Mask | 4字节 | 子网掩码 | 支持VLSM和CIDR |
| Next Hop | 4字节 | 下一跳IP | 指定下一跳路由器地址 |
| Metric | 4字节 | 1-16 | 跳数,16表示不可达 |
路由器A启动 → 发送Request报文 → 邻居路由器B响应 Request报文内容: - Command: 1 (Request) - Version: 2 - 包含一个特殊路由条目:Address Family = 0, Metric = 16
每30秒发送Response报文 Response报文内容: - Command: 2 (Response) - Version: 2 - 包含完整的路由表(最多25条路由)
路由变化时立即发送Response报文 触发更新条件: - 路由metric变化 - 路由变为不可达 - 新路由学习到
/* RIPv2 Response报文示例 */
Frame 1: 72 bytes on wire
Ethernet II: 00:1a:2b:3c:4d:5e -> ff:ff:ff:ff:ff:ff
Internet Protocol: Src: 192.168.1.1, Dst: 224.0.0.9
User Datagram Protocol: Src Port: 520, Dst Port: 520
Routing Information Protocol:
Command: Response (2)
Version: RIPv2 (2)
Must be zero: 0000
Address family: IP (2)
Route tag: 0
IP address: 192.168.2.0
Subnet mask: 255.255.255.0
Next hop: 0.0.0.0
Metric: 1
错误现象:RIPv1路由器收到RIPv2报文 处理方式:丢弃报文,记录错误日志 解决方案:统一RIP版本配置
错误现象:MD5认证密钥不匹配 处理方式:丢弃报文,计数器增加 解决方案:检查认证配置
错误现象:Address Family不为2 处理方式:跳过该路由条目 解决方案:检查路由器配置
距离矢量算法基于Bellman-Ford算法: 1. 每个路由器维护距离表D(i,j) 2. D(i,j)表示从路由器i到目标j的最短距离 3. 通过邻居交换距离信息更新路由表 4. 使用松弛操作逐步优化路径
初始状态: Router A: D(A,B)=∞, D(A,C)=∞ Router B: D(B,A)=∞, D(B,C)=1 Router C: D(C,A)=1, D(C,B)=∞ 第一次交换: A收到B的更新:D(A,B)=1, D(A,C)=2 B收到A的更新:D(B,A)=1, D(B,C)=1 C收到B的更新:D(C,B)=2, D(C,A)=1 收敛完成: 所有路由器获得正确的距离信息
四个关键计时器的协调机制: 1. Update Timer (30秒) - 触发定期更新 - 保证路由信息同步 2. Invalid Timer (180秒) - 检测路由失效 - 6个更新周期无响应则标记失效 3. Hold-down Timer (180秒) - 防止路由震荡 - 抑制期间不接受该路由的更新 4. Flush Timer (240秒) - 清理无效路由 - 8个更新周期后彻底删除 计时器关系: Update < Invalid < Hold-down < Flush
/* 水平分割原理 */ 接口A收到路由:Network X via Router B 原理:从A学到的路由,不再从A发送给B 目的:防止A→B→A的路由环路 /* 毒性逆转原理 */ 接口A收到路由:Network X via Router B 原理:从A发送Network X给B时,metric设为16 目的:明确告知B该路由不可达 /* 抑制计时器原理 */ 路由标记为不可达时,启动抑制计时器 原理:抑制期间不接受该路由的任何更新 目的:防止路由表频繁变化 /* 触发更新原理 */ 检测到路由变化时立即发送更新 原理:不等下一个更新周期 目的:加快收敛速度
错误做法:死记硬背配置命令
正确方法:理解每个命令的作用原理
学习建议:先懂原理再记命令
错误做法:直接跳到高级配置
正确方法:打好理论基础
学习建议:循序渐进,不要急于求成
错误做法:只看书不动手
正确方法:理论实践相结合
学习建议:每个概念都要实验验证
错误做法:只学RIP不懂其他协议
正确方法:建立完整知识体系
学习建议:对比学习,理解差异
/* 理论掌握程度检验 */ □ 能够详细解释RIP工作原理 □ 理解距离矢量算法机制 □ 掌握计时器协同工作 □ 明白防环机制原理 □ 能够对比RIP不同版本 /* 实践能力检验 */ □ 能够独立配置RIP网络 □ 能够排查常见故障 □ 能够优化RIP性能 □ 能够设计RIP网络架构 □ 能够混合部署多种协议 /* 综合应用检验 */ □ 能够分析实际网络需求 □ 能够选择合适的路由协议 □ 能够制定网络迁移策略 □ 能够进行性能调优 □ 能够实施安全加固
/* 启用RIP路由协议 */ Router(config)# router rip /* 配置RIP版本 */ Router(config-router)# version 2 /* 宣告网络 */ Router(config-router)# network 192.168.1.0 Router(config-router)# network 10.0.0.0 /* 关闭自动汇总 */ Router(config-router)# no auto-summary /* 启用RIP认证 */ Router(config-router)# version 2 Router(config-if)# ip rip authentication mode md5 Router(config-if)# ip rip authentication key-chain RIP_KEY /* 配置被动接口 */ Router(config-router)# passive-interface fastethernet 0/0 /* 配置单播更新 */ Router(config-router)# neighbor 192.168.1.2 /* 配置默认路由注入 */ Router(config-router)# default-information originate
/* ==================== Router R1 配置 ==================== */ [R1] sysname R1 [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24 [R1-GigabitEthernet0/0/0] quit [R1] interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1] ip address 192.168.13.1 24 [R1-GigabitEthernet0/0/1] quit [R1] interface Loopback0 [R1-Loopback0] ip address 1.1.1.1 32 [R1-Loopback0] quit /* 配置RIP协议 */ [R1] rip [R1-rip-1] version 2 [R1-rip-1] undo summary [R1-rip-1] network 192.168.12.0 [R1-rip-1] network 192.168.13.0 [R1-rip-1] network 1.0.0.0 /* ==================== Router R2 配置 ==================== */ [R2] sysname R2 [R2] interface GigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24 [R2-GigabitEthernet0/0/0] quit [R2] interface GigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24 [R2-GigabitEthernet0/0/1] quit [R2] interface Loopback0 [R2-Loopback0] ip address 2.2.2.2 32 [R2-Loopback0] quit /* 配置RIP协议 */ [R2] rip [R2-rip-1] version 2 [R2-rip-1] undo summary [R2-rip-1] network 192.168.12.0 [R2-rip-1] network 192.168.23.0 [R2-rip-1] network 2.0.0.0 /* ==================== Router R3 配置 ==================== */ [R3] sysname R3 [R3] interface GigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0] ip address 192.168.13.3 24 [R3-GigabitEthernet0/0/0] quit [R3] interface GigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1] ip address 192.168.23.3 24 [R3-GigabitEthernet0/0/1] quit [R3] interface Loopback0 [R3-Loopback0] ip address 3.3.3.3 32 [R3-Loopback0] quit /* 配置RIP协议 */ [R3] rip [R3-rip-1] version 2 [R3-rip-1] undo summary [R3-rip-1] network 192.168.13.0 [R3-rip-1] network 192.168.23.0 [R3-rip-1] network 3.0.0.0
/* ==================== 密钥链配置 ==================== */ [R1] key chain RIP_AUTH [R1-key-chain] key 1 [R1-key-chain-key-1] authentication-mode md5 cipher Huawei@123 [R1-key-chain-key-1] quit /* ==================== 接口认证配置 ==================== */ [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] rip authentication-mode md5 RIP_AUTH [R1-GigabitEthernet0/0/0] quit /* R2和R3同样配置 */ [R2] key chain RIP_AUTH [R2-key-chain] key 1 [R2-key-chain-key-1] authentication-mode md5 cipher Huawei@123 [R2-key-chain-key-1] quit [R2] interface GigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0] rip authentication-mode md5 RIP_AUTH [R2-GigabitEthernet0/0/0] quit
/* ==================== 手动汇总配置 ==================== */ [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] rip summary 172.16.0.0 255.255.0.0 [R1-GigabitEthernet0/0/0] quit /* ==================== RIPv2自动汇总关闭 ==================== */ [R1] rip [R1-rip-1] undo summary /* ==================== 汇总验证命令 ==================== */ display ip routing-table protocol rip display rip interface display rip database
/* ==================== 被动接口配置 ==================== */ [R1] rip [R1-rip-1] passive-interface GigabitEthernet0/0/1 /* 或者在接口模式下配置 */ [R1] interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1] undo rip output [R1-GigabitEthernet0/0/1] rip input /* ==================== 验证被动接口 ==================== */ display rip interface display current-configuration | include rip
/* 方法1:静态默认路由 + RIP重分布 */ [R1] ip route-static 0.0.0.0 0.0.0.0 192.168.1.254 [R1] rip [R1-rip-1] import-route static /* 方法2:RIP默认路由注入 */ [R1] rip [R1-rip-1] default-information originate /* 方法3:接口默认路由 */ [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] rip default-route
/* ==================== OSPF到RIP重分布 ==================== */ [R1] ospf 1 [R1-ospf-1] import-route rip cost 10 [R1] rip [R1-rip-1] import-route ospf 1 cost 5 /* ==================== 静态路由重分布 ==================== */ [R1] ip route-static 10.0.0.0 255.255.255.0 192.168.1.1 [R1] rip [R1-rip-1] import-route static cost 3 /* ==================== 直连路由重分布 ==================== */ [R1] rip [R1-rip-1] import-route direct cost 1 /* ==================== 路由过滤 ==================== */ [R1] rip [R1-rip-1] filter-policy ip-prefix RIP_FILTER import [R1-rip-1] filter-policy ip-prefix RIP_FILTER export /* IP前缀列表定义 */ [R1] ip ip-prefix RIP_FILTER index 10 permit 10.0.0.0 24 less-equal 32 [R1] ip ip-prefix RIP_FILTER index 20 deny 0.0.0.0 0 less-equal 32
/* ==================== 计时器配置 ==================== */ [R1] rip [R1-rip-1] timers rip 20 120 60 240 /* 参数说明: */ /* 20 - 更新计时器(Update Timer) */ /* 120 - 失效计时器(Invalid Timer) */ /* 60 - 抑制计时器(Hold-down Timer) */ /* 240 - 刷新计时器(Flush Timer) */ /* ==================== 验证计时器 ==================== */ display rip display current-configuration | include timers
/* 默认支持4条等价路径 */ [R1] rip [R1-rip-1] maximum load-balancing 6 /* 验证负载均衡 */ display ip routing-table 10.0.0.0 verbose
/* ==================== VLAN接口RIP配置 ==================== */ [Switch] vlan batch 10 20 30 [Switch] interface Vlanif10 [Switch-Vlanif10] ip address 192.168.10.1 24 [Switch-Vlanif10] rip version 2 multicast [Switch-Vlanif10] quit [Switch] interface Vlanif20 [Switch-Vlanif20] ip address 192.168.20.1 24 [Switch-Vlanif20] rip version 2 multicast [Switch-Vlanif20] quit /* ==================== 三层交换机RIP配置 ==================== */ [Switch] rip [Switch-rip-1] version 2 [Switch-rip-1] network 192.168.10.0 [Switch-rip-1] network 192.168.20.0
/* ==================== 基础检查命令 ==================== */ display rip /* 查看RIP基本信息 */ display rip database /* 查看RIP数据库 */ display rip interface /* 查看RIP接口状态 */ display ip routing-table protocol rip /* 查看RIP路由表 */ /* ==================== 调试命令 ==================== */ debugging rip packet /* 调试RIP报文 */ debugging rip event /* 调试RIP事件 */ terminal debugging /* 开启终端调试 */ terminal monitor /* 开启终端监控 */ /* ==================== 统计信息 ==================== */ display rip statistics /* 查看RIP统计信息 */ display ip interface brief /* 查看接口状态 */ display current-configuration | include rip /* 查看RIP配置 */ /* ==================== 连通性测试 ==================== */ ping 192.168.12.2 /* 测试邻居连通性 */ tracert 192.168.23.3 /* 跟踪路由路径
故障现象:display rip interface显示邻居为down 排查步骤: 1. ping邻居IP地址 2. 检查接口IP配置 3. 确认RIP版本一致 4. 检查网络宣告是否正确 5. 验证认证配置 解决方案: [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] undo shutdown [R1-GigabitEthernet0/0/0] rip version 2 multicast
故障现象:部分网络路由缺失 排查步骤: 1. 检查源端路由表 2. 确认网络宣告 3. 检查路由过滤 4. 验证metric值 5. 检查ACL配置 解决方案: [R1] rip [R1-rip-1] undo filter-policy ip-prefix FILTER import [R1-rip-1] network 10.0.0.0
| 特性 | RIP | OSPF | EIGRP |
|---|---|---|---|
| 算法类型 | 距离矢量 | 链路状态 | 混合型 |
| 度量值 | 跳数 | 成本 | 带宽+延迟 |
| 收敛速度 | 慢 | 快 | 很快 |
| 网络规模 | 小型(15跳) | 大型 | 大型 |
| 配置复杂度 | 简单 | 复杂 | 中等 |
| 资源消耗 | 低 | 高 | 中等 |
| 厂商支持 | 所有厂商 | 所有厂商 | Cisco私有 |
/* ==================== RIP到OSPF迁移 ==================== */ /* 阶段1:在边界路由器配置OSPF */ [R1] ospf 1 [R1-ospf-1] area 0 [R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255 /* 阶段2:配置路由重分布 */ [R1] ospf 1 [R1-ospf-1] import-route rip cost 10 [R1] rip [R1-rip-1] import-route ospf 1 cost 5 /* 阶段3:逐步迁移其他路由器 */ [R2] ospf 1 [R2-ospf-1] area 0 [R2-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255 /* 阶段4:移除RIP配置 */ [R1] undo rip [R2] undo rip
┌─────────────────┐ OSPF ┌─────────────────┐
│ 核心层 │◄──────────►│ 汇聚层 │
│ OSPF Area 0 │ │ OSPF Area 1 │
└─────────────────┘ └─────────────────┘
▲ ▲
│ 重分布 │ 重分布
▼ ▼
┌─────────────────┐ RIP ┌─────────────────┐
│ 接入层 │◄──────────►│ 分支机构 │
│ RIP │ │ RIP │
└─────────────────┘ └─────────────────┘
/* ==================== 网络拓扑规划 ==================== */ 总部:172.16.0.0/16 分支1:172.17.0.0/16 分支2:172.18.0.0/16 分支3:172.19.0.0/16 /* ==================== 总部路由器配置 ==================== */ [HQ] sysname HQ_Router [HQ_Router] interface GigabitEthernet0/0/0 [HQ_Router-GigabitEthernet0/0/0] ip address 10.1.1.1 30 [HQ_Router-GigabitEthernet0/0/0] quit [HQ_Router] interface GigabitEthernet0/0/1 [HQ_Router-GigabitEthernet0/0/1] ip address 10.1.2.1 30 [HQ_Router-GigabitEthernet0/0/1] quit [HQ_Router] interface GigabitEthernet0/0/2 [HQ_Router-GigabitEthernet0/0/2] ip address 10.1.3.1 30 [HQ_Router-GigabitEthernet0/0/2] quit [HQ_Router] rip [HQ_Router-rip-1] version 2 [HQ_Router-rip-1] undo summary [HQ_Router-rip-1] network 10.0.0.0 [HQ_Router-rip-1] network 172.16.0.0 [HQ_Router-rip-1] default-information originate /* ==================== 分支1路由器配置 ==================== */ [Branch1] sysname Branch1_Router [Branch1_Router] interface GigabitEthernet0/0/0 [Branch1_Router-GigabitEthernet0/0/0] ip address 10.1.1.2 30 [Branch1_Router-GigabitEthernet0/0/0] quit [Branch1_Router] interface GigabitEthernet0/0/1 [Branch1_Router-GigabitEthernet0/0/1] ip address 172.17.1.1 24 [Branch1_Router-GigabitEthernet0/0/1] quit [Branch1_Router] rip [Branch1_Router-rip-1] version 2 [Branch1_Router-rip-1] undo summary [Branch1_Router-rip-1] network 10.0.0.0 [Branch1_Router-rip-1] network 172.17.0.0
/* ==================== 计时器优化 ==================== */ [Campus] rip [Campus-rip-1] timers rip 15 90 45 180 /* ==================== 路由汇总配置 ==================== */ [Campus] interface GigabitEthernet0/0/0 [Campus-GigabitEthernet0/0/0] rip summary 192.168.0.0 255.255.252.0 /* ==================== 负载均衡配置 ==================== */ [Campus] rip [Campus-rip-1] maximum load-balancing 8 /* ==================== 被动接口配置 ==================== */ [Campus] rip [Campus-rip-1] passive-interface GigabitEthernet0/0/10 [Campus-rip-1] passive-interface GigabitEthernet0/0/11
/* ==================== 数据中心RIP配置(特殊需求) ==================== */ [DC-Core] rip [DC-Core-rip-1] version 2 [DC-Core-rip-1] undo summary [DC-Core-rip-1] timers rip 10 60 30 120 [DC-Core-rip-1] network 10.10.0.0 [DC-Core-rip-1] network 192.168.100.0 /* 配置快速收敛 */ [DC-Core] interface GigabitEthernet0/0/0 [DC-Core-GigabitEthernet0/0/0] rip fast-reroute /* 配置路由监控 */ [DC-Core] snmp-agent [DC-Core] snmp-agent target-host trap-hostname NMS [DC-Core] snmp-agent target-host trap-address 192.168.100.100
/* ==================== 故障前状态检查 ==================== */ display rip interface display ip routing-table protocol rip /* ==================== 模拟故障 ==================== */ [Router] interface GigabitEthernet0/0/0 [Router-GigabitEthernet0/0/0] shutdown /* ==================== 故障后状态检查 ==================== */ display rip interface display ip routing-table protocol rip display rip statistics /* ==================== 故障恢复 ==================== */ [Router] interface GigabitEthernet0/0/0 [Router-GigabitEthernet0/0/0] undo shutdown /* ==================== 验证恢复 ==================== */ ping 192.168.1.1 display ip routing-table 192.168.1.0 verbose
/* ==================== RIP性能监控脚本 ==================== */
#!/bin/bash
# RIP监控脚本
# 检查RIP邻居状态
check_rip_neighbors() {
echo "=== RIP邻居状态 ==="
display rip interface | grep "State"
}
# 检查路由表变化
check_routing_changes() {
echo "=== 路由表变化 ==="
display ip routing-table protocol rip | wc -l
}
# 检查RIP统计信息
check_rip_stats() {
echo "=== RIP统计信息 ==="
display rip statistics
}
# 主监控循环
while true; do
check_rip_neighbors
check_routing_changes
check_rip_stats
sleep 30
done
/* ==================== MD5认证配置 ==================== */ [R1] key chain RIP_SEC [R1-key-chain] key 1 [R1-key-chain-key-1] authentication-mode md5 cipher Secure@2023 [R1-key-chain-key-1] quit [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] rip authentication-mode md5 RIP_SEC /* ==================== TTL安全机制 ==================== */ [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] rip ttl-security hops 1 /* ==================== 访问控制列表过滤 ==================== */ [R1] acl 2000 [R1-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255 [R1-acl-basic-2000] rule 10 deny source any [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] rip authentication-mode md5 RIP_SEC [R1-GigabitEthernet0/0/0] rip filter-policy 2000 import
/* ==================== RIPng基础配置 ==================== */ [R1] ipv6 [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] ipv6 enable [R1-GigabitEthernet0/0/0] ipv6 address 2001:DB8:1::1/64 [R1-GigabitEthernet0/0/0] ripng 1 enable /* ==================== RIPng进程配置 ==================== */ [R1] ripng 1 [R1-ripng-1] import-route direct [R1-ripng-1] import-route static /* ==================== IPv6静态路由 ==================== */ [R1] ipv6 route-static :: 0 2001:DB8:1::2 /* ==================== RIPng验证 ==================== */ display ripng 1 database display ipv6 routing-table protocol ripng
/* ==================== Python自动化脚本示例 ==================== */
#!/usr/bin/env python3
# RIP配置自动化脚本
import paramiko
import time
class RIPConfig:
def __init__(self, host, username, password):
self.host = host
self.username = username
self.password = password
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
def connect(self):
self.ssh.connect(self.host, username=self.username, password=self.password)
self.shell = self.ssh.invoke_shell()
time.sleep(1)
def execute_command(self, command):
self.shell.send(command + '\n')
time.sleep(1)
return self.shell.recv(65535).decode()
def configure_rip(self, networks):
commands = [
'system-view',
'rip',
'version 2',
'undo summary'
]
for network in networks:
commands.append(f'network {network}')
commands.append('quit')
commands.append('quit')
for cmd in commands:
self.execute_command(cmd)
def verify_rip(self):
output = self.execute_command('display rip')
return output
# 使用示例
if __name__ == "__main__":
rip_config = RIPConfig('192.168.1.1', 'admin', 'password')
rip_config.connect()
networks = ['192.168.1.0', '10.0.0.0', '172.16.0.0']
rip_config.configure_rip(networks)
result = rip_config.verify_rip()
print(result)