A. 环回接口的创建环回接口的原因
用来建立路由邻居
我们知道路由协议要想正常运行,大多需要先建立邻居关系,邻居关系的稳定是路由计算正确的基石。实际运用中,常常使用环回接口来建立两个路由器之间的邻居关系,例如BGP协议。比起使用物理接口建立连接,使用环回接口可以使邻居关系更加牢固,因为就算某个物理链路和接口发生了故障,只要能从其他途径访问到该设备,那么邻居关系就不会中断。 用来作为Router-ID
在常用的OSPF、BGP等路由协议中,都有Router-ID的概念,这相当于一台路由器的身份证号,在一个指定的范围(如一个自治系统)内唯一标识一台设备,不能有重复。因为环回接口的稳定性,我们常使用一个环回接口地址来作为Router-ID,使整个设备的标识稳定可靠。
使用环回接口作为Router-ID还有一个好处就是可以节省地址,因为环回接口的地址一般和业务地址没有关系,是独立规划的。 用于虚拟隧道连接
在建立IPSec或GRE之类的虚拟隧道时,使用loopback接口可以保证整个隧道的稳定性。 用于网络连通性测试
创建并配置好环回接口之后,它的地址是能被ping或telnet的,这就可以被用来测试网络的连通性。 在Cisco路由器中可以使用interface loopback命令来创建它。
注意:启动OSPF路由选择进程时会选择OSPF的路由器ID。这发生在手动执行了router ospf命令或者在启动过程中加载路由器配置时。因此,如果在启用了OSPF之后再创建环回接口,那么该环回接口将不会被用作路由器ID;然而,如果重新启动路由器,默认将使用环回接口。因此,建议优先创建环回接口并先给它分配IP地址,然后再启用OSPF,这样可以消除关于路由器ID的困惑。
以下为配置环回接口的指令:
Router(config)#interface loopbacknumber
B. 路由器 环回接口 原理
一、路由器Loopback接口简介(环回接口)
Loopback接口是虚拟接口,是一种纯软件性质的虚拟接口。任何送到该接口的网络数据报文都会被认为是送往设备自身的。大多数平台都支持使用这种接口来模拟真正的接口。这样做的好处是虚拟接口不会像物理接口那样因为各种因素的影响而导致接口被关闭。事实上,将Loopback接口和其他物理接口相比较,可以发现Loopback接口有以下几条优点:
1.Loopback接口状态永远是up的,即使没有配置地址。这是它的一个非常重要的特性。
2.Loopback接口可以配置地址,而且可以配置全1的掩码,可以节省宝贵的地址空间。
3.Loopback接口不能封装任何链路层协议。
对于目的地址不是loopback口,下一跳接口是loopback口的报文,路由器会将其丢弃。对于CISCO路由器来说,可以配置[no] ip unreachable命令,来设置是[否]发送icmp不可达报文,对于VRP来说,没有这条命令,缺省不发送icmp不可达报文 。
二、环回接口作用:
用来建立路由邻居;
用来作为Router-ID;
用于虚拟隧道连接;
用于网络连通性测试;
用来作为Router-ID:
因为环回接口的稳定性,我们常使用一个环回接口地址来作为Router-ID,使整个设备的标识稳定可靠。
用于虚拟隧道连接:
在建立IPSec或GRE之类的虚拟隧道时,使用loopback接口可以保证整个隧道的稳定性。
用于网络连通性测试:
创建并配置好环回接口之后,它的地址是能被ping或telnet的,这就可以被用来测试网络的连通性。
环回功能:基于端口、MAC、VLAN、IP环回。
端口环路检测:
一种简单的检测环路的方式,私有协议 ;设备通过发送环路监测报文、并监测其是否返回本设备(不要求收、发端口为同一端口)以确认是否存在环路,若某端口收到了由本设备发出的环路监测报文,就认定该端口存在环路。
端口环路检测适用于简单的拓扑。
C. 环回接口做什么用的
环回接口 即loopback
环回接口是路由器上的一个逻辑、虚拟接口。路由器默认没有任何环回接口,但是它们很容易创建。所有cisco的IOS平台都支持环回接口,可以根据需要创建任何数目的环回接口。这些接口在路由器上与物理接口一样对待:可以给它们分配寻址信息,包括它们在路由器选择更新中的网络号,甚至在它们上可以终止IP连接,如telnet。环回接口由于独占一个IP地址,子网掩码一般建议设为255.255.255.255,以节省资源。创建环回接口的原因:1.向OSPF路由器分配路由器ID。2.用于测试目的,因为该接口总是开启的。3.终止特殊连接,例如GRE隧道或IPSec连接,因为该接口总是启用的。再Cisco路由器中可以使用interface loopback命令来创建它。注意:启动OSPF路由选择进程时会选择OSPF的路由器ID。这发生在手动执行了router ospf命令或者在启动过程中加载路由器配置时。因此,如果在启用了OSPF之后再创建环回接口,那么该环回接口将不会被用作路由器ID;然而,如果重新启动路由器,默认将使用环回接口。因此,建议优先创建环回接口并先给它分配IP地址,然后再启用OSPF,这样可以消除关于路由器ID的困惑。
以下为配置环回接口的指令:
Router(config)#interface loopback number
D. 【网络工程师路由篇】BGP 入门实验
R1、R2、R3属于AS 123;R4属于AS 400;
R1、R2、R3运行OSPF,运行OSPF的目的是为了打通AS 123内的路由;
R3-R4之间建立EBGP邻居关系,R2不运行BGP;
R1-R3之间建立IBGP邻居关系;
在R4上,将路由4.4.4.0/24发布到BGP。
R1的配置如下(省略接口IP地址的配置):
R2的配置比较简单,就是运行OSPF而已,这部分配置不再赘述。
R3的配置如下:
R4的配置如下:
完成上述配置后,在R3上查看BGP路由表:
我们看到R3已经学习到了R4通告过来的BGP路由4.4.4.0/24。并且该条BGP路由的NextHop属性值为10.1.34.4,这个下一跳地址是路由可达的。该条路由在R3的BGP路由表里有“* >” 标记,其中“*”表示这条路由是可用的(valid),只有当BGP路由的NextHop为路由可达时,该BGP路由才会被视为可用;而“>”则表示这条路由是被优选的路由,或者说是到达该目的网络的最优路由。
BGP路由的NextHop属性是一个非常重要的属性,它是所有BGP路由都会携带的路径属性,它指示了到达目的网络的下一跳地址。
在R3上查看路由表:
R3已经将到达4.4.4.0/24的BGP路由加载到了全局路由表中。
对于R3而言,到达4.4.4.0/24的路由已经被优选,接下来,它会将该路由通告给IBGP邻居R1。
在R1上查看BGP路由表:
我们看到,R1的BGP路由表中已经出现了4.4.4.0/24路由,而这条路由的NextHop属性值是10.1.34.4,但是R1在本地路由表中没有到达10.1.34.4的路由,因此10.1.34.4不可达,如此一来,该BGP路由也就不可用了(在BGP路由表中没有*号标记),既然不可用,自然就不能装载进路由表中使用。
那么怎么解决这个问题呢?一个最简单的方法是,为R1配置一条静态路由:ip route-static 10.1.34.0 24 10.1.23.3,这样一来R1的路由表里就有了到达10.1.34.4的路由,那么BGP路由4.4.4.0/24的下一跳地址就可达了,对应的BGP路由自然也就可用了。但是这种方法太“笨拙”。另一种方法是,在R3的OSPF进程中将10.1.34.0/24网段也注入进去,使得R1能够通过OSPF学习到10.1.34.0/24路由,这种方法也是可行的。但是由于R3-R4之间的互联链路被视为AS外部链路,因此10.1.34.0/24作为外部网段往往不会被宣告进AS内的IGP。那么还有什么其他办法能解决这个问题么?
BGP路由器在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。如下图所示,R4将4.4.4.0/24通告给R3时,下一跳为10.1.34.4,也就是R4的GE0/0/0接口地址。
BGP路由器将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
BGP路由器在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
例如下图所示,R3收到R4通告的EBGP路由,该路由的下一跳属性值为10.1.34.4,它将该条路由通告给IBGP对等体R1的时候,路由的下一跳属性值不会发生改变,仍然为10.1.34.4。
这就造成了我们上面所述的问题,由于R1没有到达10.1.34.0/24的路由,因此下一跳地址10.1.34.4不可达,从而导致BGP路由4.4.4.0/24不可用。
还有一个方法可以解决这个问题:在R3上使用next-hop-local命令,可修改BGP路由的下一跳属性值为自身。在下图中,我们在R3上增加了peer 10.1.12.1 next-hop-local命令,那么这样一来,当R3再将EBGP路由通告给R1的时候,会将这些路由的下一跳属性值修改为自己的更新源地址(10.1.23.3),而R1已经通过OSPF获知到达10.1.23.0/24的路由,因此10.1.23.3是可达的。
完成配置后,我们在R1上查看BGP路由表:
可以手工指定用于建立BGP连接的源接口及源IP地址。命令如下:[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ]缺省情况下,BGP使用报文的出接口作为BGP报文的源接口。当用户完成peer命令的配置后,设备会在自己的路由表中查询到达该对等体地址的路由,并从该路由得到出接口信息。如果peer命令中没有指定接口(connect-interface)和IP地址(ipv4-src-address),那么设备将会使用前述出接口和该接口的IP地址作为BGP报文的源接口和源地址。
为了使物理接口在出现问题时,设备仍能发送BGP报文,可将发送BGP报文的源接口配置成Loopback接口。在使用Loopback接口作为BGP报文的源接口时,必须确认BGP对等体的Loopback接口的地址是可达的。由于一个AS内往往会运行IGP协议,因此AS内的设备能够通过该IGP协议获知到达其他设备的Loopback接口的路由。在AS内部,IBGP邻居关系通常基于Loopback接口建立。
EBGP邻居之间通常使用直连接口的IP地址作为BGP报文源地址,如若使用环回接口建立EBGP邻居关系,要配置peer ebgp-max-hop命令,允许EBGP通过非直连方式建立邻居关系。
同样是上面的环境,我们稍作变更,在R1及R3上创建loopback0,地址分别为1.1.1.1/32及3.3.3.3/32,然后设备各自将loopback0宣告进OSPF,使得彼此都能通过OSPF学习到对方的Loopback0路由。
我们修改BGP的配置,使得R1-R3之间的IBGP邻居关系基于Loopback0来建立。
R1的关键配置如下:
R3的关键性配置如下:
注意,务必要将R1及R3的Loopback0接口激活OSPF。
经过前面的讲解,我们的环境现在是这样的:R1-R3之间建立了基于Loopback接口的IBGP邻居关系;R3对R1配置了next-hop-local;R3与R4之间仍然维持基于直连接口的EBGP邻居关系;R4在BGP中发布路由4.4.4.0/24。
现在R1是能够学习到BGP路由4.4.4.0/24的,并且该路由也是被优选的,此时这条路由会被R1装载进全局路由表使用,但是,这是不是意味着R1就能够ping通4.4.4.4了呢?经过测试你可能会发现:无法ping通?因为数据包在R2这里就被丢弃了,R2并没有运行BGP,因此它无法学习到BGP路由4.4.4.0/24。
怎么才能让R1 ping通4.4.4.4呢?方法之一是在R3上将BGP路由重发布进OSPF,使得R2能够通过OSPF学习到BGP路由4.4.4.0/24,但是这种方法存在一定的风险,因为我们知道BGP承载的前缀数量往往是非常庞大的;另一种方法是,让R2也运行BGP,并与R1、R3建立IBGP邻居关系,这样一来问题就解决了。那么BGP邻居关系就变成了如下图所示。具体配置此处不再赘述。
通常情况下,EBGP邻居之间必须具有直连的物理链路,EBGP邻居关系也将基于直连接口来建立,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。
peer ebgp-max-hop命令用来配置允许BGP同非直连网络上的对等体建立EBGP连接,并同时可以指定允许的最大跳数。命令格式如下:[Router-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]
如上图所示,R1及R2要基于Loopback口建立EBGP邻居关系。这种情况也属于EBGP邻居之间不基于直连接口建立邻居关系的场景,必须配置peer ebgp-max-hop命令。图中R1与R2之间的两条物理链路是为了冗余性考虑。R1的关键配置如下:
R2的关键配置如下:
BGP邻居表
BGP表
查看BGP条目的详细信息:
路由表,display ip routing-table
E. 路由器中什么是loopback0地址,作用是什么,怎样配置
路由器上配置loopback0地址作用是用于帮助调试物理连接问题,无需设置。
执行测试在一个调制解调器或收发器通过将其输出连接到自己的输入。电路两点之间在不同的位置可以通过应用测试信号检测电路在一个位置,和网络设备可以返回信号通过电路在另一个位置。
本地环路接口是应用最广泛的虚拟接口几乎所有路由器。20aWindows系统,用作本地环回地址127.0.0.1。
(5)用环回接口做源接口的wlan案例扩展阅读:
环回地址0的物理连接接收通道发送通道。工作端子连接器,如x。这通常通过简单地将连接器连接到引脚来完成。媒体与一个单独的收发连接器、光纤或同轴电缆,等等,可以简单地使用一个合适的包的媒体。
IP数据报的源或目标地址设置为一个环回地址不能出现在计算系统或由任何路由路由设备。数据包接收一个接口和一个回调目标地址必须被删除。
易于管理,为每个路由器创建环回接口,并在接口上指定单独的IP地址作为管理员远程登录到路由器(Telnet)的管理地址,Telnet实际上用作设备名。