Назад | Перейти на главную страницу

iptables: Как посчитать, сколько байтов в пакете?

Я работаю над брандмауэром и хотел бы знать, как рассчитать, сколько байтов в пакете, или хотя бы иметь представление о средних значениях.
Когда я погуглил, много упоминалось 1500 байт, но, похоже, это зависит от размера файла и протокола.
1500 байт, это для tcp? А как насчет icmp?
Из любопытства: какой максимальный размер?

Один из способов узнать размер пакета с помощью iptables - использовать -j LOG цель. Вы можете использовать это для регистрации определенных пакетов. В файле системного журнала вы можете увидеть такие записи журнала, как:

IN=<iface1> OUT=<iface2> SRC=1.2.3.4 DST=4.3.2.1 LEN=1400

Этот пакет имеет длину 1400 байт. Максимальный размер пакета определяется базовым протоколом. Число 1500 может быть связано с Кадры Ethernet.

Размер меняется, потому что на некоторых машинах есть пользовательские настройки, которые изменяют MTU:

http://en.wikipedia.org/wiki/Maximum_transmission_unit

Максимальный размер кадра данных обычно составляет 1500 байтов, но кадры Jumbo Frames расширяют это распределение:

http://en.wikipedia.org/wiki/Jumbo_frame

Вот полные спецификации:

http://en.wikipedia.org/wiki/Ethernet_frame

Запустите wirehark или ntop и оцените статистику. Любой из них покажет вам распределение длины пакета по периоду.

1500 байт - это MTU по умолчанию для многих устройств Ethernet. Что говорит здесь @Khaled.

Если вы посмотрите на это чисто с точки зрения сети, тогда вам не нужно рассчитывать размер пакета, поскольку он включен в Заголовок IPv4 при смещении долота 19–31.

http://en.wikipedia.org/wiki/IPv4#Packet_structure

Длина
Это 16-битное поле определяет полный размер дейтаграммы, включая заголовок и данные, в байтах. Минимальная длина дейтаграммы составляет 20 байтов (20-байтовый заголовок + 0 байтов данных), а максимальная - 65 535 байтов - максимальное значение 16-разрядного слова. Максимальный размер дейтаграммы, которую должен обрабатывать любой хост, составляет 576 байт.

Поэтому, если вы хотите собирать размеры пакетов, вам нужен простой инструмент, который собирает заголовки пакетов IPv4 и сохраняет их.

Одним из наиболее распространенных инструментов является tcpdump / wirehark. Настройте захват на определенный период времени. Затем загрузите захват в wirehark. Имеется встроенный инструмент анализа, который предоставит вам статистику и информацию о размерах пакетов.

Также есть инструменты мониторинга, такие как nTop который вы можете установить на свой брандмауэр. Этот инструмент будет собирать статистику в режиме реального времени.