04 路由策略(2020.0511)

路由引入

为什么需要配置路由引入?

部署不同路由协议的机构合并;采用不同厂商的协议;同一设备同一协议但不同进程的配置
不同的网络使用不同的协议,并且这些网络需要共享路由信息:1. 简单的网络可以使用RIP,2. 网络类型复杂的可以选用OSPF,3. 大型骨干网络一般选用ISIS
网络协议的限制,比如使用拨号链路连接两个ISIS网络,而在拨号链路上是不适合运行ISIS协议的;需要配置静态路由,然后将静态路由引入ISIS

路由引入的本质:把其他协议(或者同一协议不同进程)学习到的路由表,以及运行该协议的直连引进到本协议的数据库,例如将OSPF的路由引入RIP,会将下面两条命令显示所有的OSPF的路由全部引入RIP:dis ip rou pro ospf(对应第一句话)dis ospf int(对应第二句话)

路由引入需要注意开销值的变化

  • 引入OSPF或者ISIS路由到RIP时,如果不指定COST,开销值默认是1。应该手工配置开销值以反映网络的真实拓扑
  • 引入OSPF默认为1
  • 引入ISIS,narrow时默认为64,wide为10,即引入ISIS路由之前一般需要先更改ISIS的cost-type
  • 思科设备将其他协议引入距离矢量协议时默认开销值是无穷大,因此必须要加开销值

路由引入导致的次优路径

路由引入导致的次优路径
解决方法

  1. 使用filter-policy过滤。ISIS数据库中还有4.4.4.4,但是ISIS路由表没有4.4.4.4。此方法能解决次优路径问题,但是导致没有备份路由(冗余),所以该方法不可取
  2. 修改路由协议的优先级。即将ISIS的优先级的值修改为100以上,使得RIP优选,例如isis && preference 101;或者修改RIP的优先级,将RIP的优先级修改为15以下rip && preference 14。此方法如果在RTC上将ISIS引入RIP的路由,会导致RTB方位RTA的次优路径,此时可以通过以下命令解决
# RTB 
acl 2003
rule permit source 14.1.1.0 0.0.0.255
rule permit source 4.4.4.4 0
q
route-policy PRE-RIP
if-match acl 2003
apply preference 14
q
rip
preference route-policy PRE-RIP

不同设备不同协议的优先级

协议\设备 思科 华为 Juniper
直连 0 0 0
OSPF内部 110 10 10
ISIS 115 15 15(可以更细化)
静态 1 60 5
RIP 120 100 100
OSPF外部 110 150 150
iBGP 200 255 170
eBGP 20 255 150
EIGRP 内部90,外部170 - -

路由过滤

作用

  1. 避免路由引入导致的次优路由
  2. 避免路由回馈导致的路由环路
    路由回馈:从本协议出去的路由,又重新回到本协议,有可能会产生环路
  3. 进行精确的路由引入和路由通告控制

规则

  1. 可以在出方向过滤路由
    只能过滤路由信息,链路状态信息是不能被过滤的;对OSPF来说,只能过滤3/5/7类路由
  2. 可以在入方向上过滤路由
    对于链路状态路由协议,仅仅是不把路由加入到路由表中(filter-policy)
  3. 可以过滤从其他路由协议引入的路由
    只能在出方向过滤,可以在ASBR重分布时操作或者在某节点使用filter-policy;在入方向过滤是没有意义的
  4. 可以使用filter-policy进行过滤,也可以使用ip-prefix进行过滤

路由协议的迁移

有时候,需要使用新的路由协议来取代原有网络中的路由协议,而且要尽可能减小协议迁移时的网络中断时间。比如原来网络使用OSPF协议,现在要迁移到ISIS协议,可以在每台路由器上同时运行这两种路由协议,适当调整两种路由协议的优先级,使得在最初的时候ISIS只在后台运行,在对ISIS的邻居关系以及LSDB等参数经过仔细检查之后,对ISIS的优先级进行修改,从而使得ISIS取代当前运行的路由协议
方法步骤:

  1. 此时网络中值运行OSPF,执行硬件和软件检查并进行升级,确保软件和硬件能够支持迁移
  2. 配置ISIS,设置合适的优先级,保证ISIS只在后台运行,从而在每台路由器上都建立了ISIS链路状态数据库,但路由表和转发表不变。在这个阶段对ISIS的运行情况进行验证,只有当每台路由器都建立了LSDB并且数据库中存在所有预期的LSP,同时已确认可以产生反映当前IP路由表中路由的ISIS路由时,这个阶段可以结束
  3. 改变优先级,使得ISIS取代原来的OSPF,在前台运行
  4. 网络运行正常后,把OSPF删除

路由协议发布缺省路由

所有路由协议都可以下发缺省路由

  • OSPF可以配置多种下发方式
    • 在ABR上下发
    • 在ASBR上下发
    • 强制下发
    • 非强制下发
      OSPF路由下放
  • ISIS没有命令实现OSPF的非强制下发功能,但是可以通过路由策略来实现

路由选择工具

访问控制列表ACL

用于匹配路由信息或者数据包地址,过滤不符合条件的路由信息和数据包
访问控制列表是由permit|deny语句组成的一系列有顺序的规则,这些规则根据源地址、目的地址、端口号等来描述

按照访问控制列表的用途,可以分为三类:

  • 基本访问控制列表:匹配源IP
  • 高级访问控制列表:匹配源IP、目的IP、源端口、目的端口、协议号
  • 基于接口的访问控制列表:匹配接口

访问控制类别的使用用途是依靠数字的范围来指定的

  • 1000~1999:基于接口的访问控制列表
  • 2000~2999:基本访问控制列表
  • 3000~3999:高级访问控制列表

匹配顺序

acl number 2001 match-order auto|config

  • 配置顺序(config,默认方式)
    按照用户胚子ACL规则的先后进行匹配
  • 自动排序(auto)
    使用“深度优先”的原则,“深度优先”是把指定范围最小的语句排在最前面

前缀列表ip-prefix

匹配对象为路由信息的目的地址或者直接作用于路由器对象gateway

  • 前缀列表用来过滤IP前缀,能同时匹配前缀号和前缀长度
  • 前缀列表的性能比访问控制列表高
  • 前缀列表不能用于数据包的过滤(不能用于IP报文的过滤,只能用于路由信息的过滤

实例

  1. ip ip-prefix test index 10 permit 10.0.0.0 16 greater-equal 24 less-equal 28前缀号必须是10.0(16定义的范围),前缀长度取值区间[24,28],满足条件的如10.0.1.0/24、10.0.2.0/25、10.0.2.192/26等
  2. ip ip-prefix pre index 10 permit 10.1.0.0 24没有great,没有less就等于24
  3. ip ip-prefix pre index 10 permit 10.1.0.0 16 greater-equal 24没有Less,那么less就等于32,即 great 24 less 32
  4. ip ip-prefix pre permit 10.1.0.0 16 less-equal 32没有great,那么great就等于掩码16
  5. ip ip-prefix pre permit 0.0.0.0 0 greater-equal 32 less-equal 32放行所有的主机路由 32
  6. ip ip-prefix pre permit 0.0.0.0 1 greater-equal 8 less-equal 8放行所有的A类路由
  7. ip ip-prefix pre permit 128.0.0.0 2 greater-equal 16 less-equal 16匹配所有的B类路由
  8. ip ip-prefix pre permit 192.0.0.0 3 greater-equal 24 less-equal 24匹配所有的C类路由

怎么理解这里的“1/2/3”需要匹配的前缀呢?

128=10 00 0000 , /2 意思是说【最前面的“10”这两个位不可以变,可以变的是后面剩下的“6个位”,“10 11 1111=191”】而且这里ge/le=16 限定了mask=16(B类地址)。所以地址为:128.0.0.0-191.255.255.255 /16
192=110 0 0000 ,/3 不能表的意思是说【最前面的“110”这两个位不可以变,可以变的是后面剩下的“5个位”、“110 1 1111=223”】而且这里ge/le=24 限定了mask=24(C类地址) 。所以地址为:192.0.0.0-223.255.255.255 /24
mask=0 //匹配前面的0位
mask=1 //匹配前面的第一位1
mask=2 //匹配前面的第一位和第二位 以此类推!!!

路由策略

主要用于路由过滤和路由属性的设置等,从而影响流量所经过的路径,主要通过route-policy实现,设定匹配规则,由if-match和apply子句组成

  • 一个routing-policy下可以有多个节点,不同的节点号用node标识,不同node各个部分之间的关系是“”的关系,按照顺序依次匹配路由策略的节点
  • 每个节点下可以有多个if-match和apply子句,if-match子句之间是“”的关系
  • 允许模式:当路由项满足该节点的所有if-match子句时,将被允许通过该节点的过滤并执行该节点的apply子句,如路由项不满足该节点的if-match子句,将试图匹配路由策略的下一个节点
  • 拒绝模式:当路由项满足该节点的所有if-match子句时,将被拒绝通过该节点的过滤,并且不会继续下一个节点的测试
  • if-match子句可以引用其它的过滤工具

路由策略原理

路由策略原理

自治系统路径信息访问列表as-path-filter

仅用于BGP协议,匹配BGP路由信息的自治系统路径域

  • 该列表用来过滤BGP的as-path属性
  • as-path属性使用正则表达式来定义,举例:
    • 匹配所有as-path属性:ip as-path-filter 10 permit .*
    • 匹配从AS100发起的路由:ip as-path-filter 10 permit _100$
    • 匹配从AS200接收的路由:ip as-path-filter 10 permit ^200_

团体属性列表Community-filter

仅用于BGP协议,匹配BGP路由信息的自治系统团体域

  • 团体列表使用团体属性表示和过滤BGP路由
  • 团体列表有基本和高级两种
    • 基本团体列表用来匹配实际的团体属性值和常量
      • ip community-filter 1 permit 100:1 100:2
      • ip community-filter 1 permit 100:1
      • ip community-filter 1 permit no-export
    • 高级团体列表可以使用正则表达式
      • ip community-filter 100 permit ^10

策略路由PBR

  • 策略路由是一种依据用户制定的策略进行报文转发路径选择的机制,与单纯依照IP报文的目的地址查找路由表进行转发不同,可应用于安全、QoS、负载分担等目的
  • 策略路由支持基于ACL、报文长度等信息,来灵活地指定数据包的转发路径
  • 在华为设备上策略路由可以分为三种:
    • 本地发起的流量:在全局下调用,只能影响源于本地的流量,即仅对本机下发的报文进行处理,对转发的报文不起作用。一条本地策略路由可以配置多个策略点,并且这些策略点具有不同的优先级,本机下发报文优先匹配优先级高的策略点。
    • 接口应用的流量:只对转发的报文起作用,对本地下发的报文(比如本地的Ping报文)不起作用
    • 智能策略路由:(模拟器不支持)基于业务需求的策略路由,通过匹配链路质量和网络业务对链路质量的需求,实现智能选路

配置基于ACL简化的策略路由

配置基于ACL简化流策略的策略路由,将报文重定向到指定远程下一条

traffic-redirect acl 3001 remote 10.1.30.1 global inbound
# traffic-redirect nexthop命令用来将报文重定向到单个下一跳IP地址的动作
# 全局调用
traffic-redirect acl 3001 nexthop 10.1.1.1 global inbound 
# 接口下调用
int g0/0/0
traffic-redirect acl 3001 nexthop 10.1.1.1 inbound 
# vlan下调用
vlan 100
traffic-redirect acl 3001 nexthop 10.1.1.1 inbound 

实验

实验一:路由引入

路由引入
# AR1
sys
sys AR1
int lo 0
int 1.1.1.1 32
int g0/0/0
ip addr 12.1.1.1 24
int g0/0/1
ip addr 15.1.1.1 24
int g0/0/2
ip addr 16.1.1.1 24
q 
router-id 1.1.1.1
ospf 10
net 1.1.1.1 0.0.0.0
net 12.1.1.1 0.0.0.0
int g0/0/0
ospf nework-type p2p
q
rip
version 2
undo summary
net 1.0.0.0
net 15.0.0.0
q
isis
net 47.0167.111111111111.00
int g0/0/2
isis enable
int lo 0
isis enable
q
rip 
import-route ospf 10
q
isis
import-route rip
# AR2
sys
sys AR2
int lo 0
int 2.2.2.2 32
int g0/0/1
ip addr 12.1.1.2 24
int g0/0/0
ip addr 192.168.10.2 24
q 
router-id 2.2.2.2
ospf 10
net 2.2.2.2 0.0.0.0
net 12.1.1.2 0.0.0.0
net 192.168.10.2 0.0.0.0
int g0/0/0
ospf nework-type p2mp
int g0/0/1
ospf nework-type p2p
# AR3
sys
sys AR3
int lo 0
int 3.3.3.3 32
int g0/0/0
ip addr 192.168.10.3 24
q 
router-id 3.3.3.3
ospf 10
net 3.3.3.3 0.0.0.0
net 192.168.10.3 0.0.0.0
int g0/0/0
ospf nework-type p2mp
# AR4
sys
sys AR4
int lo 0
int 4.4.4.4 32
int g0/0/0
ip addr 192.168.10.4 24
q 
router-id 4.4.4.4
ospf 10
net 4.4.4.4 0.0.0.0
net 192.168.10.4 0.0.0.0
int g0/0/0
ospf nework-type p2mp
# AR5
sys
sys AR5
int lo 0
ip addr 5.5.5.5 32
int lo 10
ip addr 50.50.50.50 32
int g0/0/0
ip addr 15.1.1.5 24
rip
version 2
undo summary
net 5.0.0.0
net 15.0.0.0
net 50.0.0.0
# AR6
sys
sys AR6
int lo 0
int 6.6.6.6 32
int g0/0/0
ip addr 16.1.1.6 24
int g0/0/1
ip addr 67.1.1.6 24
isis
is-level level-2
net 47.0167.666666666666.00
int lo 0
isis enable
int g0/0/0
isis enable
int g0/0/1
isis enable
# AR7
sys
sys AR6
int lo 0
int 7.7.7.7 32
int g0/0/0
ip addr 67.1.1.7 24
isis
is-level level-2
net 47.0167.777777777777.00
int lo 0
isis enable
int g0/0/0
isis enable

实验二:PBR

PBR
# ........................预配置
# AR1
sys
sys AR1
int g0/0/2 
ip addr 192.168.10.254 24
int g2/0/0
ip addr 192.168.20.254 24
int g0/0/0
ip addr 12.1.1.1 24
int g0/0/1
ip addr 13.1.1.1 24
ospf 10 route 1.1.1.1
net 12.1.1.1 0
net 13.1.1.1 0
net 192.168.10.0 0.0.0.255
net 192.168.20.0 0.0.0.255
silent-interface g0/0/2
silent-interface g2/0/0
# AR2
sys
sys AR2
int g0/0/0
ip addr 12.1.1.2 24
int g0/0/1
ip addr 24.1.1.2 24
ospf 10 route 2.2.2.2
net 12.1.1.2 0
net 24.1.1.2 0
# AR3
sys
sys AR3
int g0/0/0
ip addr 13.1.1.3 24
int g0/0/1
ip addr 34.1.1.3 24
ospf 10 route 3.3.3.3
net 13.1.1.3 0
net 34.1.1.3 0
# AR4
sys
sys AR4
int g0/0/0
ip addr 24.1.1.4 24
int g0/0/1
ip addr 34.1.1.4 24
int g0/0/1
ip addr 45.1.1.4 24
ospf 10 route 4.4.4.4
net 24.1.1.4 0
net 34.1.1.4 0
net 45.1.1.4 0
# AR5
sys
sys AR5
int lo 0
ip addr 5.5.5.5 32
int g0/0/0
ip addr 45.1.1.5 24
ospf 10 route 5.5.5.5
net 5.5.5.5 0
net 45.1.1.5 0
# AR7
sys
sys AR7
int g0/0/0
ip addr 192.168.10.20 24
q
ip route-static 0.0.0.0 0 192.168.10.254
# AR8
sys
sys AR8
int g0/0/0
ip addr 192.168.20.10 24
q
ip route-static 0.0.0.0 0 192.168.20.254
# PC1 
192.168.10.10/24,192.168.10.254
# PC2
192.168.20.20/24,192.168.20.254
# ..................................基于本地的策略路由
# 要求:
# 环回口10-10.10.10.11的流量走AR2;环回口11-10.10.10.12的流量走AR3
# AR1
int lo 10
ip addr 10.10.10.11 32
ospf  en area 0
int lo 11
ip addr 10.10.10.12 32
ospf  en area 0
q

acl 2001
rule permit source 10.10.10.11 0
acl 2002
rule permit source 10.10.10.12 0
policy-based-route PBR permit node 10
if-match acl 2001
apply ip-address next-hop 12.1.1.2
policy-based-route PBR permit node 20
if-match acl 2002
apply ip-address next-hop 13.1.1.3
q

ip local policy-based-route PBR  # 在全局下,本地策略路由的调用

# 测试
tracert -a 10.10.10.11 5.5.5.5
tracert -a 10.10.10.12 5.5.5.5
# ..................................基于接口的策略路由
# 要求:
# PC1和AR8的流量走AR2;PC2和AR7的流量走AR3
# AR1
acl 2003
rule permit source  192.168.10.10 0
rule permit source  192.168.20.10 0
acl 2004
rule permit source  192.168.10.20 0
rule permit source  192.168.20.20 0
q
traffic classifier C1    # 定义流量分类
if-match acl 2003
traffic classifier C2
if-match acl 2004
traffic behavior B1   # 定义流量行为
redirect ip-nexthop 12.1.1.2
traffic behavior B2
redirect ip-nexthop 13.1.1.3
traffic policy PBR_10  # 进行流量和行为的关联
classifier C1 behavior B1
classifier C2 behavior B2
int g0/0/2       # 在接口上调用
traffic-policy PBR_10 inbound
int g2/0/0
traffic-policy PBR_10 inbound
# 查看
# AR1
dis traffic-policy applied-record
# 测试
# AR7/8
tracert 5.5.5.5

实验三:防火墙+策略路由

防火墙+策略路由
#................................初始化配置
# AR1
sys
sys AR1
int g0/0/1
ip addr 172.16.1.1 24
int g0/0/0
ip addr 10.1.1.1 24
ip route-static 192.168.10.0 24 10.1.1.2
# AR-Border
sys
sys Border
int g0/0/0
ip addr 10.1.1.2 24
int g0/0/1
ip addr 12.1.1.1 24
int g0/0/2
ip addr 21.1.1.1 24
int g2/0/0
ip addr 192.168.10.1 24
q
ip route-static 0.0.0.0 0 10.1.1.1
# FW1
admin
admin@123
# 修改密码为huawei@123
sys
sys FW
int g1/0/0
ip addr 12.1.1.2 24
service-manage ping permit # 放行ping流量
int g1/0/1
ip addr 21.1.1.2 24
service-manage ping permit
q
firewall zone trust # 将接口加入信任区域(zone)
add int g1/0/1
q
firewall zone untrust  # 将接口加入不信任区域(zone)
add int g1/0/0
q
ip route-static 0.0.0.0 0 21.1.1.1 # 配置默认路由
security-policy # 配置安全策略
rule name Permit_http_icmp_ftp
source-zone untrust
destination-zone trust
source-address 172.16.1.0 24
destination-address 192.168.10.0 24
action permit

# 策略路由,使用防火墙
# AR-Border
acl 3001
rule permit tcp destination 192.168.10.0 0.0.0.255 destination-port eq ftp
rule permit tcp destination 192.168.10.0 0.0.0.255 destination-port eq www
rule permit tcp destination 192.168.10.0 0.0.0.255 destination-port eq telnet
rule permit icmp destination 192.168.10.10 0
q
traffic classifier C1
if-match acl 3001
q
traffic behavior B1
redirect ip-nexthop 12.1.1.2 
q
traffic policy P1
classifier C1 behavior B1
int g0/0/0
traffic-policy P1 inbound