Чи можна отримати загальну кількість дозволених пакетів за секунду за допомогою iptables?


1

Чи є спосіб дізнатися кількість пакетів, які дозволяються через iptables кожну секунду?

Відповіді:


0

Я даю два відповіді для двох можливих сценаріїв:

Якщо ви запитуєте, як визначити правило для обмеження пакетів в секунду

З установкою iptables за замовчуванням, правила не мають статусу, тобто вони не відстежують, скільки пакетів приймаються. Щоб почати зберігати a лічильник пакетів, які проходять через iptables, нам знадобиться використовувати його модулів або, можливо, патч квоти ( див. тут, як налаштувати це ).

Тут я розгляну пару модулів "вбудованих", які ви можете використовувати для встановлення ліміту пакетів на секунду. Для наших цілей є limit і conntrack Модулі ви можете використовувати для визначення пропускної здатності. Ця процедура полягає у створенні нової ланцюжка iptables:

$ sudo iptables --flush  # start again
$ sudo iptables --new-chain RATE-LIMIT
$ sudo iptables --append INPUT --match conntrack --ctstate NEW --jump RATE-LIMIT

Пояснення: The --match опція вказує модуль для використання (ми будемо вказувати використання input нижче).

Потім у межах цього ланцюжка створіть нове правило. У цьому прикладі наше правило відповідає не більше 50 пакетів в секунду:

$ sudo iptables --append RATE-LIMIT --match limit --limit 50/sec --jump ACCEPT

Обмеження швидкості відбувається, коли пакети не потрапляють у вищезазначене правило, і в цьому випадку ми захочемо відкинути ці пакети:

$ sudo iptables --append RATE-LIMIT --jump DROP

Це лише один з можливих способів, за допомогою яких можна «оцінити обмеження» пакетів за допомогою iptables. Додаткові приклади і багато великого пояснення див цього посібника .

Примітка: Iptables є складною програмою і вимагає знайомства з нею, перш ніж приступити до таких правил. Ви повинні почати з читання цього посібника якщо ви ще не дуже задоволені iptables.


Якщо ви запитуєте, як просто переглядати пакети, які приймаються за секунду

Отримання пакетної інформації у потрібному форматі (пакет / сек), ймовірно, потрібно буде зробити за допомогою сніфера пакетів, оскільки iptables самостійно не має більш детальних інструментів звітів на пакети (просто проходження журналу на пакеті- пакетної бази). Два найпоширеніші опції Linux:

tcpdump

The tcpdump Програма, подібно багатьом іншим пакункам linux (включаючи Wireshark), використовує libpcap бібліотека, яка шукає пакети безпосередньо на мережевому інтерфейсі (NIC). Якщо ви зацікавлені в перегляді статистики за секунду всі пакети , ви можете використовувати цей швидкий і брудний метод:

sudo tcpdump -i <interface-name> -w my-capture.pcap

Ви можете залишити це запуск на деякий час, якщо ви хочете, відкрийте нове вікно терміналу і відновіть звичайну мережеву діяльність. Хіт Ctrl+C щоб зупинити його, коли захочете. Це повинно відображати певну статистику з захоплення, включаючи пакети, "скинуті ядром". Це пакети, заблоковані iptables. Щоб отримати швидкість пакета на секунду для всіх пакетів (у тому числі падіння), використовуйте capinfos команда:

capinfos my-capture.pcap

Ви отримаєте кілька рядків виводу. Шукайте Average packet rate лінії.

Wireshark

Нарешті, ви можете скористатися Wireshark для перегляду цієї інформації. Він більш складний, ніж tcpdump і має багато доступних фільтрів (наприклад,
tcp.analysis.lost_segment фільтр ), який може показати вам, які пакети були втрачені на секунду. Зверніть увагу, що втрата пакетів не завжди є результатом брандмауера. Якщо ви впевнені, що ваш мережевий інтерфейс є надійним і не втрачає пакети, ваші дані все одно будуть більш точними.

Щоб переглянути статистику пакетів у Wireshark, натисніть кнопку Statistics а потім виберіть IO Graph. Переглянути це відео для демонстрація графіків у Wireshark .


Редагувати: Ви згадали, що ви розробляєте програму Java для запуску певної події, коли досягнута певна квота пакетної передачі за секунду. У цьому випадку слід використовувати бібліотеку для роботи з мережею Java Pcap4J яка використовує ту ж саму бібліотеку, яку використовує більшість snoffers пакетів. З їхнього github repo:

Pcap4J - це бібліотека Java для захоплення, створення та надсилання пакетів.   Pcap4J переносить бібліотеку власного пакета захоплення (libpcap, WinPcap або   Npcap) через JNA і надає вам орієнтовані на Java API.

Ось сайт з інструкціями, які допоможуть вам розпочати роботу.


Насправді я Java-скрипт для виконання деяких дій, якщо прийняті пакети в секунду більше, ніж деяке значення. Так що мені потрібно знати, як, зокрема, в java, знати кількість загальних пакетів, дозволених через пакети (обчислювати пакети в секунду)
Ish Chhabra

Відповідь відредаговано, щоб відповісти на ваш коментар (див. Нижче)
baelx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.