Como fechar um lado de uma conexão TCP deixando o outro lado aberto? (Nenhum FIN ou RST enviado)

0

Estou tentando recriar um cenário em que um cliente Solaris está conectado a um servidor Linux por meio do soquete TCP, mas o lado do cliente da conexão cai repentinamente sem enviar um pacote FIN ou RST. Este é um resultado muito semelhante a ter o cabo de rede entre o cliente e o servidor puxado.

Existe algum comando ou série de comandos no Solaris que consiga recriar essa situação sem precisar puxar cabos de rede?

    
por Taylor 11.10.2018 / 01:48

1 resposta

0

Você provavelmente precisaria de algo como configurar uma regra de descarte ipfilter que corresponda a essa conexão específica e, em seguida, usar tcpdrop ou algo parecido para dizer ao Solaris para apagar o soquete.

A regra de descarte ipfilter precisa ser configurada primeiro, caso contrário o kernel ainda pode responder com um pacote RST quando o primeiro pacote de entrada após tcpdrop chegar. Se você puder deixar as conexões expirarem por conta própria no lado do Solaris, então o tcpdrop não é absolutamente necessário.

Observe que tcpdrop usa uma interface de kernel não documentada, portanto não há garantia de que ele funcione com versões do Solaris mais recentes do que foi feito.

Se não houver outro tráfego para o mesmo host que você queira manter, outra possibilidade é adicionar uma rota blackhole para o host do servidor. Mas comparado a apenas descartar uma única conexão TCP, esse é um instrumento bastante contundente que elimina todas as outras conexões para o mesmo host como danos colaterais.

Veja também: link

    
por 11.10.2018 / 10:17