如何在 Linux 中监控每个用户的网络使用情况?

ami*_*r19 1 log-files network-monitoring linux-networking

我是一个 openSUSE linux 服务器的管理员,我们公司很多人都在使用该服务器。

今天我们发现昨天有一个用户使用了过多的带宽,管理部门必须注意到哪个用户这样做了。

我在不同的网站和论坛等中进行了搜索,我发现的ifconfig只是ifstat显示整个网络使用情况。我还安装了一个工具vnstat来启动网络监控和日志记录,以防止将来可能发生的任何进一步问题。

最后,我想知道是否有任何解决方案可以找出每个用户过去特定时间的网络使用情况。或者Linux中有一个日志文件负责跟踪用户的网络使用情况。

pet*_*erh 5

非常简单:使用iptables,您还可以跟踪用户。理论上,您可以阻止/删除/重定向它们的数据包,但现在您只想测量它们。这非常简单,因为 iptables 默认情况下会跟踪通过其规则的所有数据。示例代码如下:

iptables -A OUTPUT -o eth0 -m owner --uid-owner 1001
Run Code Online (Sandbox Code Playgroud)

之后iptables -L -v -n您将能够看到 uid 1001 的用户发送了多少数据。

当然,这不是一个完整的解决方案 - 也许更好的选择是,如果你

  • 在脚本中的不同链中创建 uid 跟踪器
  • 并用工具记录了这个计数器。

可能已经有现成的工具可以实现这一点,尽管手动实现它也不是那么复杂。