在AFAIK中,NIC从局域网中的线路接收所有数据包,但拒绝其目的地址不等于其IP的那些数据包。
我想开发一个监视用户互联网使用情况的应用程序。每个用户都有一个固定的IP地址。
我和其他一些人已连接到DES-108 8端口快速以太网非托管台式机交换机
如前所述,我不仅要捕获属于我的那些数据包,还要捕获所有用户的所有流量。
如何强制我的NIC或其他组件接收所有数据包?
在AFAIK中,NIC从局域网中的线路接收所有数据包,但拒绝其目的地址不等于其IP的那些数据包。
我想开发一个监视用户互联网使用情况的应用程序。每个用户都有一个固定的IP地址。
我和其他一些人已连接到DES-108 8端口快速以太网非托管台式机交换机
如前所述,我不仅要捕获属于我的那些数据包,还要捕获所有用户的所有流量。
如何强制我的NIC或其他组件接收所有数据包?
Answers:
在AFAIK中,NIC从局域网中的线路接收所有数据包,但拒绝其目的地址不等于其IP的那些数据包。
更正:它拒绝那些目标MAC地址不等于其MAC地址(或多播或过滤器中的任何其他地址)的数据包。
数据包捕获实用程序可以使网络设备处于混杂模式,这就是说,上述检查被绕过了,设备接受了它收到的所有内容。实际上,这通常是默认设置:使用时tcpdump
,您必须指定该-p
选项才能不使用它。
更为重要的问题是,您感兴趣的数据包是否甚至全部通过电线传送到您的嗅探端口。由于您使用的是非托管的以太网交换机,因此几乎可以肯定不是。交换机决定在网络设备希望看到它们之前,先从端口修剪不属于您的数据包。
为此,您需要连接到托管以太网交换机上经过特殊配置的镜像或监视端口。
在早期提到的以太网集线器(不是交换机)中,已发送的数据包可用于子网上的所有主机,但是不是预期收件人的主机应该忽略。
显然,子网饱和并不需要很长时间,因此交换技术应运而生,解决了这些问题,而他们要做的一件事就是使网络交换机仅将发往该主机的数据包路由到该端口(加上andy广播流量) )。
这会使网络监视/嗅探复杂化,因为您只能嗅探用于主机的数据包。从安全的角度来看,这被认为是一件好事,但是从网络监视的角度来看,这并不是一件好事。为了使网络监视有效,供应商实现了一项称为端口镜像的功能。这必须在网络交换机上进行配置,并且下面的链接应为您指明D-link产品的正确方向。您可以在交换机管理软件或Web管理员界面中的某个位置找到它。如果找不到这些功能,则可能无法在该特定设备中提供该功能。
首先,您需要将NIC切换为混杂模式。假设您的NIC接口是eth0。
root@linux#ifconfig eth0 promesc
如果您在交换网络上,则将嗅探减少到冲突域,然后连接到交换端口。您可以运行macof
以使交换机的转发表不堪重负。
root@linux#macof -i eth0
然后,您可以使用wireshark
或tcpdump
捕获所有流量。
root@linux#tcpdump -i eth0 -w outputfile
如果您不在交换网络上,只需启用混杂模式并使用tcpdump
。
tcpdump
将为您启用混杂模式。您不需要手动执行操作(完成后记得撤消操作)。
您正在重新发明轮子。
假设您有一个简单的网络,其中客户端连接到交换机,并且具有默认的Internet网关,那么您只需要在该默认网关设备上进行监视。这将是显示局域网客户端和互联网之间所有流量的瓶颈。
我假设不关心LAN客户端到LAN客户端的流量,因为对于所有IP地址都在同一IP子网内的情况,本地流量不会触及默认网关。
如果您确实希望查看所有流量,则每个用户都需要位于自己的IP网络中,而通过默认网关到其他网络的流量。您可以为每个人分配一个/ 28,他们自己可以拥有14个IP。
普通的家庭级路由器将无法处理很多此类问题,您需要探索专用的防火墙发行版。我个人可能会喜欢pfsense,但是有很多选择。