
Quando Don't Fragment
o sinalizador é definido, o RFC IPv4 permite definir a identificação arquivada como 0x0000
.
Eu tenho um peer que está atrás de um firewall que freia o RFC e bloqueia qualquer pacote IPv4 com esse 0x0000
campo de ID. Meu kernel Linux 4.4.0 "moderno" gera pacotes com ID, 0x0000
portanto não consigo criar uma conexão TCP.
Como posso proibir a geração deste 0x0000
ID ou como manipular este campo com iptables mangle ou de qualquer outra forma?
Responder1
Você provavelmente está se referindo aRFC 6864.
Em um Linux 4.17.x, pude ver id = 0 aparecer de forma confiável apenas para o pacote SYN + ACK de um servidor que responde a uma conexão recebida, mas não depois.
ATUALIZAÇÃO: O OP confirmou que esse também era o caso usual na pergunta (com um kernel 4.4.x).
Provávelrequisito mínimo: nftables v0.6. notrack
não é necessário, as entradas do conntrack não se importam com esse ID.
Se valer a pena, aqui está umnftables
regra para alterar o valor do id para o valor 0xbeef
quando [DF] está definido e id == 0. Não acho que iptables
seja capaz de fazer isso.
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
aqui significaa DF
bandeira.