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

Управление полем идентификации IPv4 в Linux

когда Don't Fragment установлен флаг, IPv4 RFC позволяет установить Идентификационное поле 0x0000.

У меня есть одноранговый узел, который находится за брандмауэром, который тормозит RFC и блокирует любые пакеты IPv4 с такими 0x0000 Поле ID. Мое "современное" ядро ​​Linux 4.4.0 генерирует пакеты с ID 0x0000 поэтому я не могу создать TCP-соединение.

Как я могу запретить создание этого 0x0000 ID или как манипулировать этим полем с помощью iptables mangle или любым другим способом?

Вы, наверное, имеете в виду RFC 6864.

В Linux 4.17.x я мог видеть, что id = 0 надежно появляется только для пакета SYN + ACK сервера, отвечающего на полученное соединение, но не после него.

ОБНОВЛЕНИЕ: OP подтвердил, что это было обычным случаем и в вопросе (с ядром 4.4.x).

Вероятно минимальное требование: nftables v0.6. notrack не требуется, записи conntrack не заботятся об этом идентификаторе.

Для чего это стоит, вот nftables правило для изменения значения идентификатора на значение 0xbeef когда [DF] установлен и id == 0. Я не думаю iptables вообще может это делать.

nft add table raw
nft 'add chain raw output {type filter hook output priority -300;}'
nft 'add rule raw output ip frag-off & 0x4000 != 0 ip id == 0 ip id set 0xbeef'    

0x4000 здесь означает то DF флаг.