问题:
我可以使用哪种工具来实时监控和细分哪些带宽由 iptables 路由到哪些计算机?
语境:
我有一个 Linux 机箱,使用带有 3 个以太网(2 个 LAN、1 个 WAN)的 iptables 将大约 15 个设备伪装成互联网。
有时,某个用户会消耗掉所有的 ADSL 带宽。
我用bwm-ng
它来监控流量,看到了如下结果:
$ bwm-ng
bwm-ng v0.6 (probing every 0.500s), press 'h' for help
input: /proc/net/dev type: rate
/ iface Rx Tx Total
==============================================================================
tun0: 0.00 KB/s 0.00 KB/s 0.00 KB/s
eth0: 31.35 KB/s 649.82 KB/s 681.18 KB/s
eth1: 649.40 KB/s 33.84 KB/s 683.24 KB/s
eth2: 0.00 KB/s 0.00 KB/s 0.00 KB/s
lo: 0.00 KB/s 0.00 KB/s 0.00 KB/s
------------------------------------------------------------------------------
total: 680.75 KB/s 683.66 KB/s 1364.42 KB/s
因此,我看到 eth1(WAN)上接收的流量被路由到 eth0(LAN)中的某个 IP,所以有人正在进行大量下载。
事实是,该用户连续数小时消耗了所有带宽。
我可以通过以下方式发现这是谁:
- 切断对某些 IP 的访问并观察 bwm-ng,然后切断其他 IP 的访问,依此类推。但这很肮脏。这会中断服务,我不想这样做。
- 指示 iptables 记录所有流量并尝试读取日志,但我认为对于通过 ssh 显示此信息的工具来说,这更加痛苦,方式类似于 bwm-ng。
无需历史数据,也无需精美的图形。只需通过 ssh(如 bwm-ng)提供实时信息和文本即可。