I have several users on a computer running Linux (Ubuntu Lucid to be more specific).
I need to see how much network traffic they generate on a specific interface.
Iptables can match outgoing packages, so I could create chains for every user to be able to count outgoing network traffic. However, incoming traffic is significant too.
I have several options: -Writing a new iptables match for incoming packets -Writing a new iptables module that combines outgoing packet user match and connection tracking -Writing a TUN/TAP driver that somehow able to identify the sender / receiver process and user, and write a log -...
What is the best way to do this? Are there any existing solutions for this?
Thank you in advance.
I managed to figure this out.
I wrote an LD_PRELOAD library that overrides send, recv, read, write family of functions and logs these operations on sockets.
The source code is very experimental and not secure, but anyway, I put it on SourceForge:
https://sourceforge.net/projects/netacct/