1

Есть ли способ узнать количество пакетов, которые разрешены через iptables каждую секунду?

1 ответ1

0

Я даю два ответа для двух возможных сценариев:

Если вы спрашиваете, как определить правило для ограничения пакетов в секунду

При стандартной установке iptables правила не сохраняют состояния, то есть они не отслеживают, сколько пакетов принято. Чтобы начать вести счетчик пакетов, проходящих через 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

Объяснение: Опция --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 , как и многие другие анализаторы пакетов linux (включая Wireshark), использует библиотеку libpcap, которая ищет пакеты непосредственно в сетевом взаимодействии (вашей сетевой карте). Если вы заинтересованы в просмотре посекундной статистики для всех пакетов , вы можете использовать этот быстрый и грязный метод:

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, которая использует ту же библиотеку, которую использует большинство анализаторов пакетов linux. Из их репозитория github:

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

Вот сайт с инструкциями, которые помогут вам начать работу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .