如何捕獲所有傳入網卡的資料包,即使這些資料包不屬於我

如何捕獲所有傳入網卡的資料包,即使這些資料包不屬於我

AFAIK,NIC 接收來自區域網路中線路的所有資料包,但拒絕那些目標位址不等於其 ip 的資料包。

我想開發一個應用程式來監控用戶的網路使用情況。每個用戶都有一個固定的IP位址。

我和其他一些人連接到DES-108 8 埠快速乙太網路非託管桌面交換機

如前所述,我想捕獲來自所有用戶的所有流量,而不僅僅是屬於我的資料包。

我應該如何強制我的網路卡或其他元件接收所有資料包?

答案1

AFAIK,NIC 接收來自區域網路中線路的所有資料包,但拒絕那些目標位址不等於其 ip 的資料包。

更正:它拒絕那些目的地的資料包蘋果地址不等於其MAC位址(或其過濾器中的多播或任何其他位址。

資料包擷取實用程式可以輕鬆地將網路裝置置於混雜模式,也就是說,上述檢查被繞過,裝置接受它接收到的所有內容。事實上,這通常是預設設定:使用 時tcpdump,您必須指定該-p選項才能不是做吧。

更重要的問題是您感興趣的資料包是否透過線路傳輸到您的嗅探連接埠。由於您使用的是非託管乙太網路交換機,因此幾乎可以肯定它們不是。交換器決定在您的網路裝置希望看到不屬於您的資料包之前從您的連接埠中刪除它們。

您需要連接到託管乙太網路交換器上專門配置的鏡像或監控連接埠才能執行此操作。

答案2

在早期的乙太網路集線器(而非交換器)中,所傳送的資料包可供子網路上的所有主機使用,但不是預期接收者的主機應該被忽略。

顯然,沒多久子網路就飽和了,因此交換器技術的誕生就是為了解決這些問題,他們所做的一件事就是讓網路交換器只將發送到該主機的資料包路由到該連接埠(加上安迪廣播流量) )。

這使得網路監控/嗅探變得複雜,因為您只能嗅探屬於您的主機的資料包。從安全的角度來看,這被認為是一件好事,但從網路監控的角度來看,這並不是一件好事。為了使網路監控發揮作用,供應商實施了一項稱為連接埠鏡像的功能。這必須在網路交換器上進行配置,下面的連結應該為您指明 D-link 產品的正確方向。您可以在交換器管理軟體或 Web 管理介面中的某個位置找到它。如果您沒有找到這些功能,則該特定裝置可能未提供該功能。

http://www.dlink.com/uk/en/support/faq/switches/layer-2-gigabit/dgs-series/es_dgs_1210_como_monitorear_trafico_de_un_puerto_port_mirroring

答案3

首先,您需要將網路卡切換到混雜模式。假設您的 NIC 介面是 eth0。

root@linux#ifconfig eth0 promesc

如果您位於交換器網路上,則嗅探會減少到連接到交換器連接埠的衝突域。您可以運作macof來壓倒交換器的轉發表。

root@linux#macof -i eth0

然後您可以使用wiresharktcpdump來捕獲所有流量。

root@linux#tcpdump -i eth0 -w outputfile

如果您不在交換網路上,只需啟用混雜模式並使用tcpdump.

答案4

你正在重新發明輪子。

假設您有一個簡單的網絡,其中客戶端連接到交換機,並有一個通往互聯網的預設網關,那麼您只需要在該預設網關設備上進行監控。這將成為顯示 LAN 用戶端和網際網路之間所有流量的瓶頸。

我假設 LAN 用戶端到 LAN 用戶端的流量不重要,因為所有 IP 位址都位於相同 IP 子網路內,則本機流量不會觸及預設閘道。

如果您確實想查看所有流量,則每個使用者都需要位於自己的 IP 網路中,並且到其他網路的流量是透過預設閘道進行的。你可以為每個人分配一個 /28,他們可以擁有 14 個 IP。

您的一般家庭級路由器無法處理太多此類問題,您需要探索專用的防火牆發行版。就我個人而言,pfsense 是我的首選,但有很多選擇。

相關內容