如何监控每个 iptables 伪装设备的带宽

如何监控每个 iptables 伪装设备的带宽

问题:

我可以使用哪种工具来实时监控和细分哪些带宽由 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)提供实时信息和文本即可。

相关内容