IP與MAC之ARP

地址解析協議ARP(Address Resolution Protocol)實則是IP地址與MAC地址之間的橋樑,主要用於將IP地址解析為MAC地址。

無論是PC還是交換機上,都有一張ARP表,ARP表中保存著IP地址和MAC地址的映射關係。當PC或者交換機需要與網絡中其他設備進行通信時,知道了對方的IP地址,還需要知道MAC地址以便將IP報文封裝成幀才能通過物理網絡發送,這時PC或者交換機可以通過查找ARP表知道對方IP地址對應的MAC地址。

大家一起從以下幾個方面來一步一步的瞭解ARP吧~

查看ARP表

交換機作為網關時,通過在網關上查看ARP表項,網絡管理員可以查看下掛用戶的IP地址、MAC地址和接口等信息。例如,當網絡管理員知道某個用戶的IP地址,想查詢該用戶的MAC地址時,可以通過查看ARP表項信息獲取。

那我們如何查看設備上的ARP表呢?display arp就可以啦~

舉個例子,如下圖所示,我們可以在交換機上執行命令display arp network查看172.16.0.0/16網段的ARP表項。ARP表項有S、I、D三種類型,這三種類型的ARP表項是怎麼來的?怎麼配置?

IP與MAC之ARP

偶爾是不是還遇到過MAC ADDRESS字段顯示為"Incomplete"的情況,不用迷惘,Incomplete表示這條ARP表項是一個臨時ARP表項,即設備已經發送了ARP請求報文,但是還沒有收到ARP應答。

看了上面的ARP表,或許已經有細心的小夥伴發現:S和D類型的ARP表項中,為什麼有的ARP表項沒有VLAN信息,有的ARP表項有VLAN信息呢?哈哈,小編我就不賣關子了,是這樣的:如果ARP表項沒有VLAN信息,那麼代表這條表項中的接口處於三層模式,是一個三層口;如果ARP表項有VLAN信息(並且表項中接口不是子接口時),那麼代表這條表項中的接口處於二層模式,是一個二層口。

當然,如果你想刪除設備上的ARP表項,可以通過執行reset arp { all | dynamic xx | static xx | interface xx }命令來實現。

剛剛小編給大家承諾過要介紹三種類型的ARP表項是如何來的。類型為I的ARP表項比較簡單,只要在接口上配置了IP地址,設備上就會生成一條類型為I的ARP表項哦~類型為I的ARP表項不會老化,IP地址和MAC地址即為接口本身的IP地址和MAC地址。那另外兩種類型的ARP表項呢?各位看官可要睜大你的眼睛哦~下面就介紹類型為D的ARP表項。

動態ARP表項學習

大多數情況下,設備可以通過ARP協議動態學習和更新ARP表項。設備是如何進行動態學習的呢?其實動態ARP主要是通過廣播ARP請求報文和單播ARP應答報文這兩個過程完成地址解析的。

IP與MAC之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表項是怎麼配置的呢?

靜態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>

[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>

[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/1

當交換機採用多端口ARP方式與NLB服務器群集連接時,NLB服務器的群集IP地址為172.16.40.2,群集MAC地址為02bf-0045-0070。這時在交換機上配置對應的靜態ARP表項時,可以參考如下配置。

<quidway> system-view/<quidway>

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

對於出接口是以太網接口,並且以太網接口處於二層模式的情況,建議小夥伴們在配置靜態ARP表項時儘量同時指定VLAN和出接口,否則可能導致業務流量不通。

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之間的互通。

IP與MAC之ARP

情況二:需要互通的主機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之間的三層互通。

IP與MAC之ARP

情況三:需要互通的主機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之間的三層互通。


IP與MAC之ARP

ok,看到這裡,是不是已經對ARP的基本功能有所瞭解了呢~


分享到:


相關文章: