路由工具
{Back to Index}
Table of Contents
1 Passive Interface
Figure 1: 无意义的 Hello 数据包
从上图中可知,由于 192.168.1.0/24
网段需要被 OSPF 域的路由器知道,因此被宣告进了 OSPF ,
然而当 Fa0/0
口一旦激活 OSPF ,该接口就会尝试发送 Hello 包以便发现链路上的 OSPF 邻居,但是该链路上连接的都是主机,这些 Hello 包实际上是多余的。
因此 Passive Interface 主要用于既希望别的路由器学习到自身的网段,又不希望某些接口上向外发送无意义的协议包。不同协议对该功能的定义略有不同:
RIP/IGRP
在指定接口不向外发送路由更新, 但是接收路由更新 。
EIGRP
在指定接口不向外发送 Hello 消息,而且这个接口不与其他路由器建立邻接关系,不发送其他 EIGRP 数据包。
OSPF
在指定接口不向外发送 Hello 消息,而且这个接口不与其他路由器建立邻接关系,不发送和接收路由信息。
2 控制管理距离
2.1 常见协议管理距离
协议 | AD |
---|---|
直连 | 0 |
静态路由 | 1 |
EIGRP 汇总路由 | 5 |
外部 BGP | 20 |
内部 EIGRP | 90 |
IGRP | 100 |
OSPF | 110 |
RIP | 120 |
外部 EIGRP | 170 |
内部 BGP | 200 |
2.2 实验
2.2.1 调整路由协议的管理距离实现数据分流
Figure 2: 实验拓扑与需求
R3 的初始配置
R3#show running-config interface lo0 Building configuration... Current configuration : 96 bytes ! interface Loopback0 ip address 11.11.11.3 255.255.255.0 ip ospf network point-to-point # 这能使得环回地址在传递中保留掩码信息,否则传递的是 32 位主机号 end R3#show running-config interface lo1 Building configuration... Current configuration : 93 bytes ! interface Loopback1 ip address 1.1.1.3 255.255.255.0 ip ospf network point-to-point end R3#show running-config | section ospf ip ospf network point-to-point ip ospf network point-to-point router ospf 1 network 1.1.1.0 0.0.0.255 area 0 network 10.1.23.0 0.0.0.255 area 0 network 11.11.11.0 0.0.0.255 area 0
R2 的初始路由信息
R2#show ip route Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets D 1.1.1.0 [90/409600] via 10.1.12.1, 00:09:38, Ethernet0/0 # 来自 EIGRP 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks C 10.1.12.0/24 is directly connected, Ethernet0/0 L 10.1.12.2/32 is directly connected, Ethernet0/0 C 10.1.23.0/24 is directly connected, Ethernet0/1 L 10.1.23.2/32 is directly connected, Ethernet0/1 11.0.0.0/24 is subnetted, 1 subnets D 11.11.11.0 [90/409600] via 10.1.12.1, 00:09:27, Ethernet0/0 # 来自 EIGRP
在 R2 上进行配置
R2(config)#access-list 1 permit 11.11.11.0 R2(config)#router eigrp 100 R2(config-router)#distance 130 10.1.12.1 0.0.0.0 1
观察 R2 的路由变化
R2#show ip route Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets D 1.1.1.0 [90/409600] via 10.1.12.1, 00:00:06, Ethernet0/0 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks C 10.1.12.0/24 is directly connected, Ethernet0/0 L 10.1.12.2/32 is directly connected, Ethernet0/0 C 10.1.23.0/24 is directly connected, Ethernet0/1 L 10.1.23.2/32 is directly connected, Ethernet0/1 11.0.0.0/24 is subnetted, 1 subnets O 11.11.11.0 [110/11] via 10.1.23.3, 00:00:06, Ethernet0/1
验证
R2#ping 11.11.11.3 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 11.11.11.3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms R2#ping 11.11.11.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 11.11.11.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) R2#ping 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms R2#ping 1.1.1.3 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.3, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
2.2.2 调整管理距离解决双点双向重分发存在的次优问题
Figure 3: 实验拓扑
实验的原理是通过改变发布过来的路由信息的 AD 值,将隐形路由浮现出来。
R1 上的初始路由表(R2 和 R3 做完双向重分布后)
R1#show ip route | begin Gateway Gateway of last resort is not set 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks C 1.1.1.0/24 is directly connected, Loopback0 L 1.1.1.1/32 is directly connected, Loopback0 4.0.0.0/24 is subnetted, 1 subnets O E2 4.4.4.0 [110/2] via 10.1.12.2, 00:19:27, Ethernet0/0 # 只有一个方向 10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks C 10.1.12.0/24 is directly connected, Ethernet0/0 L 10.1.12.1/32 is directly connected, Ethernet0/0 C 10.1.13.0/24 is directly connected, Ethernet0/1 L 10.1.13.1/32 is directly connected, Ethernet0/1 O E2 10.1.24.0/24 [110/2] via 10.1.12.2, 00:24:40, Ethernet0/0 O E2 10.1.34.0/24 [110/2] via 10.1.13.3, 00:20:39, Ethernet0/1
R3 上进行配置
R3(config)#access-list 10 permit 4.4.4.0 R3(config)#router rip R3(config-router)#distance 100 10.1.34.4 0.0.0.0 1 R3#show ip route | begin Gateway Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets O 1.1.1.0 [110/11] via 10.1.13.1, 00:40:47, Ethernet0/0 4.0.0.0/24 is subnetted, 1 subnets R 4.4.4.0 [100/1] via 10.1.34.4, 00:00:09, Ethernet0/1 # 变为 RIP 通告的了 10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks R 10.1.12.0/24 [100/2] via 10.1.34.4, 00:00:09, Ethernet0/1 C 10.1.13.0/24 is directly connected, Ethernet0/0 L 10.1.13.3/32 is directly connected, Ethernet0/0 R 10.1.24.0/24 [100/1] via 10.1.34.4, 00:00:09, Ethernet0/1 C 10.1.34.0/24 is directly connected, Ethernet0/1 L 10.1.34.3/32 is directly connected, Ethernet0/1
在 R2 上也进行类似的配置。
观察 R1 的路由
R1#show ip route | begin Gateway Gateway of last resort is not set 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks C 1.1.1.0/24 is directly connected, Loopback0 L 1.1.1.1/32 is directly connected, Loopback0 4.0.0.0/24 is subnetted, 1 subnets O E2 4.4.4.0 [110/2] via 10.1.13.3, 00:01:04, Ethernet0/1 [110/2] via 10.1.12.2, 00:01:04, Ethernet0/0 10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks C 10.1.12.0/24 is directly connected, Ethernet0/0 L 10.1.12.1/32 is directly connected, Ethernet0/0 C 10.1.13.0/24 is directly connected, Ethernet0/1 L 10.1.13.1/32 is directly connected, Ethernet0/1 O E2 10.1.24.0/24 [110/2] via 10.1.13.3, 00:01:04, Ethernet0/1 [110/2] via 10.1.12.2, 00:01:04, Ethernet0/0 O E2 10.1.34.0/24 [110/2] via 10.1.13.3, 00:01:04, Ethernet0/1
3 Route Map
3.1 配置
Figure 4: route-map
- 使用
route-map
这个全局配置命令创建一个 route-map ,表明是否要对符合匹配的报文进行 策略路由 。 可以在一个 route-map 下定义多个序列号。序列号在进行匹配动作时具有优先顺序。 - 如果符合匹配且 允许位 (permit) 被置位,则报文使用策略路由;如果 拒绝位 (deny) 被置位,则不使用策略路由。
- permit/deny 关键字在不同部署场合中所用有所不同。
3.2 特点
- 每个序列号语句相当于于访问控制列表中的各行
- 默认使用 permit 关键字,默认序列号为 10 ,序列号不会自动递增,定义新条目需要指定序列号,否则覆盖 10 号条目
- 隐含 deny any
- 单条 match 语句包括多个条件时,使用逻辑
or
运算;多条 match 语句时,使用逻辑and
运算
3.3 常见应用场景
- 重分发期间进行路由过滤与执行策略
- PBR (策略路由)
- NAT
- BGP
3.4 实验
3.4.1 重发布时为不同的路由设定不同的 metric
3.4.2 不同网段走不同的路由
4 Distribute List
4.1 作用位置
因为分发列表是针对路由信息进行过滤,因此对于距离矢量型协议(EIGRP/RIP)支持较好(直接作用于接口),对于 OSPF 而言,作用点会有点变化。
换句话说,分发列表用于 EIGRP/RIP 时,必须指定接口,而 OSPF不需要指定接口。
4.1.1 距离矢量型
4.1.2 链路状态型
in 方向时,作用于从 DB 提交 路由表的时刻。OSPF 不太常用 out 方向的分发列表, 除了做重发布的时候 (因为是本地始发的 LSA5 路由)。
5 ACL
5.1 通配符
共 32bits,分为 4 段,每段 8bits ,以点分十进制表示,用来简化 ACL 的书写。 0 表示要匹配,1 表示无所谓。
5.2 标准 ACL
5.2.1 针对数据
只能基于源 IP 地址。
R1(config)#access-list 1 deny 172.16.12.1 0.0.0.0 ! 通配符如不写,默认就是 0.0.0.0 R1(config)#access-list 1 permit any R1(config)#int s1/0 R1(config-if)#ip access-group 1 out ! 接口下调用
注意 ,出接口挂 ACL 对于 始发流量 不生效, 只是针对穿越流量。
5.2.2 针对路由
只能匹配前缀,不能匹配掩码。
例子1:
access-list 1 deny 3.3.3.0 access-list 1 permit any ! router eigrp 90 distribute-list 1 in s1/0
例子2:
access-list 1 permit 3.3.3.0 ! router-map A permit 10 match ip address 1 set tag 30 ! router eigrp 90 redistribute connected route-map A
5.3 扩展 ACL
可以基于源 IP 地址,目的 IP 地址,协议号,端口号。
5.3.1 针对数据
access-list 100 permit <协议> <源IP> <通配符> <目的IP> <通配符>
access-list 100 deny icmp 172.16.12.1 0.0.0.0 3.3.3.3 0.0.0.0 ! no ping access-list 100 deny tcp 172.16.12.1 0.0.0.0 3.3.3.3 0.0.0.0 eq 23 ! no telnet access-list 100 permit ip any any
5.3.2 针对路由
既能匹配前缀,也能匹配掩码。
access-list 100 permit <协议> <前缀> <前缀通配符> <掩码> <掩码通配符>
100.1.1.0/25 => 100.1.00000001.0 100.1.3.0/25 => 100.1.00000011.0 100.1.9.0/25 => 100.1.00001001.0 100.1.11.0/25 => 100.1.00001011.0 ------------------------------------ 前缀: 100.1.00000001.0 => 100.1.1.0 (相同是几就是几,不同为0) 通配符: 0.0.00001010.0 => 0.0.10.0 (相同为0,不同为1) || || \/ access-list 100 permit ip 100.1.1.0 0.0.10.0 255.255.255.128 0.0.0.0 route-map AA permit 10 match ip address 100 set community no-advertise !
6 Prefix List
既能匹配前缀,又能匹配掩码。
- length 与掩码无关,指的是前 length 固定,掩码只与 ge ,le 有关
- ge 指的是掩码最小长度
- le 指的是掩码最大长度
- 如没有 ge, le ,则掩码长度就是 length
- 如没有 le ,则 le 默认为 32
- 如没有 ge ,则 ge 默认为 length
给定路由,推算前缀列表:
192.168.0.0/24 192.168.00000000.0 192.168.1.0/24 192.168.00000001.0 192.168.2.0/24 192.168.00000010.0 192.168.3.0/24 192.168.00000011.0 -------------------------------------------------- 192.168.000000xx.0 (192.168.0.0/22 ge 24 le 24)
给定前缀列表,推算路由:
192.168.12.0/22 ge 24 le 25 192.168.00001100.00000000 ------------------------------------------------- 192.168.000011 192.168.000011xx. (掩码=24的变化情况) 192.168.000011xx.x (掩码=25的变化情况)
6.1 配置示例
6.1.1 匹配 A 类路由
A 类地址首位固定为 0
ip prefix-list pxlist 0.0.0.0/1 le 32
6.1.2 匹配 A 类主类路由
ip prefix-list pxlist 0.0.0.0/1 ge 8 le 8
6.1.3 匹配 B 类路由
B 类地址首位固定为 10
ip prefix-list pxlist 128.0.0.0/2 le 32
6.1.4 匹配 C 类路由
C 类地址首位固定为 110
ip prefix-list pxlist 192.0.0.0/3 le 32
6.1.5 匹配特定路由
ip prefix-list pxlist 192.168.1.0/24
6.1.6 匹配默认路由
ip prefix-list pxlist permit 0.0.0.0/0
6.1.7 匹配除默认路由外的所有路由
ip prefix-list pxlist permit 0.0.0.0/0 ge 1
6.1.8 匹配所有路由
ip prefix-list list1 permit 0.0.0.0/0 le 32
6.1.9 匹配所有主机路由
ip prefix-list pxlist permit 0.0.0.0/0 ge 32
6.1.10 匹配所有路由(any)
ip prefix-list list1 permit 0.0.0.0/0 le 32
7 Offset List
用于在入站或出站时 增大 通过 EIGRP 或 RIP 获悉的路由的度量值。
7.1 实验
7.1.1 数据分流
Figure 9: 实验需求
Figure 10: 实验拓扑
R3 最初的路由信息
R3#show ip route | begin Gateway Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets R 1.1.1.0 [120/1] via 192.168.23.2, 00:00:08, Ethernet0/1 [120/1] via 192.168.13.1, 00:00:15, Ethernet0/0 # 负载均衡 11.0.0.0/24 is subnetted, 1 subnets R 11.11.11.0 [120/1] via 192.168.23.2, 00:00:08, Ethernet0/1 [120/1] via 192.168.13.1, 00:00:15, Ethernet0/0 # 负载均衡 192.168.13.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.13.0/24 is directly connected, Ethernet0/0 L 192.168.13.3/32 is directly connected, Ethernet0/0 192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.23.0/24 is directly connected, Ethernet0/1 L 192.168.23.3/32 is directly connected, Ethernet0/1 R3#
在 R1 和 R2 上分别配置
R1#show running-config | s rip router rip version 2 offset-list 1 out 4 offset-list 11 out 7 Ethernet0/0 network 1.0.0.0 network 11.0.0.0 network 192.168.13.0 no auto-summary
R2#show running-config | s rip router rip version 2 offset-list 11 out 4 offset-list 1 out 7 Ethernet0/0 network 1.0.0.0 network 11.0.0.0 network 192.168.23.0 no auto-summary
观察 R3 的路由变化
R3#show ip route | begin Gateway Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets R 1.1.1.0 [120/5] via 192.168.13.1, 00:00:08, Ethernet0/0 # 下一跳 R1 11.0.0.0/24 is subnetted, 1 subnets R 11.11.11.0 [120/5] via 192.168.23.2, 00:00:05, Ethernet0/1 # 下一跳 R2 192.168.13.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.13.0/24 is directly connected, Ethernet0/0 L 192.168.13.3/32 is directly connected, Ethernet0/0 192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.23.0/24 is directly connected, Ethernet0/1 L 192.168.23.3/32 is directly connected, Ethernet0/1