Як слідкувати за пропускною здатністю мережі на користувача на сервері Ubuntu?


12

У мене є кілька користувачів оболонок на сервері з 300 Гб щомісячної передачі даних. Як я можу контролювати використання пропускної здатності на користувача?


це можливо навіть? Здається, що теоретично, це було б більше клопоту, ніж варто, тому що технічно вам доведеться кожен процес за допомогою Інтернету визначати, хто ним керує, а потім з'ясувати комбіноване використання пропускної здатності. Будь-які конкретні причини, які ви хочете відстежувати на основі кожного користувача, окрім користувачів оболонки, які у вас є? Оскільки дані про щомісячне введення / виведення 300 Гб, мабуть, ви перевищите цю суму: /
Thomas Ward

Це повинно бути можливо, інакше як провайдери обмежують пропускну здатність на користувача?
djeikyb

@EvilPhoenix Я хочу контролювати використання на одного користувача.300 ГБ - це не так вже й багато для сервера, що має принаймні 20 користувачів, які використовують цей сервер як проксі-сервер.
Педрам

1
Схоже, у вас є чудова практична відповідь від Kees Cook, але якщо ви все ще шукаєте методи, мені цікаво, чи сформулювати питання по-іншому, може допомогти. Я знайшов цей посібник googling "як обмежити пропускну здатність користувача на Linux": faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html
djeikyb

Відповіді:


13

Як корінь, ви могли принаймні виміряти вихідний трафік на основі кожного користувача, використовуючи модуль iptables "власник". Якщо всі користувачі, за якими ви хочете стежити, є /root/list-of-users.txt, ви можете:

for login in $(cat /root/list-of-users.txt);
do
    iptables -N out_user_$login
    iptables -A OUTPUT -m owner --uid-owner $(id -u $login) -j out_user_$login
done

Потім видно кількість пакетів і байтів для вихідного трафіку кожного користувача:

iptables -L OUTPUT -n -v | grep out_

Це може бути продовжено додатково CONNMARK для відстеження вхідної сторони.


Спасибі. Це здорово. Я зробив це. Але чому я не можу використовувати той же метод для INPUT?
Педрам

1
Власник пакету не відомий для вхідних пакетів, оскільки з точки зору ядра він надходить з-за машини. CONNMARK можна використовувати для прив’язки пакетів у потоках TCP до їх джерела тощо, але я не маю робочого прикладу цього.
Kees Cook

7

Я щойно натрапив на NetHogs :

NetHogs - це невеликий інструмент «чистого верху». Замість того, щоб скорочувати трафік за протоколом або по підмережі, як це робить більшість інструментів, він групує пропускну здатність за процесом.

введіть тут опис зображення

Це повинно дозволити вам відстежувати пропускну здатність за іменем користувача. Можливо, ще потрібні ще кілька інструментів для реєстрації інформації та додавання її, але це хороший початок, не використовуючи безпосередньо iptables.


Його також можна запустити в режимі підведення підсумків трафіку: sudo nethogs -v 3 eth0(або натискати mкілька разів після початку циклу через режими). Поєднуйтесь із, tmuxщоб постійно працювати (навіть якщо ваш sshсеанс завершується).
таніус

6

Можна використовувати кактуси

Кактуси - це повний інтерфейс до RRDTool, він зберігає всю необхідну інформацію для створення графіків та заповнення їх даними в базі даних MySQL. Передній панель повністю керований PHP. Поряд із можливістю підтримувати у базі даних графіки, джерела даних та архів Round Robin, кактуси обробляють збір даних. Існує також підтримка SNMP для тих, хто використовується для створення графіків трафіку за допомогою MRTG.

Або vnStat

vnStat - це консольний монітор мережевого трафіку для Linux та BSD, який веде журнал мережевого трафіку для вибраних інтерфейсів. Він використовує статистику мережевого інтерфейсу, надану ядром, як джерело інформації. Це означає, що vnStat насправді не буде нюхати жоден трафік, а також забезпечує легке використання системних ресурсів.

Обидва вони чудові.


2
Дякую, але я вже бачив їх обох, і, здається, вони не забезпечують моніторинг користувачів. Я хочу контролювати використання на кожного користувача.
Педрам

5

Я трохи подивився, і не знайшов всебічного пакету gui, який би робив те, що ви хочете. Сподіваємось, хтось існує, і хтось опублікує про це тут, зрештою.

Я насправді не мережевий хлопець, але з того, що я читав, серед багатьох речей, netstatі я iptablesповинен робити для облікового запису користувачів на базі ip / host те, що acctробив інструмент для обліку системних процесів. Це посилання cyberciti.biz може допомогти вам створити систему з цими інструментами:

http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/


Дякую, але, як ви сказали, вони використовуються для облікового запису користувачів на основі ip. У мене є користувач оболонки, який може використовувати сервер у різних місцях, особливо в університетському відділенні з однаковою ip-адресою (за NAT). шукаючи рішення для обліку на основі користувачів, якщо це можливо.
Педрам

netstat -eпоказує користувачів оболонки, дозволяючи зв’язати ip / host з ім'ям користувача.
djeikyb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.