ARP-NAT(MAC Address Translation)的原理

 

 

本文部分圖片來自:緩存

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

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

 

 

MAT的原理

 

MAT(MAC Address Translation)也叫作ARP-NAT,和IP網絡中的NAT原理是差很少的。下面簡稱MAT。spa

NAT的存在就是爲了讓內網的多臺機器共享一個公網的IP地址。相似的,MAT可讓Ethernet中多臺機器共享一個MAC地址。可是這個共享是一個結果,而不是目的。設計

 

爲何要使用MAT

 

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

 

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

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

 

那麼對於WiFi網絡中STA的包,只是加入了BSSID而已,並無加入它自身的WiFi設備地址,最終結果來看它並無WiFi的MAC地址,而是將本身的Ethernet地址拿來使用作爲WiFi的地址了。圖片

 

因此爲了透傳Ethernet,在僅有鏈路層工做的狀況下(不使用NAT),下面的組網方式就行不通了,而須要MAT的幫助。get

 

 

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.

 

 

 

相關文章
相關標籤/搜索