Manipulación del campo de identificación IPv4 en Linux

Manipulación del campo de identificación IPv4 en Linux

Cuando Don't Fragmentse establece el indicador, IPv4 RFC permite establecer el archivo de identificación en 0x0000.

Tengo un par que está detrás de un firewall que frena RFC y bloquea cualquier paquete IPv4 con dicho 0x0000campo de identificación. Mi kernel de Linux 4.4.0 "moderno" genera paquetes con ID, 0x0000por lo que no puedo crear una conexión TCP.

¿Cómo puedo no permitir la generación de esta 0x0000ID o cómo manipular este campo con iptables mangle o de cualquier otra forma?

Respuesta1

Probablemente te estés refiriendo aRFC 6864.

En Linux 4.17.x pude ver que id = 0 solo aparece de manera confiable para el paquete SYN+ACK de un servidor que responde a una conexión recibida, pero no después.

ACTUALIZACIÓN: OP confirmó que ese también era el caso habitual en la Pregunta (con un kernel 4.4.x).

Probablerequisito mínimo: nftables v0.6 . notrackno es necesario, a las entradas de conntrack no les importa esta identificación.

Por lo que vale, aquí hay unnftablesregla para alterar el valor de identificación al valor 0xbeefcuando se establece [DF] y id == 0. No creo que iptablessea capaz de hacer esto en absoluto.

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'    

0x4000aquí significala DFbandera.

información relacionada