对于专家来说这可能显得很幼稚...但我最近一直在考虑这个问题。
多年来我一直在使用ntop以及一个便宜的 4 端口集线器,用于嗅探客户端网络以确定谁在做什么以及做了多少。当他们打电话说“天哪,今天的网络似乎真的很慢”时,这是一个查看发生了什么的好方法。无需引入托管交换机(或访问现有的交换机),也无需配置跨度或镜像。我只需将集线器放在我想要测量的位置即可。
最近我注意到不可能的再也不用买真正可靠的集线器了。在寻找新集线器时,有人告诉我一定要买全双工集线器,否则监控时我只能看到一半的流量。
真的吗?
我一直在使用老旧的 Netgear DS104。不知道它是半数还是全数。我真的低估了我的测量值吗?我对物理层了解不够多,无法真正知道……
附注:刚刚订购了Dualcomm 以太网交换机 TAP作为集线器替代品。看起来像是一个漂亮的小玩意。任何关于它的注释或提示都欢迎在评论中提出 :-)
答案1
问题是,虽然集线器通常只允许半双工通信(我听说过全双工集线器,但我从未见过),但这并不意味着您只能看到一半的流量,这意味着通过集线器相互通信的设备将以半双工方式通信。您仍然会看到通过集线器的所有流量。当客户端 A 与客户端 B 通信时,您会看到这一点,当客户端 B 响应客户端 A 时,您也会看到这一点。集线器将流量转发到所有端口,因此无论双工如何,您都会看到所有流量。
在监控过程中,您可能会引入暂时的性能问题,因为连接到集线器的任何设备都可能会尝试以全双工进行通信(特别是如果它们被硬编码为全双工),因此会发生冲突,除了由于集线器的半双工特性而导致的“减速”之外,还需要重新传输相当多的流量。
使用集线器的好处是,它可以充当被动网络分接头。您可以将其内联插入客户交换机和防火墙/路由器之间,并监控他们的互联网使用情况,查看谁去了哪里,查看正在发生哪种使用(HTTP、FTP 等),查看他们的互联网连接的使用量,以及查看网络中存在多少广播流量。
您可能没有看到网络上特定主机存在的问题,因为您无法在网络上的每个主机之间插入集线器(您只能将集线器连接到一个交换机端口,而不是所有端口)。为此,您需要一个具有端口镜像功能的交换机,以便您可以将特定交换机端口或端口组的流量镜像到您的监视端口。
根据要排除的问题,我会同时使用集线器和支持端口镜像的交换机。我通常从连接客户交换机和防火墙/路由器的集线器开始。这样我就可以了解互联网流量的大小、流量类型,并了解网络上的广播量。我想说,在大多数情况下,问题都是互联网带宽不足或大量广播导致拥塞、重新传输、ACK 缓慢、ACK 重复等。
答案2
根据您的喜好,一种便携的解决方案是构建您自己的网桥。任何具有两个接口的笔记本电脑都可以做到这一点。将墙上的电线插入一个接口,将第二根电线插入报告问题的设备,然后在网桥上运行嗅探。
双端口有很多种方式。USB NIC,或者使用某些笔记本电脑上从未使用过的 ExpressCard 插槽添加第二个 GigE NIC(示例设备在 NewEgg 上)。
在 Linux 上,需要一些根模式命令来进行设置。
brctl addbr snifbr
brctl addif snifbr eth0 eth1
在 Windows 上可以通过 Internet 连接共享和其他方式完成相同的操作,但我不知道它们是什么。
现在,补充一点:
这样做的便利性是一些网络部署端口级安全性的原因之一。为特定以太网插孔注册特定 MAC 地址,进行这种内联数据包捕获会困难得多。并非不可能,只是更难。
使用此方法的优点是它不需要为交换机/集线器提供额外的电源,它全部包含在笔记本电脑中。如果需要,您甚至可以向网桥添加地址。
ifconfig snifbr 10.31.25.101 netmask 255.255.255.0
并通过 SSH 进行远程捕获。