站点图标 Linux-技术共享

代理ARP

我發現了關於什麼是代理 ARP 的各種解釋,但其中很少有人一開始是可以理解的。合併所有這些之後,這個解釋來自我的網路研討會

而這個:

如果我們看一下下圖,我為那些對此仍然有點困惑的人準備了一個更詳細的範例。

這項技術使下圖中的 R7 路由器能夠代理來自 C1 計算機的 ARP 請求,該請求試圖查找計算機 C3 的 MAC 位址。

您需要注意, C1 的位址來自 /16 範圍,這就是為什麼它認為 192.168.50.50 與 192.168.1.11 位於同一子網路中。如果情況並非如此,且 C1 的位址為 192.168.1.11/24,它將發送 ARP 詢問預設閘道的 MAC 位址是什麼。它將轉到預設網關,因為他知道他沒有直接連接到整個網路 192.168.0.0/16。然後,我們透過使用路由表檢查將封包從一個子網路傳輸到另一個子網路來討論標準路由。

代理人?

將自己置於路由器 7 中。

代理 ARP(或其他流量)意味著回應發送者(在本例中為 C1),假裝我們是 C3(R7 假冒為 C3),並且我們 (R7) 是發送到 192.168.50.50 的流量的正確目的地。然後,C1 會向我們發送 C3 的所有流量,然後我們 (R7) 將其轉送到我們另一個介面上的真實目的地 (C3)。

網路設備可以輕鬆執行此代理 ARP 功能,因為 ARP 本身的工作原理非常簡單。

在我們的例子中

當C1想要向C3發送某些內容時,它會透過以廣播的形式發送ARP請求來詢問本地LAN網段上的所有鄰居192.168.50.50在哪裡。如果路由器 R7 使用自己的本機介面 MAC 位址 (00:00:0c:ab:cd:a1) 回應此 ARP 要求,C1 將收到回應並開始與 R7 通信,因為他是正確的目的地。如果 R7 然後將此通訊轉送至 C3 MAC 位址,則將其本機 MAC 位址作為來源 MAC 位址放入封包中。然後,C3 回應 R7,認為他是想要與他通話的 C1,並且建立了連接。C1 和 C3 可以相互通信,甚至不知道它們的流量正在 R7 上進行代理。

如果 R7 收到的廣播 ARP 請求在其路由表中具有作為本機網路的目標 IP,則 R7 將為 ARP 請求執行代理功能。透過將電腦 C3 的 IP 包含在某個其他介面上的路由表中,這意味著他可以使用自己的 MAC 位址回應 C1,並向 C1 展示自己,因為他是 C3。稍後,它將能夠將流量轉送到 C3 並從 C3 返回 C1。

 

從我們的範例中查看 ARP 請求封包的內部

主機 C1 在子網路 A 上廣播 ARP 請求,ARP 請求封包如下所示(它還有一些字段,但這是重要的部分):

發送者MAC位址 寄件者IP 目標MAC 目標IP 
00:00:0c:ab:cd:c1 192.168.1.11 00-00-00-00-00-00 192.168.50.50

您在此 ARP 請求中看到 00-00-00-00-00-00 作為目標 MAC 位址嗎?這意味著未知的 MAC 位址,並且進一步意味著 C1 正在發送此訊息,但他不知道要發送到何處。這意味著它將被發送到子網路上的任何地方,這種發送稱為廣播。它具有來源 MAC 和 IP,以便潛在的 192.168.50.50 所有者知道要回應誰。ARP 回復是單播。

路由器(與子網路 192.168.1.0/24 上的所有其他裝置一樣)接收來自 C1 的廣播 ARP 請求。它檢查該請求,發現 192.168.50.50 已本地連接到其另一個介面。然後,它在 ARP 回覆中使用自己的 MAC 位址回覆 C1,如下所示:

發送者MAC位址  寄件者IP 目標MAC 目標IP
00:00:0c:ab:cd:a1 192.168.50.50 00:00:0c:ab:cd:c1 192.168.1.11

您會看到,目標 MAC 和 IP 是使用 C1 位址定義的(這表示它是單播),來源 MAC 和 IP 來自 R7,因此他可以開始成為此流量的代理。

當C1收到這個封包時,它會將ARP記錄保存在他的ARP表中。對於下一個發送至 192.168.50.50 的封包,C1 不需要再次傳送 ARP 請求,ARP 將從其本機表中解析,直到 ARP 記錄逾時。

IP位址 MAC位址
192.168.50.50 00:00:0c:ab:cd:a1

這裡還有一件事要注意。如果192.168.50.0/24 子網路上有更多PC,並且您再次檢查C1 上的ARP 緩存,您會看到他的ARP 快取中填充了子網路中所有PC IP 位址的相同MAC 位址(來自路由器的MAC地址) 192.168.50.50。

因此,如果在某台主機上您看到多個 IP 位址對應到一個 MAC 位址(路由器位址),則表示正在使用代理 ARP。

在 Cisco 裝置上,它預設為開啟狀態。如果您想停用它,請使用介面等級命令來執行此操作。當然,如果沒有“不”,它會再次啟用它。

路由器#設定終端
路由器(config)#介面乙太網路0
路由器(config-if)# no ip proxy-arp

 

但為什麼?

如果您的 PC 沒有配置預設閘道或缺乏一些基本的 IP 路由功能,那麼就需要實作代理 arp。好處是,它不會破壞路由器的任何路由功能,也不會破壞其他鄰居路由器和主機,甚至不會知道路由器位於中間,從而使它們有機會相互通訊。

另一方面,它可能會透過填充具有較小 ARP 快取記憶體的廉價終端設備的 ARP 表來中斷通訊。對他們來說,為來自其他子網路的裝置保留超過 100-200 個 MAC 位址記錄可能是一個問題。還有一個事實是,代理 arp 基本上是使用欺騙來工作,這很糟糕,特別是從安全角度來看。

退出移动版