路由引入
为什么需要配置路由引入?
部署不同路由协议的机构合并;采用不同厂商的协议;同一设备同一协议但不同进程的配置
不同的网络使用不同的协议,并且这些网络需要共享路由信息: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
- 思科设备将其他协议引入距离矢量协议时默认开销值是无穷大,因此必须要加开销值
路由引入导致的次优路径
解决方法:
- 使用
filter-policy
过滤。ISIS数据库中还有4.4.4.4,但是ISIS路由表没有4.4.4.4。此方法能解决次优路径问题,但是导致没有备份路由(冗余),所以该方法不可取 - 修改路由协议的优先级。即将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 | - | - |
路由过滤
作用
- 避免路由引入导致的次优路由
- 避免路由回馈导致的路由环路
路由回馈:从本协议出去的路由,又重新回到本协议,有可能会产生环路 - 进行精确的路由引入和路由通告控制
规则
- 可以在出方向过滤路由
只能过滤路由信息,链路状态信息是不能被过滤的;对OSPF来说,只能过滤3/5/7类路由 - 可以在入方向上过滤路由
对于链路状态路由协议,仅仅是不把路由加入到路由表中(filter-policy) - 可以过滤从其他路由协议引入的路由
只能在出方向过滤,可以在ASBR重分布时操作或者在某节点使用filter-policy;在入方向过滤是没有意义的 - 可以使用filter-policy进行过滤,也可以使用ip-prefix进行过滤
路由协议的迁移
有时候,需要使用新的路由协议来取代原有网络中的路由协议,而且要尽可能减小协议迁移时的网络中断时间。比如原来网络使用OSPF协议,现在要迁移到ISIS协议,可以在每台路由器上同时运行这两种路由协议,适当调整两种路由协议的优先级,使得在最初的时候ISIS只在后台运行,在对ISIS的邻居关系以及LSDB等参数经过仔细检查之后,对ISIS的优先级进行修改,从而使得ISIS取代当前运行的路由协议
方法步骤:
- 此时网络中值运行OSPF,执行硬件和软件检查并进行升级,确保软件和硬件能够支持迁移
- 配置ISIS,设置合适的优先级,保证ISIS只在后台运行,从而在每台路由器上都建立了ISIS链路状态数据库,但路由表和转发表不变。在这个阶段对ISIS的运行情况进行验证,只有当每台路由器都建立了LSDB并且数据库中存在所有预期的LSP,同时已确认可以产生反映当前IP路由表中路由的ISIS路由时,这个阶段可以结束
- 改变优先级,使得ISIS取代原来的OSPF,在前台运行
- 网络运行正常后,把OSPF删除
路由协议发布缺省路由
所有路由协议都可以下发缺省路由
- OSPF可以配置多种下发方式
- 在ABR上下发
- 在ASBR上下发
- 强制下发
- 非强制下发
- 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报文的过滤,只能用于路由信息的过滤)
实例
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等ip ip-prefix pre index 10 permit 10.1.0.0 24
没有great,没有less就等于24ip ip-prefix pre index 10 permit 10.1.0.0 16 greater-equal 24
没有Less,那么less就等于32,即 great 24 less 32ip ip-prefix pre permit 10.1.0.0 16 less-equal 32
没有great,那么great就等于掩码16ip ip-prefix pre permit 0.0.0.0 0 greater-equal 32 less-equal 32
放行所有的主机路由 32ip ip-prefix pre permit 0.0.0.0 1 greater-equal 8 less-equal 8
放行所有的A类路由ip ip-prefix pre permit 128.0.0.0 2 greater-equal 16 less-equal 16
匹配所有的B类路由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
# ........................预配置
# 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