alternativa ao "netstat -s"

23

netstat -s imprime muitas estatísticas de protocolo muito detalhadas, como o número de mensagens de redefinição de TCP recebidas ou o número de mensagens de "solicitação de eco" do ICMP enviadas ou o número de pacotes descartados devido à falta de uma rota.

Quando no Linux netstaté considerado obsoleto hoje em dia, existe uma alternativa?

As estatísticas fornecidas por ss -ssão superficiais em comparação com as fornecidas por netstat.

Martin
fonte
tcpdump parece preencher a mesma necessidade
Thomas Dickey
4
netstatestá obsoleto. Use ss.
precisa saber é
O @ThomasDickey tcpdumppermite capturar o tráfego ao vivo, mas não armazena estatísticas da maneira netstat -smostrada.
Martin Martin
1
Especificar a plataforma provavelmente seria útil. Você pode examinar a sysctlsaída ou o conteúdo de vários /proc/net/*nós.
jcaron

Respostas:

16

netstatna verdade, foi substituído por muitas distribuições, mas é realmente muito do pacote "net-tools" (incluindo ifconfig, routee arp) que foi preterido em favor do "iproute2" pacote. O iproute2 evoluiu junto com os recursos de rede mais recentes do Linux , e os utilitários tradicionais não.

O equivalente a iproute2 que você deseja é pouco conhecido nstat, isso fornece os netstat -scontadores, embora de uma forma ligeiramente diferente:

  • nomes brutos de contador /procsão usados, cada um prefixado com sua classe ("Udp", "Tcp", "TcpExt" etc.)
  • as descrições longas (e possivelmente localizadas) do netstat não estão disponíveis
  • contadores de valor zero omitidos por padrão
  • usando saída colunar consistente com o nome e o valor na primeira e na segunda colunas
  • A terceira coluna mostra a média em uma janela de tempo configurável se você iniciou um nstat em segundo plano ( -dmodo daemon) ou 0,0, se não

    por exemplo, nstatimprime "UdpInDatagrams NNN", não "Udp: InDatagrams" e não a versão detalhada do netstat de "Udp: NNN pacotes recebidos".

nstattambém pressupõe que você deseja números incrementais em vez de absolutos; portanto, o equivalente mais próximo netstat -sé /sbin/nstat -aszonde as opções são -ausar contadores absolutos, -snão manter o arquivo histórico, -znão omitir contadores de valor zero.

ssassume o "soquete" partes de netstat, mas não sua função completa, como você descobriu. ( ssé realmente melhor do que netstatem muitos casos, dois específicos são a capacidade de usar expressões de filtro e a capacidade opcional de usar os módulos do kernel Linux tcp_diage inet_diagpara acessar os dados do soquete do kernel mais diretamente do que via /proc.)

Se você precisar confirmar o mapeamento para nomes descritivos, a fonte net-tools é a referência definitiva: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale fornece um guia útil para encontrar os equivalentes iproute2 dos comandos mais antigos (ele é mantido e um pouco incompleto, omite qualquer referência à nstatqual tenha sido parte do pacote iproute2 desde pelo menos o kernel 2.6.x de 2004 ).

No entanto, o net-tools permanece vivo e você deve encontrar um pacote para sua distribuição (ou compilá-lo você mesmo).

mr.spuratic
fonte
23

Atualmente, o NETSTAT é considerado obsoleto e outros programas incluídos nas ferramentas de rede como arp, ifconfig, iptunnel, nameif netstate route.

A funcionalidade fornecida por vários desses utilitários foi reproduzida e aprimorada no novo conjunto iproute2 , principalmente usando o novo ipcomando.

Exemplos de comandos obsoletos e suas substituições:

arp => ip n (vizinho de ip)

ifconfig => ip a (endereço IP), link ip, ip -s (ip -stats)

iptunnel => túnel ip

iwconfig => iw

nameif => link ip, ifrename

netstat => ss, rota ip (para netstat-r), link ip-s (para netstat -i), ip maddr (para netstat-g)

O netstatcomando lê vários arquivos / proc para coletar informações. No entanto, essa abordagem fica fraca quando há muitas conexões a serem exibidas. Isso torna mais lento. O sscomando obtém suas informações diretamente do espaço do kernel. As opções usadas com os sscomandos são muito semelhantes ao netstat, tornando-o uma substituição fácil.

As estatísticas fornecidas por sssão superficiais, mas são consideradas a melhor alternativa paranetstat

Exemplos :

obtenha todas as conexões: ss | less

ss -t obter conexões TCP não no modo de escuta (programas de servidor)

ss -u obter conexões udp fora do modo de escuta

ss -x obter conexões de tubo de soquete unix

ss -ta obtenha todas as conexões tcp

ss -au obtenha todas as conexões udp

ss -nt tudo tcp sem nome de host

ss -ltn escutando tcp sem resolução de host

ss -ltp ouvindo tcp com PID e nome

ss -s imprime estatísticas

ss -tn -o conexão tcp com o host do domínio e mostrar o cronômetro keepalive

ss -tl4 conexões ip4

GAD3R
fonte
4
Isso não responde à pergunta, o OP indica corretamente que ss -s não fornece dados que netstat -sfornecem. Este também contém informações erradas: /proc é a interface do kernel para isso e é exatamente assim que ssobtém grande parte dos dados: strace -e trace=file,read /sbin/ss -s.
mr.spuratic
1
O OP disse que não apenas os "ss são superficiais", mas " ss -ssão superficiais em comparação com os fornecidos pelo netstat" (significa comparar com netstat -s). E é realmente a verdade: por exemplo, dos ss -s você não sabe nada sobre retransmissões de TCP.
Kenichi
4

Você pode querer verificar o conteúdo de /proc/net/netstat:

TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed EmbryonicRsts PruneCalled RcvPruned OfoPruned OutOfWindowIcmps LockDroppedIcmps ArpFilter TW TWRecycled TWKilled PAWSPassive PAWSActive PAWSEstab DelayedACKs DelayedACKLocked DelayedACKLost ListenOverflows ListenDrops TCPPrequeued TCPDirectCopyFromBacklog TCPDirectCopyFromPrequeue TCPPrequeueDropped TCPHPHits TCPHPHitsToUser TCPPureAcks TCPHPAcks TCPRenoRecovery TCPSackRecovery TCPSACKReneging TCPFACKReorder TCPSACKReorder TCPRenoReorder TCPTSReorder TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo TCPLostRetransmit TCPRenoFailures TCPSackFailures TCPLossFailures TCPFastRetrans TCPForwardRetrans TCPSlowStartRetrans TCPTimeouts TCPLossProbes TCPLossProbeRecovery TCPRenoRecoveryFail TCPSackRecoveryFail TCPSchedulerFailed TCPRcvCollapsed TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv TCPAbortOnData TCPAbortOnClose TCPAbortOnMemory TCPAbortOnTimeout TCPAbortOnLinger TCPAbortFailed TCPMemoryPressures TCPSACKDiscard TCPDSACKIgnoredOld TCPDSACKIgnoredNoUndo TCPSpuriousRTOs TCPMD5NotFound TCPMD5Unexpected TCPSackShifted TCPSackMerged TCPSackShiftFallback TCPBacklogDrop TCPMinTTLDrop TCPDeferAcceptDrop IPReversePathFilter TCPTimeWaitOverflow TCPReqQFullDoCookies TCPReqQFullDrop TCPRetransFail TCPRcvCoalesce TCPOFOQueue TCPOFODrop TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail TCPFastOpenListenOverflow TCPFastOpenCookieReqd TCPSpuriousRtxHostQueues BusyPollRxPackets
TcpExt: 0 0 3310 41566 0 0 0 8 0 0 6402271 0 0 0 0 55 4280514 134510 38423 0 611 15354484 20413302 794718685 0 14094957 6423168 25905597 17269587 4 23681 29 50 20 0 25 43 25 19211 1800 131 0 93 93 25430 4864 18099 1199566 2300620 1280201 0 279 0 0 38507 607 2359841 19 98943 1769 0 5993 0 0 0 3 65 1310588 380 0 0 0 0 613504 190 0 12056356 0 0 0 0 3 735740 43633 0 606 3933 193 0 24 0 0 0 14 0
IpExt: InNoRoutes InTruncatedPkts InMcastPkts OutMcastPkts InBcastPkts OutBcastPkts InOctets OutOctets InMcastOctets OutMcastOctets InBcastOctets OutBcastOctets InCsumErrors InNoECTPkts InECT1Pkts InECT0Pkts InCEPkts
IpExt: 0 0 50492 0 18482301 0 68850196397 26546692767 3029352 0 2305454225 0 0 457718114 36 19480 2472

Não é o formato mais amigável, mas você entendeu.

Não tenho certeza se ele realmente contém os itens específicos que você está procurando, mas eles podem estar disponíveis em outros lugares /proc/net.

jcaron
fonte
5
aqui está um script (única linha longa) para formatar a saída:awk '{for(i=1;i<=NF;i++)title[i] = $i; getline; print title[1]; for(i=2;i<=NF;i++)printf " %s: %s\n", title[i], $i }' /proc/net/netstat
meuh 15/02/16
1
/proc/net/snmpcontém a maioria dos dados e /proc/net/netstato restante. Infelizmente, você precisará ler a statistics.cfonte net-tools para determinar todos os mapeamentos de nomes, embora a maioria seja bastante óbvia.
mr.spuratic