Учет сетевого трафика на пользователя под Linux

У меня есть несколько пользователей на компьютере под управлением Linux (точнее, Ubuntu Lucid).

Мне нужно посмотреть, сколько сетевого трафика они генерируют на конкретном интерфейсе.

Iptables может соответствовать исходящим пакетам, поэтому я могу создать цепочки для каждого пользователя, чтобы иметь возможность считать исходящий сетевой трафик. Однако входящий трафик тоже значителен.

У меня есть несколько вариантов: - Написание нового соответствия iptables для входящих пакетов - Написание нового модуля iptables, который сочетает в себе совпадение пользователей исходящих пакетов и отслеживание соединения - Написание драйвера TUN/TAP, который каким-то образом способен идентифицировать процесс отправителя / получателя и пользователя, и написать журнал -...

Каков наилучший способ сделать это? Существуют ли какие-либо решения для этого?

Заранее спасибо.

1 ответ

Решение

Мне удалось это выяснить.

Я написал библиотеку LD_PRELOAD, которая переопределяет семейство функций send, recv, read, write и записывает эти операции в сокеты.

Исходный код очень экспериментальный и небезопасный, но в любом случае я поместил его в SourceForge:

https://sourceforge.net/projects/netacct/

Другие вопросы по тегам