reset TCP falso com IP id 0 do redirecionador baseado em linux

0

Estou tentando depurar um problema com a redefinição espúria do TCP sendo enviada por um dispositivo baseado em Linux que encaminha o tráfego de uma interface para outra depois de fazer um NAT. A configuração é algo como isto

client --- WANlink --- [roteador (eth0) - roteador (eth1)] --- servidor

O roteador é baseado em Linux, com a versão 3.10.x do kernel. O roteador faz um NAT antes de enviar o pacote para o servidor, isso é feito através de ganchos netfilter e não regras NAT iptable, o rastreamento de conexão não é usado. É um NAT 1-1 cego.

O que eu vejo é que durante grandes downloads de arquivos do cliente, um reset é enviado para o cliente do lado do roteador (eth0), mesmo que o roteador não intercepte a conexão. A reinicialização acontece aleatoriamente no meio da conexão. A única coisa que vejo é que isso parece acontecer quando um ACK vem do cliente para um número de seqüência antigo (mas não fora de ordem). O cliente Linux, no entanto, parece continuar com a conexão (que era ímpar) e a conexão parece se recuperar após alguns RSTs (que parecem ser enviados em resposta à confirmação vinda do cliente).

Além disso, a coisa estranha sobre o pacote de redefinição é que o ID do IP é 0.

Isso não parece acontecer o tempo todo e em todos os lugares. Apenas algumas instâncias dessa configuração. Eu não acho que o pacote do cliente esteja subindo na cadeia de entrada. A maioria dos pacotes parece ser NATed e forward, parece muito estranho que alguns ACKs do cliente resultem na redefinição do envio para o cliente.

Existe alguma razão pela qual o linux enviaria um reset para o cliente, quando tudo o que está fazendo é encaminhar pacotes. A conexão não é terminada nem mesmo no roteador e nem deve atingir a pilha TCP.

Além disso, o ID do IP no pacote de reinicialização sendo zero oferecerá pistas sobre a origem da redefinição?

thanx para qualquer ajuda.

    
por skp 13.04.2018 / 04:11

0 respostas