Uma vez que uma fonte significativa de conexões descartadas parece ser uma tentativa de se conectar a servidores não responsivos. Lembre-se de que acreditamos que "tentativas de conexão com falha" se referem a conexões de saída .
Rodando
ss | awk '$1 ~ /SYN-SENT/ {print $NF}'
10.160.32.211:8312
10.160.33.61:8312
10.160.32.146:8312
10.160.33.216:8312
10.160.34.186:8312
10.160.35.18:8312
10.160.32.157:8312
10.160.33.159:8312
10.160.34.246:8312
mostra muitas conexões nesse estado. Curiosamente, aponta para todos eles tentando se conectar à mesma porta. Se eu tentar endereços IP aleatórios dessa lista e tentar conectar-me à porta 8312 com telnet - por exemplo:
$ telnet 10.160.34.246 8312
telnet: connect to address 10.160.32.48: Connection timed out
O envio de um pacote SYN é o primeiro passo para estabelecer uma conexão. O outro lado deve responder com um pacote SYN-ACK - nesse caso, respondemos com um ACK e a conexão é estabelecida. Se, no entanto, houver um firewall entre os dois servidores, bloqueando a conexão, o SYN-ACK não será disponibilizado, portanto, o soquete permanecerá no estado SYN_SENT até que o tempo limite seja atingido.
Aqui está um diagrama roubado de lwn.net:
Estetempolimitenãoélongo(estoutentandodescobrirporquantotempoeatualizareiapropriadamente)-atéondepossodizeratéagora,édaordemdealgunssegundos(euteriapensado2xMSL,ondeMSLéaduraçãomáximadosegmento-masissoéumpalpite).
Agora,precisamosdiferenciarentretentativasdeconexãoemqueumSYNéenviadoenadaretorna,eumemqueumRSTéretornado.Umfirewallnocaminhonormalmenteébastanterude;eleiráremoveropacoteSYNoriginalsilenciosamente-elenãoenviaráumRST,queéamaneiranormaldeinformaraoclientequenãohánadaaqui.
Vocêpodeverumcomportamentosemelhanteaotentarseconectarawww.google.co.ukemumaportanaqualsuspeitaqueelesnãoestarãoouvindo,porexemplo:
$telnetwww.google.co.uk32654
Trying74.125.203.94...telnet:connecttoaddress74.125.203.94:Connectiontimedout
Enquantoexecutasimultaneamentealgoassim:
whiletrue;doss|awk'/SYN-SENT/&&$NF!~/^10./';sleep2;done
SYN-SENT0110.137.6.62:4608874.125.203.94:32654
SYN-SENT0110.137.6.62:4608874.125.203.94:32654
SYN-SENT0110.137.6.62:4608874.125.203.94:32654
Agora,estoudentrodeumaredecorporativae,quasedecerteza,oacessoaoGoogleemumaportanormal80/443éintermediadoporproxyequalqueroutraportatemfirewall,portanto,nãoesperamosverpacotesRST.Éporissoque,napergunta,euperguntosobreadiferençanasminhasregrasdoIPTablesentreREJECTeDROP.ODROPsimplesmentedescartaopacotenoIPTables,enquantooREJECTenviaumRST,euacredito.
Oqueeufareiemseguidaétcpdumpumaconexãocomumaportaquenãoescuta,eatualizaapropriadamente.
$tcpdump-nn-t-ieth0dst8.8.8.8
tcpdump:WARNING:eth0:noIPv4addressassigned
tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningoneth0,link-typeEN10MB(Ethernet),
capturesize65535bytes
IP10.137.6.62.40822>8.8.8.8.12345:Flags[S],seq505811469,win14600,options[mss1460,sackOK,TSval1513647100ecr0,nop,wscale9],length0
IP10.137.6.62.408228.8.8.8.12345:Flags[S],seq505811469,win14600,options[mss1460,sackOK,TSval1513648100ecr0,nop,wscale9],length0
IP10.137.6.62.40822>8.8.8.8.12345:Flags[S],seq505811469,win14600,options[mss1460,sackOK,TSval1513650100ecr0,nop,wscale9],length0
IP10.137.6.62.40822>8.8.8.8.12345:Flags[S],seq505811469,win14600,options[mss1460,sackOK,TSval1513654100ecr0,nop,wscale9],length0
IP10.137.6.62.40822>8.8.8.8.12345:Flags[S],seq505811469,win14600,options[mss1460,sackOK,TSval1513662100ecr0,nop,wscale9],length0
IP10.137.6.62.40822>8.8.8.8.12345:Flags[S],seq505811469,win14600,options[mss1460,sackOK,TSval1513678100ecr0,nop,wscale9],length0
TODO:Adicioneumtcpdumpdocasoondenãoháfirewall,entãovemospacotesRST.
UmaressalvaExistemmuitasfontesúteisdeinformaçõessobreadepuraçãodaconexãoTCPdoLinux.ARedHatéumadessasfontes.Emumadesuaspáginas,elessugeremousodaferramentadropwatch,paraestabelecerondeospacotesdarededokernelestãosendodescartados.Oqueessapáginanãoconseguedizeréque"descartar" pacotes de uma pilha de software é normal - uma vez que um pacote tenha sido resolvido, ele é descartado. A ferramenta dropwatch não faz distinção entre um pacote que é descartado porque é finalizado e um que é descartado devido a um estouro de buffer ou um tempo limite de orçamento de interrupção ou ...
Caveat Emptor.