网络工程师必须了解的ARP知识

动态ARP表项学习大多数情况下 , 设备可以通过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表项的准确性 , PC或交换机会对学习到的动态ARP表项进行老化 。交换机上动态ARP表项有一定的老化时间 , 缺省值是20分钟 , 一般建议使用缺省值 。
设备上动态ARP表项到达老化时间后 , 设备会发送老化探测报文(即ARP请求报文) , 如果能收到ARP应答报文 , 则更新该动态ARP表项 , 本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文 , 则删除该动态ARP表项 , 本次老化探测结束 。
静态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/1的IP地址需要与静态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/1ARP代理(即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之间的互通 。


推荐阅读