Назад | Перейти на главную страницу

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

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

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

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

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

Как лучше всего это сделать? Есть ли какие-нибудь решения для этого?

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

Мне удалось в этом разобраться.

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

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

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