Учет сетевого трафика на пользователя под Linux
У меня есть несколько пользователей на компьютере под управлением Linux (точнее, Ubuntu Lucid).
Мне нужно посмотреть, сколько сетевого трафика они генерируют на конкретном интерфейсе.
Iptables может соответствовать исходящим пакетам, поэтому я могу создать цепочки для каждого пользователя, чтобы иметь возможность считать исходящий сетевой трафик. Однако входящий трафик тоже значителен.
У меня есть несколько вариантов: - Написание нового соответствия iptables для входящих пакетов - Написание нового модуля iptables, который сочетает в себе совпадение пользователей исходящих пакетов и отслеживание соединения - Написание драйвера TUN/TAP, который каким-то образом способен идентифицировать процесс отправителя / получателя и пользователя, и написать журнал -...
Каков наилучший способ сделать это? Существуют ли какие-либо решения для этого?
Заранее спасибо.
1 ответ
Мне удалось это выяснить.
Я написал библиотеку LD_PRELOAD, которая переопределяет семейство функций send, recv, read, write и записывает эти операции в сокеты.
Исходный код очень экспериментальный и небезопасный, но в любом случае я поместил его в SourceForge: