Manipulação de campo de identificação IPv4 no linux

1

Quando Don't Fragment flag está definido, o IPv4 RFC permite definir a identificação arquivada como 0x0000 .

Eu tenho um par que está por trás do firewall que trava o RFC e bloqueia qualquer pacote IPv4 com o campo 0x0000 ID. Meu kernel linux "moderno" 4.4.0 gera pacotes com ID 0x0000 , portanto não consigo criar conexão TCP.

Como posso proibir a geração deste 0x0000 ID ou como manipulá-lo com o iptables mangle ou de outra maneira?

    
por luzik 22.08.2018 / 11:10

1 resposta

1

Você provavelmente está se referindo a RFC 6864 .

Em um 4.17.x Linux, eu pude ver id = 0 aparecendo apenas de forma confiável para o pacote SYN + ACK de um servidor respondendo a uma conexão recebida, mas não depois.

UPDATE: OP confirmou que era o caso usual na questão também (com um kernel 4.4.x).

Provável requisito mínimo : nftables v0.6. notrack não é necessário, as entradas do conntrack não se importam com esse id.

Por que vale a pena, aqui está uma regra nftables para alterar o valor de id para o valor 0xbeef quando [DF] está definido e id == 0. Eu não acho que iptables é 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 significa o sinal DF .

    
por 22.08.2018 / 22:42