一、概念
- 混雜模式(英語:promiscuous mode)是電腦網絡中的術語。是指一台機器的網卡能夠接收所有經過它的資料流,而不論其目的位址是否是它。
- 一般計算機網卡都工作在非混雜模式下,此時網卡隻接受來自網絡端口的目的位址指向自己的資料。當網卡工作在混雜模式下時,網卡将來自接口的所有資料都捕獲并交給相應的驅動程式。網卡的混雜模式一般在網絡管理者分析網絡資料作為網絡故障診斷手段時用到,同時這個模式也被網絡黑客利用來作為網絡資料竊聽的入口。在Linux作業系統中設定網卡混雜模式時需要管理者權限。在Windows作業系統和Linux作業系統中都有使用混雜模式的抓包工具,比如著名的開源軟體Wireshark
- 簡單的說,網卡的混雜模式是為網絡分析而提供的
二、網卡工作方式
- 廣播模式(Broad Cast Model):它的實體位址是0Xffffff的幀為廣播幀,工作在廣播模式的網卡接受廣播幀。
- 多點傳播傳送(MuliCast Model):多點傳播傳送位址作為目的實體位址的幀可以被組内的其他主機同時接收,而組外主機卻接收不到。但是如果将網卡設定為多點傳播傳送模式,它可以接收所有的多點傳播傳送幀,而不論它是不是組内成員
- 直接模式(Derect Model):工作在直接模式下的網卡隻能接收目的位址是自己的Mac位址的幀
- 混雜模式(Promiscuous Model):工作在混雜模式下的網卡接收所有的流過網卡的幀
三、抓包工具
- 常見的設定網卡混雜模式的方法是安裝抓包工具,如:Sniffer、WinPcap等都自動調整網卡為混雜模式,開啟抓包後網卡自動調整為混雜模式,關閉停止抓包程式,恢複正常模式
- 對于廣播式集線器(Hub)來說,假如PC1、PC2、PC3接在同一個Hub上,當PC1給PC3發送包時,Hub将廣播這個包,是以PC2實際上也可以看到這個包,但一般情況下它會将這個發給PC3的包丢棄,但如果處于混雜模式,PC2的網卡驅動程式就不會丢棄這個包,而是把這個包送給上層的驅動程式,應用程式
四、不同系統下混雜模式的設定
Linux混雜模式的設定
以eth0網卡為例
- 開啟:ifconfig eth0 promisc
- 關閉:ifconfig eth0 -promisc
Windows混雜模式的設定
- 待續