Правило соответствия iptables для получения размера окна?

Правило соответствия iptables для получения размера окна?

Мне нужно правило для сопоставления пакетов без установленных параметров и/или с установленным определенным размером окна приема:

IP (tos 0x0, ttl 66, id 9000, смещение 0, флаги [нет], proto TCP (6), длина 40) yyyy11111 > xxxxhttp: Флаги [S], cksum 0xe425 (верно), seq 1729214256, win 715, длина 0

Итак, этот пакет имеет win 715, флаги [нет] -> как мне сопоставить такие пакеты?

решение1

Спасибо за ответы, но я думаю, что нашел лучшее решение (лучшее по скорости):

iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG

Строка выше гарантирует, что это пакет TCP, затем находит длину IP и принимает (есть дополнительное извлечение двух байт) ее к байтам, которые нужно сравнить (в примере 715). Одним словом, каждый может извлечь/найти/сравнить каждый бит/байт в пакетах с помощью замечательного модуля -> u32. Для получения дополнительной информации:iptables-u32.v0.1

решение2

В Iptables имеются параметры для работы с флагами и параметрами TCP, а именно --tcp-option numberи --tcp-flags.

Для размера окна можно использовать модуль string с опцией: --hex-string pattern. Таким образом, в вашем случае опция будет --hex-string 02CB. Чтобы получить точные результаты, следует ограничить смещение поиска с помощью --fromи --to. Посмотрите наруководство по iptablesдля получения дополнительной информации.

Связанный контент