这是我参与更文挑战的第18天,活动详情查看: 更文挑战
地址前缀列表与ACL的区别
ACL和地址前缀列表都可以对路由进行筛选,ACL匹配路由时只能匹配路由的网络号,但无法匹配掩码,也就是前缀长度;而地址前缀列表比ACL更为灵活,可以匹配路由的网络号及掩码,增强了路由匹配的精确度。
如图所示,R1和R2运行OSPF,R1把192.168.0.0的静态路由导入到OSPF中,我们分别使用ACL和地址前缀列表来看有什么不同
在R1上写入两条静态路由模拟直连的网段
ip route-static 192.168.0.0 255.255.0.0 NULL0
ip route-static 192.168.0.0 255.255.255.0 NULL0
配置ACL
acl number 2000
rule 5 permit source 192.168.0.0 0.0.255.255
配置route-policy
route-policy 1 permit node 10
if-match acl 2000
通过route-policy把静态路由导入OSPF
[R1-ospf-1]import-route static route-policy 2
在R2上查看导入结果,我们可以看到路由表中发现有2条192.168.0.0网段的路由,说明2条路由都被引入了。这是由于ACL 2001规则rule permit source 192.168.0.0 0.0.255.255中,0.0.255.255实际上是通配符,而不是掩码长度。
所谓通配符,就是指换算成二进制后,“0”表示需要匹配,“1”表示不需要匹配。例如192.168.0.0 0.0.255.255表示匹配网络号192.168.0.0~192.168.255.255,192.168.0.0/16和192.168.0.0/24都能成功匹配ACL 2001,因此这2条路由匹配了route-policy的节点10,都被引入了。ACL无法实现只匹配192.168.0.0/16或者只匹配192.168.0.0/24,ACL只能匹配网络号,无法匹配掩码
接下来,我们尝试用地址前缀列表对引入的路由进行过滤,看是否能实现引入192.168.0.0/16这1条路由,过滤掉192.168.0.0/24。
[R1-ospf-1]undo import-route static
配置地址前缀列表
ip ip-prefix 1 index 10 permit 192.168.0.0 16
通过route-policy把静态路由导入OSPF
[R1-ospf-1]import-route static route-policy 2
配置完成后,在R2上查看路由表,成功实现了只引入192.168.0.0/16这1条路由