如何捕获所有传入网卡的数据包,即使这些数据包不属于我

如何捕获所有传入网卡的数据包,即使这些数据包不属于我

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 是我的首选,但有很多选择。

相关内容