linux – 测量每个用户或每个进程的累积网络统计信息

我一直在谷歌搜索几个小时 – 在 Linux下我想知道用户或通过所有IP协议进程发送和接收的累积字节数.我在搜索中发现的最好的是可以使用iptables为用户标记数据包,例如:
iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1

似乎“tc”可以随之形成交通,但我只想要统计数据 – 我不想塑造流量.我想要一些类似的东西:“用户U从Y开始就传输了使用过的XMB”.我无法弄清楚如何从这些标记的数据包中获取统计信息.此外,我看过nethogs,但他们似乎正在测量瞬时流量,我需要累积计数.有人有想法吗?

解决方法

iptables -m owner技巧只能跟踪发送出去的用户的数据包(根据定义).它不能用于跟踪为该用户接收的数据包.

我承认,在我的头脑中,我没有看到任何好办法.在黑暗中,它将涉及在内核级别应用补丁,例如,仅允许特定用户绑定到网络堆栈上的特定端口范围(类似于只有root可以绑定到网络套接字的想法)在端口1024和更低).然后,您可以在这些端口范围上应用iptables流量日志记录,并确保任何流量仅适用于允许绑定到这些端口的相应用户.不足之处是,这会对那些不了解这些限制的用户应用程序造成严重破坏,然后他们决定尝试绑定到一个端口而内核拒绝这样做.

也许可以用SE Linux做到这一点,但我怀疑有可能成为系统管理员维护的噩梦:http://www.linuxquestions.org/questions/linux-server-73/how-can-i-restrict-ports-for-users-to-bind-to-667153/

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...