我在运行 Linux(更具体地说是 Ubuntu Lucid)的计算机上有几个用户。
我需要查看它们在特定接口上产生了多少网络流量。
Iptables 可以匹配传出的包,所以我可以为每个用户创建链,以便能够计算传出的网络流量。但是,传入流量也很重要。
我有几个选择: - 为传入数据包编写新的 iptables 匹配 - 编写一个结合传出数据包用户匹配和连接跟踪的新 iptables 模块 - 编写一个能够以某种方式识别发送方/接收方进程和用户的 TUN/TAP 驱动程序,并写入日志 -...
最好的方法是什么? 有没有现成的解决方案?
先感谢您。
答案1
我设法弄清楚了这一点。
我编写了一个 LD_PRELOAD 库,它覆盖了 send、recv、read、write 系列函数并在套接字上记录这些操作。
源代码还处于实验阶段并且不安全,但无论如何,我把它放在了 SourceForge 上: