交换机在江湖】第二十六章 IP与MAC一线牵之ARP

 

交换机在江湖 官方号 2014-10-9 15:07:27 最新回复:2019-08-12 09:25:46
 3.2W  34  8  28
  有木有因为不知如何查看ARP表而烦恼?
  有木有因为不明白ARP表项从何而来而彷徨?
  有木有因为不会配置静态ARP表项而惆怅?
  有木有因为同一网段ARP学习不到而心烦意乱?
  这个秋天就让小编来为您揭开ARP的朦胧面纱,ARP相关配置再也不愁啦~~~
  我们首先回顾一下什么是ARP?江湖中人对ARP的描述是:闲窥江湖风云雨,IP、MAC一线牵。也就是说地址解析协议ARP(Address Resolution Protocol)实则是IP地址与MAC地址之间的桥梁,主要用于将IP地址解析为MAC地址。
  无论是PC还是交换机上,都有一张ARP表,ARP表中保存着IP地址和MAC地址的映射关系。当PC或者交换机需要与网络中其他设备进行通信时,知道了对方的IP地址,还需要知道MAC地址以便将IP报文封装成帧才能通过物理网络发送,这时PC或者交换机可以通过查找ARP表知道对方IP地址对应的MAC地址。
  下面就让小编带大家一起从以下几个方面来一步一步的了解ARP吧~

1.查看ARP表

  交换机作为网关时,通过在网关上查看ARP表项,网络管理员可以查看下挂用户的IP地址、MAC地址和接口等信息。例如,当网络管理员知道某个用户的IP地址,想查询该用户的MAC地址时,可以通过查看ARP表项信息获取。

  那我们如何查看设备上的ARP表呢?display arp就可以啦~

功能

命令行

想查看所有的ARP表项?

display arp all

想查看动态的ARP表项?

display arp dynamic

想查看静态的ARP表项?

display arp static

想查看某一网段的ARP表项?

display arp network x.x.x.x

想查看某一接口相关的ARP表项?

display arp interface xx

想查看某一VPN实例的ARP表项?

display arp vpn-instance xx

想查看某个具体IP地址的ARP表项?

display arp all | include x.x.x.x

 

 

  举个例子,如下图所示,我们可以在交换机上执行命令display arp network查看172.16.0.0/16网段的ARP表项。ARP表项有S、I、D三种类型,这三种类型的ARP表项是怎么来的?怎么配置?小编待会儿给大家详细介绍。

 

 

  

偶尔是不是还遇到过MAC ADDRESS字段显示为“Incomplete”的情况,不用迷惘,Incomplete表示这条ARP表项是一个临时ARP表项,即设备已经发送了ARP请求报文,但是还没有收到ARP应答。

  看了上面的ARP表,或许已经有细心的小伙伴发现:S和D类型的ARP表项中,为什么有的ARP表项没有VLAN信息,有的ARP表项有VLAN信息呢?哈哈,小编我就不卖关子了,是这样的:如果ARP表项没有VLAN信息,那么代表这条表项中的接口处于三层模式,是一个三层口;如果ARP表项有VLAN信息(并且表项中接口不是子接口时),那么代表这条表项中的接口处于二层模式,是一个二层口。

   当然,如果你想删除设备上的ARP表项,可以通过执行reset arp { dynamic [ ip ip-address [ vpn-instance vpn-instance-name ] ] | interfaceinterface-type interface-number[.subinterface-number ] [ ip ip-address ] | static }命令来实现。

  刚刚小编给大家承诺过要介绍三种类型的ARP表项是如何来的。类型为I的ARP表项比较简单,只要在接口上配置了IP地址,设备上就会生成一条类型为I的ARP表项哦~类型为I的ARP表项不会老化,IP地址和MAC地址即为接口本身的IP地址和MAC地址。那另外两种类型的ARP表项呢?各位看官可要睁大你的眼睛哦~下面就介绍类型为D的ARP表项。

2.动态ARP表项学习

大多数情况下,设备可以通过ARP协议动态学习和更新ARP表项。设备是如何进行动态学习的呢?其实动态ARP主要是通过广播ARP请求报文和单播ARP应答报文这两个过程完成地址解析的。

 

 

 

例如小A和小C在一次聚会上互留了IP地址。如上图所示,小A需要与小C进行通信时,知道了小C的IP地址为10.1.1.3/24,判断后发现与自己在同一网段10.1.1.0/24,于是小A会广播发送一个ARP请求报文,请求小C的MAC地址。

小C收到ARP请求报文后,会单播发送一个ARP应答报文,告诉对方自己的MAC地址是3-3-3。(在同一网段的小B也会收到ARP请求报文,但是由于ARP请求报文中的目的IP地址不是小B的IP地址,因此小B不会进行应答。)

小A收到ARP应答报文后,就会在自己的ARP表中增加一条动态表项:IP地址10.1.1.3对应MAC地址3-3-3,这样小A就可以与小C进行通信啦。怎样,是不是觉得动态ARP学习很简单?

一方面由于ARP表的容量限制,另一方面也为了保证动态ARP表项的准确性,PC或交换机会对学习到的动态ARP表项进行老化。交换机上动态ARP表项有一定的老化时间,缺省值是20分钟,一般建议使用缺省值。

设备上动态ARP表项到达老化时间后,设备会发送老化探测报文(即ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项,本次老化探测结束。

好啦,动态ARP表项的内容小编也介绍的差不多了,是不是已经有小伙伴迫不及待的想知道S类型的ARP表项是怎么配置的呢?

3.静态ARP表项配置

对于网络中的重要设备,如服务器等,我们可以在交换机上配置静态ARP表项。这样可以避免交换机上重要设备IP地址对应的ARP表项被ARP攻击报文错误更新,从而保证用户与重要设备之间正常通信。

静态ARP表项不会老化,不会被动态ARP表项覆盖。用户可以通过手工方式配置静态ARP表项,下面小编就给大家举几个例子。

例如,网络中有一台重要的服务器,服务器的IP地址为172.16.10.2,MAC地址为0023-0045-0067。如果交换机与这台服务器相连的接口GE1/0/1处于二层模式,并加入VLAN100。这时可以在交换机上为服务器配置一条对应的ARP表项,具体配置如下。

<Quidway> system-view

[Quidway] vlan batch 100

[Quidway] interface vlanif 100

[Quidway-Vlanif100] ip address 172.16.10.1 24 //VLANIF接口的IP地址需要与静态ARP表项中的IP地址(172.16.10.2)同网段。

[Quidway-Vlanif100] quit

[Quidway] interface gigabitethernet 1/0/1

[Quidway-GigabitEthernet1/0/1] port link-type access

[Quidway-GigabitEthernet1/0/1] port default vlan 100 //接口GigabitEthernet1/0/1处于二层模式,需要加入VLAN100

[Quidway-GigabitEthernet1/0/1] quit

[Quidway] arp static 172.16.10.2 0023-0045-0067 vid 100 interface gigabitethernet 1/0/1

还是上面的那台服务器,如果交换机与服务器相连的接口处于三层模式,这时在交换机上配置静态ARP表项,可以参考如下配置。

<Quidway> system-view

[Quidway] interface gigabitethernet 1/0/1

[Quidway-GigabitEthernet1/0/1] undo portswitch

[Quidway-GigabitEthernet1/0/1] ip address 172.16.10.1 24 //GigabitEthernet1/0/1IP地址需要与静态ARP表项中的IP地址(172.16.10.2)同网段。

[Quidway-GigabitEthernet1/0/1] quit

[Quidway] arp static 172.16.10.2 0023-0045-0067 interface gigabitethernet 1/0/1

       当交换机采用多端口ARP方式与NLB服务器群集连接时,NLB服务器的群集IP地址为172.16.40.2,群集MAC地址为02bf-0045-0070。这时在交换机上配置对应的静态ARP表项时,可以参考如下配置。

<Quidway> system-view

[Quidway] arp static 172.16.40.2 02bf-0045-0070

对于出接口是以太网接口,并且以太网接口处于二层模式的情况,建议小伙伴们在配置静态ARP表项时尽量同时指定VLAN和出接口,否则可能导致业务流量不通。

4.ARP代理(即Proxy ARP)

前面我们提到,主机进行动态ARP学习时,如果发现目的IP地址与自己在同一网段,会发送广播ARP请求报文进行ARP学习。但是呢,有些情况下两台主机虽然在同一网段,但不在同一广播域,目的主机是无法收到ARP请求报文的,因而也就无法成功学习到ARP表项。

在连接两台主机的交换机上使能ARP代理后,交换机相当于一个中介,Host_1发送ARP请求报文请求Host_2的MAC地址的时候,交换机会将自己的MAC地址告诉Host_1。这样Host_1发给Host_2的数据报文会先发给交换机,再由交换机转发给Host_2。

例如下面的三种情况,我们就可以用到ARP代理。

情况一:需要互通的主机Host_1与Host_2(主机上没有配置缺省网关)处于相同的网段但不在同一物理网络(即不在同一广播域)。由于在不同的广播域,Host_1发送的ARP请求报文Host_2是收不到的,这时可以在交换机的VLANIF10和VLANIF20接口上使能路由式Proxy ARP功能(arp-proxy enable),实现Host_1与Host_2之间的互通。

 

 

 

情况二:需要互通的主机Host_1与Host_2处于相同网段,并且属于相同VLAN,但是VLAN内接口IF_1与IF_2配置了端口隔离。由于IF_1与IF_2之间端口隔离,Host_1发送的ARP请求报文Host_2是收不到的,这时可以在Switch上关联了VLAN10的VLANIF接口上使能VLAN内Proxy ARP功能(arp-proxy inner-sub-vlan-proxy enable),实现Host_1与Host_2之间的三层互通。

 

 

 

情况三:需要互通的主机Host_1与Host_2处于相同网段,但属于不同VLAN。由于不在同一VLAN,Host_1发送的ARP请求报文Host_2当然也是收不到的,这时可以在Switch上关联了VLAN10和VLAN20的VLANIF30接口上使能VLAN间Proxy ARP功能(arp-proxy inter-sub-vlan-proxy enable),实现Host_1与Host_2之间的三层互通。

 

 

 

ok,看到这里,是不是已经对ARP的基本功能有所了解了呢~

 

5.ARP常见问答

5.1 ARP的老化机制是什么?ARP老化参数有哪些?

一方面由于高速缓存的容量限制,另一方面为了保证高速缓存中ARP表项的准确性,设备会对动态ARP表项进行老化和更新。

动态ARP表项常见的老化参数有:

1.  老化超时时间:如果老化超时时间过小,如1分钟,会导致大量系统资源用于刷新动态ARP表项,影响设备处理其他业务的能力;如果老化超时时间过大,如15小时,会导致动态ARP表项不能及时刷新。建议使用默认的老化时间,即20分钟。在系统视图或者接口视图下执行命令arp expire-time expire-time,可以配置动态ARP表项的老化超时时间。

2. 老化探测次数:在将一个动态ARP表项被老化之前,系统需要进行探测,如果超过设置的探测次数后设备仍没有收到应答来刷新此表项,则此ARP表项将被删除。在系统视图或者接口视图下执行命令arp detect-times detect-times,可以配置动态ARP表项的老化探测次数。默认的探测次数为3次。

3. 老化探测模式。老化探测报文可以是单播报文,也可以是广播报文。当对端设备的IP地址不变化而MAC地址频繁更新时,建议使用广播模式发送老化探测报文;当对端设备MAC地址不变,当前网络带宽资源特别紧缺,且ARP表项的老化时间设置得比较小时,建议使用单播模式发送老化探测报文。缺省情况下,交换机的接口只在最后一次发送ARP老化探测报文时以广播方式发送,其余均为单播方式发送。当对端设备MAC地址不变时,可以配置接口以单播模式发送ARP老化探测报文。在接口视图下执行arp detect-mode unicast命令,接口将以单播方式发送ARP老化探测报文。

除了上述老化参数外,二层拓扑探测功能、设备响应TC报文功能和动态ARP表项延时删除功能也会影响动态ARP表项的老化更新。

5.2 为什么ARP表项不完整?

如果使用display arp命令查看ARP表项,回显信息中的MAC ADDRESS字段显示为“Incomplete”,表示当前表项为临时ARP表项(也被称为“假表项”)。当IP报文触发ARP Miss消息时,设备会根据ARP Miss消息生成临时ARP表项,并且向目的网段发送ARP请求报文。

l  在临时ARP表项老化时间范围内,设备收到ARP应答报文前,匹配临时ARP表项的IP报文将被丢弃并且不会触发ARP Miss消息。

l  在临时ARP表项老化时间范围内,设备收到ARP应答报文后,则生成正确的ARP表项来替换临时ARP表项。

l  在临时ARP表项老化超时后,设备会清除临时ARP表项。

可以通过命令arp-fake expire-time expire-time调整临时ARP表项的老化时间。

5.3 为什么交换机出现大量ARP报文,甚至引起流量告警?

如果交换机上出现过多的ARP报文,可以排查一下这些报文的来源,是否是其他设备(例如终端、对端设备)等出现问题、向交换机发生大量报文所导致的。

 

posted @ 2021-08-04 17:13  精舞门2020  阅读(222)  评论(0编辑  收藏  举报