NULL口是个伪接口(pseudo-interface),不能配地址,也不能被封装,它总是UP的,但是从来不转发或者接受任何通信量,对于所有发到该接口的通信量都直接丢弃。
比如说A和B是邻居
A连了三个网络192.168.1.0/24 192.168.2.0/24 192.168.3.0/24
然后在A上做了汇总192.168.0.0/16
A把这个汇总路由传给B
然后B传过来一个包,目的是192.168.4.0/24
如果,不是汇总到NULL0接口,看其过程:先分条细细匹配192.168.1.0/24 192.168.2.0/24 192.168.3.0/24,由于匹配不到,则匹配汇总路由192.168.0.0/16,则根据最长匹配原则,该分组与汇总路由匹配,那就出现了一种现象,如果这路由器有默认路由,则此包会沿默认路由转发分组。
解决方法一:
A交给B的汇总为:192.168.0.0/22 192.168.0.1--192.168.3.254 这样细化后,B就不会把192.168.4.0/24的包给A,但是这个方法有漏洞,因为掩码的使用多一位和少一位可用的地址变化较大。
解决方法二:
如果有了NULL0接口,看其过程,看其过程:先分条细细匹配192.168.1.0/24 192.168.2.0/24 192.168.3.0/24,由于匹配不到,则被转发到NULL0接口(注意,不是再来跟汇总路由匹配),而转发到NULL0,它就被丢弃或者到了比特桶(bit bucket,路由器确定的被丢弃比特(被丢弃的分组)的目的地),避免产生了以上的环路。
推荐用的方法:在B上的动态路由学习到了192.168.1.0/24 192.168.2.0/24 192.168.3.0/24的明细路由,再在B上写一条静态路由
192.168.0.0 255.252.0.0 null0 当数据包到B时,会根据最长掩码匹配原则去找路,当有去192.168.4.0/24 时,找完24位的掩码后都没有找到下一跳,这时会匹配静态路由,丢弃数据包。
转载于:https://blog.51cto.com/hciewd/1163222