HCNP Routing&Switching之路由过滤工具Filter-Policy
前文我们了解了路由控制技术中路由策略和路由匹配工具IP-Prefix相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15314262.html;今天我们来聊一聊路由过滤工具Filter-Policy相关话题;
Filter-Policy
Filter-Polciy是一种常用的路由过滤工具,只能过滤路由,无法过滤LSA,不能修改路由属性;它可以直接调用条件工具ACL或IP-Prefix 或者调用route-policy工具;在路由策略里担任着调用工具的角色;我们知道路由的学习是有方向的,相对来说控制路由或过滤路由也是有方向的;我们可以在路由器的出方向或入方向进行路由过滤,最终结果都是将对应路由过滤掉;
距离矢量路由协议中路由过滤
提示:距离矢量路由协议是直接传播的是路由信息,所以我们可以选择在路由发出或入的方向上进行过滤,不管在出或入方向进行过滤,对应最后的结果都是一样的;一般根据现网环境来决定到底是在哪个方向上进行过滤比较好;
提示:距离矢量路由协议中,路由信息是直接传播的,所以在链路途中任意路由器在过滤了某条路由,随后后面的路由器就学习不到对应的路由;比如上图,我们在交换机的路由入方向过滤掉192.168.3.0以后,对应C交换机就学习不到对应192.168.3.0这条路由;当然如果在交换机A的出方向过滤掉192.168.3.0,则随后交换机B和交换机C都学习不到对应192.168.3.0这条路由;
链路状态路由协议中路由过滤---单区域
提示:上图是OSPF单区域里路由过滤的示意图;我们知道链路状态路由协议主要是通过传播LSA,建立数据库,然后通过LSDB数据库结合SPF算法来进行计算路由;所以对于我们要想过滤掉某条路由,我们只能在某个路由器的生成路由信息时来影响,即只能在路由的入方向来过滤某些路由;但是对于ospf来说,在单区域里主要通过1类或2类LSA在整个区域内不泛洪,从而同步LSDB数据库生成路由,我们在区域中某台路由器上进行路由过滤其实不影响其他路由器;原因是单区域里的LSDB数据库是相同的,对应路由是依靠LSDB数据库中的内容算出来的;入上图所示,我们在交换机B上过滤掉10.1.1.0/24这条路由,但对于交换机C来说,它的路由表中还是可以正常学习到10.1.1.0/24的路由;这是因为路由过滤并不能过滤LSA,其次单个区域中的所有路由器的LSDB都是同步的;
链路状态路由协议中路由过滤---多区域---区域间路由
提示:对于多区域,区域间的路由传播主要通过3类LSA;其实3类LSA就是把对应区域里的路由进行打包然后通过3类LSA的格式发送给其他区域;这也意味着如果我们在一个区域的abr上过滤掉某些路由,那么对于它传递给其他区域的路由也就无法学习到对应被过滤掉的路由;其原因是多区域,每个区域的LSDB数据库是不相同的,其次区域间路由通过abr发送3类LSA,对应内容就是abr路由器所在区域的路由信息;如上图,我们在交换机B上的入方向过滤掉10.1.1.0/24这条路由,那么对于交换机B向区域1里交换机c发送的3类LSA里面就没有10.1.1.0/24这条路由;所以交换机C也是学习不到10.1.1.0/24的路由;
链路状态路由协议中路由过滤---多区域---外部引入路由
提示:对于内部ospf的路由还是只能在计算路由信息生成时,即路由学习的入方向进行过滤;对应外部引入的路由,我们可以通过路由发出的方向进行过滤;外部路由引入只所以能够在出方向进行过滤,其主要原因是路由信息实现存在asbr的路由表中,在向其他路由器发送时,是通过路由表中的路由信息,生成对应的5类LSA,所以我们在发出5类LSA时过滤掉路由,对应5类LSA里就不会有对应路由,从而其他路由器也就无法通过5类LSA学习到对应的外部路由;
总结:距离矢量路由协议路由过滤
提示:距离矢量路由协议的路由过滤我们可以在入和出两个方向上进行过滤,因为路由矢量路由协议是直接传播的路由信息;
总结:链路状态路由协议路由过滤
提示:链路状态路由协议路由过滤主要在入方向进行过滤;其主要原因是链路状态路由协议通过传播LSA构建LSDB数据库,而路由过滤只能过滤路由信息,对于LSA它并不能过滤;所以链路状态路由协议中过滤路由,对应LSDB在相同区域里是同步的;我们过滤路由只能在路由的入方向,即通过spf在生成路由时来影响;对于外部路由引入我们是在发出时进行过滤;发出时过滤影响的是所有其他路由器;之所以外部路由能在asbr的出方向过滤,是因为外部路由事先存在ip路由表单中,在发出时过滤,对应生成5类LSA里就不会包含过滤掉的路由,从而其他路由器也就无法通过5类LSA学习到对应ASBR过滤掉的路由;
实验:如下拓扑,配置RIP,使用路由过滤工具Filter-Policy过来路由信息
R1的配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
sys sys R1 int g0/0/0 ip add 12.0.0.1 24 int lo 1 ip add 1.1.1.1 32 int lo 2 ip add 2.2.2.2 32 int lo 3 ip add 3.3.3.3 32 rip 1 ver 2 net 12.0.0.0 net 1.0.0.0 net 2.0.0.0 net 3.0.0.0
R2的配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
sys sys R2 int g0/0/0 ip add 12.0.0.2 24 int lo 1 ip add 4.4.4.4 32 int lo 2 ip add 5.5.5.5 32 int lo 3 ip add 6.6.6.6 32 rip 1 ver 2 net 12.0.0.0 net 4.0.0.0 net 5.0.0.0 net 6.0.0.0
验证:查看R2或R1的路由表,看看是否学习到对方的路由信息?
提示:可以看到在R2上能够正常学习到R1的lo接口路由;
在R2上使用IP-Prefix 工具匹配1.1.1.1/32的路由信息
在R2的rip进程中,路由入方向只允许1.1.1.1/32的路由
验证:查看R2的路由表,看看对应1.1.1./32的路由是否被过滤掉了呢?
提示:可以看到此时R2只能学习到1.1.1.1/32的路由;之前的2.2.2.2和3.3.3.3就被过滤工具Filter-policy工具调用ip-prefix的默认策略给拒绝掉了;这里需要说明一点,filter-policy工具调用ip-prefix作为条件来过滤路由,默认规则是拒绝操作;如果我们需要拒绝某条路由,允许其他路由,我们需要在ip-prefix里写上permit 0.0.0.0 0 less 32;
在R2上新建前缀列表规则,拒绝4.4.4.4/32的路由,允许其他所有路由
在R2的出方向使用路由过滤工具filter-policy调用ip-prefix test1进行路由过滤
验证:在R1上查看路由表,看看对应4.4.4.4的路由是否被过滤掉了呢?
提示:可以看到对应4.4.4.4/32的路由R1没有被学习到,其原因是R2在发送路由信息时通过filter-policy工具调用ip-prefix将4.4.4.4/32的路由拒绝掉了;
实验:如下拓扑,配置ospf,使用filter-policy工具调用ip-prefix进行路由过滤
R3的配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
sys sys R3 int g0/0/0 ip add 34.0.0.3 24 int lo 1 ip add 1.1.1.1 32 int lo 2 ip add 2.2.2.2 32 ospf 1 router-id 3.3.3.3 area 0 net 34.0.0.0 0.0.0.255
R4的配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
sys sys R4 int g0/0/0 ip add 34.0.0.4 24 int g0/0/1 ip add 45.0.0.4 24 ospf 1 router-id 4.4.4.4 area 0 net 34.0.0.0 0.0.0.255 area 1 net 45.0.0.0 0.0.0.255
R5的配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
sys sys R5 int g0/0/0 ip add 45.0.0.5 24 ospf 1 router-id 5.5.5.5 area 1 net 45.0.0.0 0.0.0.255
在R3新建ip-prefix 匹配1.1.1.1/32的路由
在R3上将直连路由注入到ospf中,然后使用路由过滤工具调用ip-prefix 在出方向
验证:查看R4或R5的ospf路由表,看看对应1.1.1.1的路由是否存在路由表?
提示:可以看到在R4学习到的外部路由中就只有1.1.1.1/32的路由,2.2.2.2/32的路由被默认规则给拒绝掉了;
在R4上创建前缀列表匹配1.1.1.1/32路由
在R4的入方向拒绝1.1.1.1/32的路由,看看对应R5是否会受影响?
验证:查看R4的路由表,看看1.1.1.1是否被拒绝?
提示:可以看到R4本地路由表没有1.1.1.1的路由了;这里需要注意一点,链路状态路由协议在入方向过滤路由,只是影响到ip路由表中的路由,并不影响协议路由表;即ospf路由表里还是会有1.1.1.1的路由;
验证:在R5上查看路由表,看看R5是否会受影响?
提示:可以看到R5的ip路由表里还是有1.1.1.1的路由;但是34.0.0.0/24的路由被过滤掉了;其原因是在R4的入方向过滤了1.1.1.1/32,并且没有允许其他路由通过,所以34.0.0.0/24的路由也被过滤掉,然后R4生成3类LSA中就没有34.0.0.0/24的路由,所以到达R5时,对应34.0.0.0/24的路由不会被R5学习到;对应1.1.1.1这个路由,它本身就是R3产生的5类LSA,在全网传播,虽然R4在入方向过滤掉1.1.1.1,但不影响R3发送的5类LSA向R5传播;所以我们在R5上能够看到1.1.1.1的路由,34.0.0.0/24的路由看不到;
通过上述实验可以看到链路状态路由协议在路由入方向过滤路由,只是影响本地到ip路由表里的路由,并不影响其他路由器的路由(本地区域或外部路由);对于外部路由,只有在ASBR出方向过滤时,对应其他路由器才会受到影响;对于区域间路由,如果abr在入方向没有被允许,则后续的其他区域路由器也不会学习到对应区域间的路由;对于abr出方向过滤路由是没有意义的,也不会生效,即出方向过滤路由只针对外部路由引入有效,区域间路由并不会生效;