我有一个Linux机箱,我想用它来监控我的网络的所有带宽,有多台计算机都插入网络。
是否有某种方法可以通过 Linux 机器欺骗所有流量并记录每台计算机使用的带宽量?
答案1
我用带宽
BandwidthD 跟踪 TCP/IP 网络子网的使用情况,并构建带有图表的 html 文件来显示利用率。图表由各个 IP 构建,并默认显示 2 天、8 天、40 天和 400 天期间的使用情况。此外,每个 IP 地址的使用情况可以以 3.3 分钟、10 分钟、1 小时或 12 小时的间隔以 cdf 格式记录出来,或记录到后端数据库服务器。HTTP、TCP、UDP、ICMP、VPN 和 P2P 流量采用颜色编码。
答案2
您需要做的是将机器放在这些机器和您的互联网连接之间的网络中,如下所示:
PC1 ----\
PC2 ----+---- monitor ---- router/modem/other ---- hinterwebs
PC3 ----/
监控盒中需要两张网卡,一张用于本地 LAN 交换机,其他机器也插入该交换机,另一张用于路由器。监控盒然后可以设置为透明桥接,或者(更简单)执行 NAT(就像这样) 为 LAN。然后,您可以使用带有注释的额外 iptables 规则来标记它们,以便您可以使用类似 collectd 的 iptables 模块 (看这里) 来记录数据包和字节数。您也可以使用类似 broadbandd 的工具,尽管我自己没有用过。如果您希望检查当前流量,而不是记录流量以供将来分析,则可以使用iftop
(看这里,并且应该在所有 Linux 发行版中可用)来列出现在正在通过盒子的东西。
如果不将监控机器放在要监控的机器之间,那么在交换网络中查看所有机器的流量是不可能的,而所有现代网络都是交换网络。使用集线器时,您所要做的就是将网卡置于混杂模式,它将检查线路上的所有流量,但在交换网络中,交换机会确保每条线路仅获取所需的数据包,而不是所有数据包。