Loopback、Null0接口揭秘
Loopback接口
Loopback接口简介
Loopback接口是虚拟接口,大多数平台都支持使用这种接口来模拟真正的接口。这样做的好处是虚拟接口不会像物理接口那样因为各种因素的影响而导致接口被关闭。事实上,将Loopback接口和其他物理接口相比较,可以发现Loopback接口有以下几条优点:
Loopback接口状态永远是up的,即使没有配置地址。这是它的一个非常重要的特性。
Loopback接口可以配置地址,而且可以配置全1的掩码--这样做可以节省宝贵的地址空间。
Loopback接口不能封装任何链路层协议。
对于目的地址不是loopback口,下一跳接口是loopback口的报文,路由器会将其丢弃。对于CISCO路由器来说,可以配置[no] ip unreachable命令,来设置是[否]发送icmp不可达报文,对于VRP来说,没有这条命令,缺省不发送icmp不可达报文 。
Loopback接口的应用
基于以上所述,决定了Loopback接口可以广泛应用在各个方面。其中最主要的应用就是:路由器使用loopback接口地址作为该路由器产生的所有IP包的源地址,这样使过滤通信量变得非常简单。
在远程访问中的应用
使用telnet实现远程访问。
配置telnet,使从该路由器始发的报文使用的源地址是loopback地址。配置命令如下:
ip telnet source-interface Loopback0
使用RCMD实现远程访问。
配置RCMD,使从该路由器始发的报文使用的源地址是loopback地址。配置命令如下:
ip rcmd source-interface Loopback0
在安全方面的应用
在TACACS+中的应用。
配置TACACS+,使从该路由器始发的报文使用的源地址是loopback地址。配置命令如下:
ip tacacs source-interface Loopback0
tacacs-server host 215.17.1.1
可以通过过滤来保护TACACS+服务器--只允许从LOOPBACK地址访问TACACS+端口,从而使读/写日志变得简单,TACACS+日志纪录中只有loopback口的地址,而没有出接口的地址。
在RADIUS用户验证中的应用。
配置RADIUS, 使从该路由器始发的报文使用的源地址是loopback地址。配置命令如下:
ip radius source-interface Loopback0
radius-server host 215.17.1.1
auth-port 1645 acct-port 1646
这样配置是从服务器的安全角度考虑的,可以通过过滤来保护 RADIUS服务器和代理--只允许从LOOPBACK地址访问RADIUS端口,从而使读/写日志变得简单,RADIUS日志纪录中只有loopback口的地址,而没有出接口的地址。
在纪录信息方面的应用
输出网络流量纪录。
配置网络流量输出,使从该路由器始发的报文使用的源地址是loopback地址。配置命令如下:
ip flow-export source Loopback0
Exporting NetFlow records Exporting NetFlow
这样配置是从服务器的安全角度考虑的,可以通过过滤来保护 网络流量收集--只允许从LOOPBACK地址访问指
定的流量端口。
null官方更新地址日志信息方面。
发送日志信息到Unix或者Windows SYSLOG 服务器。路由器发出的日志报文源地址是loopback接口,配置命令如下:
logging source-interface loopback0
这样配置是从服务器的安全角度考虑的,可以通过过滤来保护 SYSLOG服务器和代理--只允许从LOOPBACK地址访问syslog端口,从而使读/写日志变得简单,SYSLOG日志纪录中只有loopback口的地址作为源地址,而不是出接口的地址。
在NTP中的应用
用NTP(网络时间协议)使所有设备的时间取得同步,所有源于该路由器的NTP包都把Loopback地址作为源地址。配置如下:
ntp source loopback0
ntp server 169.223.1.1 source loopback 1
这样做是从NTP的安全角度着想,可以通过过滤来保护NTP系统--只允许从loopback地址来访问NTP端口。NTP将Loopback接口地址作为源地址,而不是出口地址。
在SNMP中的应用
如果使用SNMP(简单网络管理协议),发送traps时将loopback地址作为源地址。配置命令:
snmp-server trap-source Loopback0
snmp-server host 169.223.1.1 community
这样做是为了保障服务器的安全,可以通过过滤来保护SNMP的管理系统--只允许从Loopback接口来访问SNMP端口。从而使得读/写trap信息变得简单。SNMP traps将loopback接口地址作为源地址,而不是出口地址。
在Core Dumps中的应用
如果系统崩溃,有Core dump特性的路由器能够将内存的映像上传到指定的FTP服务器。配置Core dumps使用loopback地址作为源地址。配置命令如下:
ip ftp source-interface loopback 0
exception protocol ftp
exception dump 169.223.32.1
这样的做的好处是保证了Core Dump FTP 服务器的安全,通过过滤能够保护用于core dumps的FTP服务器--只允许从loopback地址访问FTP端口。
这个FTP服务器必须是不可见的。
在TFTP中的应用
通过TFTP从TFTP服务器配置路由器,可以将路由器的配置保存在TFTP服务器,配置TFTP,将loopback地址作为源于该路由器的包的源地址。配置命令如下:
ip tftp source-interface Loopback0
这样做对TFTP服务器的安全是很有好处的:通过过滤来保护存储配置和IOS映像的TFTP服务器--只允许从loopback地址来访问TFTP端口,TFTP服务器必须是不可见的。
在IP unnumbered中的应用
应用IP Unnumbered在点到点链路上就不需要再配置地址了。配置举例:
interface loopback 0
ip address 215.17.3.1 255.255.255.255
interface Serial 5/0
ip unnumbered loopback 0
ip route 215.34.10.0 255.255.252.0 Serial 5/0
在Router ID中的应用
如果loopback接口存在、有IP地址,在路由协议中就会将其用作Router ID,这样比较稳定--loopback接口一直都是up的。
如果loopback接口不存在、或者没有IP地址,Router ID就是最高的IP地址,这样就比较危险--只要是物理地址就有可能down掉。
对于CISCO来说,Router ID是不能配置的,对于VRP来说,Router ID可以配置,那麽我们也可以将Loopback接口地址配成Router ID。
配置BGP
在IBGP配置中使用loopback接口,可以使会话一直进行,即使通往外部的接口关闭了也不会停止。配置举例:
interface loopback 0
ip address 215.17.1.34 255.255.255.255
router bgp 200
neighbor 215.17.1.35 remote-as 200
neighbor update-source loopback 0
Null0接口
Null0接口简介
Null0口是个伪接口(pseudo-interface),不能配地址,也不能被封装,它总是up的,但从不转发或接收任何通信量。
Null0的配置命令
为指定空接口,在全局配置模式下使用下面命令:
interface null 0
任何命令,只要有接口类型这个参数的都可以使用null0接口。 对于CISCO路由器来说,Null接口唯一一条配置命令是[no] ip unrechable,该命令的作用是设置是[否]发送icmp不可达报文,对于VRP来说,没
有这条命令,缺省不发送icmp不可达报文 。
Null0接口的应用
Null0接口从不转发或接收任何通信量,对于所有发到该接口的通信量都直接丢弃,由于它的这个特征,使它被广泛应用。
防止路由环
null接口最典型的使用是用来防止路由环。例如,EIGRP在聚合一组路由时,总是创建一条到NULL接口的路由。
举例如下:
如图所示,一台CISCO AS5200通过ISDN为多个远端站点路由器提供接入服务。在ISDN连接期间通过RADIUS创建到远端局域网的路由。在CISCO AS5200有一条到网关路由器的静态路由,网关路由器通过CISCO AS5200有静态路由到远端局域网,还有到Internet的连接。
当ISDN连接down掉时,从Internet向远端站点传送的包就会走静态路由到CISCO AS5200,而CISCO AS5200会将流量再返回给网关路由器--因为CISCO AS5200已经没有到远端局域网的路由了。网关路由
器再将包发给CISCO AS5200。这个过程会一直重复到TTL计数器超时。由此产生的“包洪水”会使CPU极为繁忙,利用率达到98%以上,从而使远端路由器不能再建连接,直到“风暴”停止。
配置下一跳是null0,目的地址是远端局域网的浮动静态路由命令如下:
ip route 192.168.10.0 255.255.255.0 Null0 200
除非ISDN连接是UP的,否则从网关转发到Cisco AS5200的包会被丢弃。如果连接是UP的,通过RADIUS会创建一条更优的路由,流量也会正常。CPU的负担会骤然降低,路由器能够正常工作。
用于安全方面
null0接口提供了过滤通信量的一个可选的方法,可以通过将不想要的通信量引到空接口,来避免过分涉及访问列表的使用。下面对访问列表和null0做一下比较。
null0和访问列表都可以用于过滤通信量,这两种用法相比,各有裨益。
1、使用null0配置简单,只要将不想要的通信量的下一跳接口配制成null0就
可以了,当路由器收到报文时,直接查转发表,发现下一跳是null0,不做任何处理,直接丢弃。而如
果使用访问列表,首先要配置规则,然后将它应用到接口,当路由器收到报文时,要首先查访问列表的队列,如果是deny的,就直接扔掉,如果是permit的,还要查转发表。所以对比起来,应用null0效率要高,速度要快。
举例如下:
某路由器不希望收到目的是131.1.0.0/16的通信量。
用null0实现,只要配置ip route 131.1.0.0 255.255.0.0 null 0就可以了。如果用访问列表实现,就要先配置一条acl规则如下:access-list 100 deny any 131.1.0.0 0.0.255.255,然后将这条规则在路由器的所有接口上应用。
2、null0不能细化通信量,它面向的对象是整个路由器,而访问列表是可以面向接口的,如果细致到面向接口的通信量,null0就不能做到了。
举例如下:
某路由器不希望在接口s3/1/0收到目的是131.1.0.0/16的通信量。
用null0是不能实现的,只能通过配置acl规则,然后将其应用到接口s3/1/0。
用于BGP的负载分担
用于防止路由振荡
在IP网络规划的比较好时
在一个AS内部用的是IGP,AS之间用的是BGP,不推荐在BGP中将IGP的路由redistribute,因为IGP的路由不稳定,可能会导致路由振荡,因为Null0接口是永远up的,所以可以通过以下配置来将IGP路由发布出去:
ip route ip_address mask null0
router bgp as_number
network ip_address mask mask
这样可以防止路由振荡!
EIGRP指向NULL0的汇总
在EIGRP中,只要发生总结就会在路由表中自动产生一条指向NULL0的路由条目,这条路由的直接意思
是:匹配这条路由的数据包会被路由器丢掉。它的目的是为了避免在某些情况下产生路由环路。
  假设RTC向RTD发送总结路由2.1.0.0/16,RTD收到后在自己的路由表中添加相应的条目。到此为止一切正常,看不出产生一条指向NULL0的路由条目的用处。但是当被RTC所总结的具体路由出现故障时就会遇到问题。(图中没有)不妨假设RTC的左侧本来有4个子网网段:2.1.0.0/24、 2.1.1.0/24、2.1.2.0/24、2.1.3.0/24(精确总结应该总结为2.1.0.0/22,但以书中的2.1.0.0/16并不影响我们讨论这个问题),如果某一段时间2.1.1.0/24这个网段发生故障,比如接口down了,那么在RTC上会立即有所反映,RTC上关于 2.1.1.0/24的直连路由消失,同时我们知道汇总路由有这样一个特点:被总结的路由中哪怕只有一条是正常的,汇总路由都不会发生变化,也就是说仅仅 RTC的左侧的2.1.1.0/24这个网段失效RTD并不会有所察觉,它的路由表项2.1.0.0/16仍然存在。这时如果RTD收到一个目的地址为 2.1.1.0/24网段的数据包它会把它送到RTC上,而RTC接着查看自己的路由表发现没有2.1.1.
0/24这个网段的路由(原因如前所说网段失效后直连路由消失),这样RTC会把这个数据包丢掉。到此为止还是看不出产生一条指向NULL0的路由条目到底有何用处。
  但是在前面我们假设的条件下,当RTC上存在一条缺省路由指向RTD时情况就有所不同了,RTC发现没有2.1.1.0/24这个网段的路由之后,它会按照缺省路由把目的地址为2.1.1.0/24网段的数据包再送回到RTD上,这样就产生了路由环路。这类数据包会反复在RTC和RTD上传送,直到TTL =0为止。这样会占
用RTC和RTD之间线路的带宽,很没有必要,而在发生总结的路由器上产生一条2.1.0.0/16 is a summary, Null0 的路由就会打断这个环路,因为在缺省路由生效之前,目的地址为2.1.1.0/24网段的数据包符合2.1.0.0/16 Null0这条路由,因此这类数据包会被RTC丢掉。
  有些资料上把它的功能简单的描述为:当发生总结的路由器上存在缺省路由时,指向NULL0的路由条目可以帮助避免产生环路。
  目前高版本的IOS中,类似EIGRP这类高级路由协议(例如OSPF等)在发生总结时都会自动产生指向NULL0的路由条目。而明白了这个原理之后,对于RIP和IGRP这类协议也可以通过手工设置静态路由的方式(最后的接口直接写NULL0)实现相同的功能

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。