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

Как отслеживать использование сети каждым пользователем в Linux?

Я администратор Linux-сервера openSUSE, которым пользуются многие люди в нашей компании.

Сегодня мы узнаем, что вчера один из пользователей использовал слишком много полосы пропускания, и отделу управления важно заметить, какой пользователь это сделал.

Я искал на разных сайтах, форумах и т. Д., И все, что я нашел, было ifconfig или ifstat которые просто показывают использование всей сети. а также устанавливаю инструмент vnstatчтобы начать мониторинг сети и ведение журнала на случай, если в будущем могут возникнуть проблемы.

Наконец, мне интересно, есть ли какое-либо решение для определения использования сети в определенное время в прошлом для каждого пользователя. или есть ли в Linux файл журнала, отвечающий за отслеживание использования сети пользователями.

Это очень просто: с iptables, вы также можете отслеживать пользователей. Теоретически вы можете заблокировать / удалить / перенаправить их пакеты, но сейчас вы хотите только их измерить. Это очень просто, потому что iptables по умолчанию отслеживает все данные, проходящие через их правила. Пример кода здесь:

iptables -A OUTPUT -o eth0 -m owner --uid-owner 1001

После iptables -L -v -n вы сможете увидеть, сколько данных отправил пользователь с uid 1001.

Конечно, это не полное решение - возможно, была бы гораздо лучшая альтернатива, если бы вы

  • создал трекер uid в другой цепочке в скрипте
  • и зарегистрировал счетчик этого с помощью инструмента.

Наверное, для этого есть готовые инструменты, хотя и реализовать вручную было не так уж сложно.

Нет, такого файла журнала нет.

Для этого вам нужно специально настроить ведение журнала, и я не знаю стандартного способа сделать это. Это может быть непросто сделать точно: пользователь может заставить процесс, которым он не владеет, генерировать сетевой трафик, и может быть нетривиальным приписать этот трафик этому пользователю.

См. Например этот почти повторяющийся вопрос или вот этот.

Проблема в том, что вам необходимо установить связь между сетевым подключением и пользователем во время его работы. Как только это будет сделано, эта ссылка будет потеряна (по крайней мере, насколько мне известно).

Один из способов сохранить эту информацию - следовать тому, что объясняется в этом вопросе:

Как отслеживать пропускную способность сети для каждого пользователя на сервере Ubuntu?. (AskUbuntu)