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

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

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

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

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

1
задан 28 October 2015 в 16:10
3 ответа

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

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

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

4
ответ дан 3 December 2019 в 16:17

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

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

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

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

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

    .
    4
    ответ дан 3 December 2019 в 16:17

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

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

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

    2
    ответ дан 3 December 2019 в 16:17

    Теги

    Похожие вопросы