Android private IP leak

Android 手機作爲熱點時,客戶端請求上網的過程中出現私有IP(192.168.x.x)泄露到公有網絡的問題,就是在抓到的數據包中,有一段時間作爲熱點的手機用私有IP去請求網絡數據。查找問題原因,做以下記錄。 
NAT(Network Address Translation,網絡地址轉換)是將IP 數據包頭中的IP 地址轉換爲另一個IP 地址的過程。在實際應用中,NAT 主要用於實現私有網絡訪問公共網絡的功能。這種通過使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助於減緩可用IP地址空間的枯竭。
NAT的功能就是指將使用私有地址的網絡與公用網絡INTERNET相連,使用私有地址的內部網絡通過NAT路由器發送數據時,私有地址將被轉化爲合法註冊的IP地址從而可以與INTERNET上的其他主機進行通訊。

NAT路由器被置於內部網和INTERNET的邊界上並且在把數據包發送到外部網絡前將數據包的源地址轉換爲合法的IP地址。當多個內部主機共享一個合法IP地址時,地址轉換是通過端口多路複用即改變外出數據包的源端口並進行端口映射完成。

說明:
私有 IP 地址是指內部網絡或主機的IP 地址,公有IP 地址是指在因特網上全球唯一的IP 地址。
RFC 1918 爲私有網絡預留出了三個IP 地址塊,如下:
A 類:10.0.0.0~10.255.255.255
B 類:172.16.0.0~172.31.255.255
C 類:192.168.0.0~192.168.255.255
上述三個範圍內的地址不會在因特網上被分配,因此可以不必向ISP 或註冊中心申請而在公司或企業內部自由使用。
Android 4.1中,有客戶端連接到熱點分配IP之前,先做了disableNatBySubnet,再enableNatBySubnet。
D(  459:  560) disableNatBySubnet : nat disable wlan0 rmnet0 2 fe80::/64 192.168.43.0/24
V(  459:  560) disableNatBySubnet() cmd:nat disable wlan0 rmnet0 2 fe80::/64 192.168.43.0/24 response is Nat operation succeeded
D(  459:  560) enableNatBySubnet : nat enable wlan0 rmnet0 2 fe80::/64 192.168.43.0/24
V(  459:  560) enableNatBySubnet() cmd:nat enable wlan0 rmnet0 2 fe80::/64 192.168.43.0/24 response is Nat operation succeeded
I( 2146: 2146) DHCPDISCOVER(wlan0) c4:6a:b7:2d:0f:f7 
I( 2146: 2146) DHCPOFFER(wlan0) 192.168.43.178 c4:6a:b7:2d:0f:f7 
I( 2146: 2146) DHCPREQUEST(wlan0) 192.168.43.178 c4:6a:b7:2d:0f:f7 
I( 2146: 2146) DHCPACK(wlan0) 192.168.43.178 c4:6a:b7:2d:0f:f7 android-8881a377cd2d2cdc

調用disableNatBySubnet,enableNatBySubnet方法時存在問題導致私有IP泄露。
發佈了25 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章