На этот вопрос уже есть ответ:
Я являюсь администратором 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)