網路尖兵如何檢查同一IP地址的數據包中是否有不同的MAC地址?

網上講到網路尖兵檢測原理的文章不多,基本上都是一套說辭,其中第一條就是「一、檢查同一IP地址的數據包中是否有不同的MAC地址,如果是則判定用戶共享。」 講破解的帖子也總是在提將MAC改成一樣,實在不明白通過路由器的共享如何還能看出「不同的MAC地址」,請大大解惑。


都是胡扯,你把MAC地址改成一樣的很可能全都上不了網了。運營商也不可能知道你內層設備的MAC地址。

檢測NAT設備背後的設備數量無非是兩種,一種針對TCP/IP的生成規律,一種針對深度包檢測。

前一種,IP每個報文都帶有ID號,這個號在許多操作系統上是每發出一個包就遞增1,至少對於同一個源地址和目的地址是這樣;但是不同設備的ID號初始值是不一樣的。這樣如果有內網兩個設備同時訪問了外網同一個地址,但是ID明顯形成了兩個序列,就可以判斷有NAT設備存在。

還有以前的TCP實現中,SYN包的初始seq是個簡單隨時間遞增的序列,不同設備遞增的起始不一樣,這樣只要監控發出SYN的第一個seq的分布就可以判斷NAT設備後面有多少不同的伺服器,但現在的操作系統已經不這麼工作了。

其他還包括TCP的Timestamp選項等等。

第二種是直接解開你發出的HTTP請求,根據裡面的UserAgent以及Cookies進行判斷,但這種誤傷可能性很大,我估計不太可能根據這個。


感覺是從HTTP HEADER下手的,

通過解析HTTP的請求包文,查看是不是存在多個不同的USER AGENT,如果超過閾值就判定為多用戶上網。

我們這裡是上海電信,檢測到多用戶就會劫持HTTP包然後替換成藍屏代碼。而在藍屏過程中對於手機等移動設備似乎一直是放行的。

目前我們正準備寫一個程序來測試是不是這個原理,到時候有測試結果會更新。


抱歉,之前答錯了,應該是mac和ip都會變。


我cisco也就過了CCNA,ccnp還才看了一點點。我來回想一下啊,我記得說是MAC地址是不能跨網段的,基本上那個說辭也就是不成立了吧,因為你過了一個路由節點,下一台路由器收到的數據包就是你的ip(源ip)和發給她這個數據包的路由器的MAC地址作為源地址。也就是說,不管你前面那個節點之前,這個ip對應過多少個mac,都是在下個節點體現不出來的。。

然後就是另外一個問題了,叫NAT,或者說是PAT,因為公有IP地址太少,所有誕生了這個方法,具體說明請百度。。精簡一下就是,你只有一個公有IP,比如8.8.8.8,直連的話只能分配給一台計算機,如果有了路由器做PAT,(一般都喊NAT但是NAT實際上用的很少了)你可以多個計算機共享這個公網IP。

怎麼實現的呢?就是埠號,PAT的中文就是埠轉換,映射埠。一下引用自百度百科。

「PAT可以看做是NAT的一部分。

在NAT時,考慮一種情形,就是只有一個Public IP,而內部有多個Private IP,這個時候NAT就要通過映射UDP和TCP埠號來跟蹤記錄不同的會話,比如用戶A、B、C同時訪問CSDN,則NAT路由器會將用戶A、B、C訪問分別映射到1088、1098、23100(舉例而已,實際上是動態的),此時實際上就是PAT了。

由上面推論,PAT理論上可以同時支持(65535 - 1024)= 64511個連接會話。但實際使用中由於設備性能和物理連接特性是不能達到的,CISCO的路由器NAT功能中每個Public IP最多能有效地支持大約4000個會話。

PAT普遍應用於接入設備中,它可以將中小型的網路隱藏在一個合法的IP地址後面。PAT與動態地址NAT不同,它將內部連接映射到外部網路中的一個單獨的IP地址上,同時在該地址上加上一個由NAT設備選定的TCP埠號。也就是採用port multiplexing 技術,或改變外出數據的源port的技術將多個內部ip地址映射到同一個外部地址」

個人認為,ISP的網路尖兵是從埠號下手的,不過具體是怎麼看出來的,我真的也不知道。。ISP確實有很多奇葩的手段去封殺人民的利益的,不舉例了。


你的數據幀進入下一跳之後,源物理地址就已經被路由設備替換了。


推薦閱讀:

域名、主機伺服器、ip、網卡、網站之間的關係是什麼?
遊戲加密技術真能發展到過幾年就沒有破解盜版的地步?
如何從零寫一個http server?
網路評論員是激化了還是緩解了輿論矛盾?
學習網路工程的女生後來都怎樣了?

TAG:計算機網路 | IP地址 | 介質訪問控制層MAC |