когда 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
флаг.