ARP-NAT(MAC Address Translation)的原理


 

 

本文部分圖片來自:

http://wiki.deliberant.com/faq/wireless-bridge-routing-arpnat/

https://wiki.openwrt.org/doc/howto/clientmode

 

 

MAT的原理

 

MAT(MAC Address Translation)也叫做ARP-NAT,和IP網絡中的NAT原理是差不多的。下面簡稱MAT。

NAT的存在就是為了讓內網的多台機器共享一個公網的IP地址。類似的,MAT可以讓Ethernet中多台機器共享一個MAC地址。但是這個共享是一個結果,而不是目的。

 

為什么要使用MAT

 

這是WiFi網絡中僅有的現象。WiFi網絡最常見的AP的設計就是為了透傳Ethernet。它在Ethernet的(DA,SA)基礎上加入了WiFi專用的MAC地址,也就是WiFi的MAC地址包裹在Ethernet地址之外。

 

對於AP來說,包裹了AP的MAC地址BSSID,也就是在無線網絡中的AP收發的802.11包是(DA,SA,BSSID)的形式。

對於WDS來說,包裹了兩個WDS設備的MAC地址(TA,RA),也就是形成了(DA,SA,TA,RA)的形式。

 

那么對於WiFi網絡中STA的包,只是加入了BSSID而已,並沒有加入它自身的WiFi設備地址,最終結果來看它並沒有WiFi的MAC地址,而是將自己的Ethernet地址拿來使用做為WiFi的地址了。

 

所以為了透傳Ethernet,在僅有鏈路層工作的情況下(不使用NAT),下面的組網方式就行不通了,而需要MAT的幫助。

 

 

MAT的原理

 

MAT的基本原理:

 

l  不影響IP層,也就是數據包的IP地址不會變化

l  MAT對於內部設備在MAC層上的通訊是透明的。也就是是否有MAT設備存在,內部設備所收發的數據包的地址沒有什么不同。

l  MAT對於外部設備來說,屏蔽了所有內部設備,以它自身來替代。也就是內部設備發出的包的源MAC會被替代成MAT設備的MAC。隨之而來的,就是MAT收到的數據包的目標MAC會被替換成對應內部設備的MAC。

 

 

MAT的主要問題:

 

l  ARP-NAT緩存可能超時,這樣會導致網絡連接立刻被中斷

l  ARP-NAT緩存可能會溢出,這樣會導致網絡連接出現問題

l  其他未知問題

 

 

MAT的工作流程

 

如圖設備A作為STA,連接到AP,電腦連接到設備A。設備A內部對STA接口Ethernet接口做驅動級別的處理轉發。實際上如果設備A再放出一個WiFi AP,電腦的無線網卡連上它,原理也是一樣的。 

 

 

DHCP流程

電腦發出DHCP discover,設備A更改SA,AP返回offer包之后,設備A更改DA返回給電腦。這里MAT可能要在DHCP包出去之前將broadcast flag給置上,不然AP可能會根據幀體的MAC地址直接單播數據包給電腦,這樣會行不通,因為電腦沒有和AP連接。所以這里AP回復的是廣播的DHCP offer,MAT只要轉發廣播,沒有必要修改DA。

因為DHCP流程中電腦還沒有IP地址,所以在設備A端的MAT依據是DHCP包內部的MAC地址信息來轉發。MAT不會修改DHCP包幀體里面的數據。

 

 

DHCP結束之后,MAT的驅動應該已經記住了IP-MAC的對應關系。

 

ARP流程

ARP的包體里面會攜帶IP地址和MAC地址,MAT除了在發送的時候改變SA,接收的時候改變DA之外,

它同時會在發送的時候改變ARP幀體的SA,接收的時候改變ARP幀體的DA。對於MAT設備來說,根據ARP幀體的IP地址來判斷哪個設備就可以了。

 

另外抓包發現電腦還會廣播“免費”ARP,告訴別人自己的MAC地址和IP地址的對應關系。MAT也毫不猶豫地將它的SA和幀體的SA替換成自己的MAC地址。

 

所以這最終的效果就是MAT設備擁有多個IP地址,雖然這不是真的。

 

 數據包流程

 

數據包的流程很簡單,就是MAT設備修改電腦數據包包的SA發出去給AP,AP回來的發修改DA再轉發給電腦。

 

基本流程如下圖所示,其中MAT將SA替換成SA1,將DA替換回DA1.

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM