路由工具
{Back to Index}  

Table of Contents

1 Passive Interface

why_passive_infterface.png

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 调整路由协议的管理距离实现数据分流

adjust_ad_topo.png

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 调整管理距离解决双点双向重分发存在的次优问题

adjust_ad2_topo.png

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 配置

route-map.png

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

route-map-example.png

3.4.2 不同网段走不同的路由

route-map-experiment2.png

4 Distribute List

4.1 作用位置

因为分发列表是针对路由信息进行过滤,因此对于距离矢量型协议(EIGRP/RIP)支持较好(直接作用于接口),对于 OSPF 而言,作用点会有点变化。

换句话说,分发列表用于 EIGRP/RIP 时,必须指定接口,而 OSPF不需要指定接口。

4.1.1 距离矢量型

dl-place1.png

4.1.2 链路状态型

dl-place2.png

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 指的是掩码最大长度
  1. 如没有 ge, le ,则掩码长度就是 length
  2. 如没有 le ,则 le 默认为 32
  3. 如没有 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 数据分流

offset_list_experiment.png

Figure 9: 实验需求

offset_list_topo.png

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
    

Author: Hao Ruan (ruanhao1116@gmail.com)

Created: 2021-05-02 Sun 15:46

Updated: 2021-10-13 Wed 00:16

Emacs 27.1 (Org mode 9.3)