alternativa para “netstat -s”

18

netstat -s imprime várias estatísticas de protocolo muito detalhadas, como o número de mensagens de redefinição de TCP recebidas ou o número de ICMP Mensagens de "solicitação de eco" enviadas ou número de pacotes descartados devido a uma rota ausente.

Quando no Linux netstat é considerado obsoleto nos dias de hoje, existe uma alternativa?

As estatísticas fornecidas por ss -s são superficiais comparadas com as fornecidas por netstat .

    
por Martin 30.01.2016 / 12:24

3 respostas

11

netstat foi de fato depreciado por muitas distribuições, embora seja realmente muito do pacote "net-tools" (incluindo ifconfig , route e arp ) que foi preterido em favor do "iproute2 " pacote. iproute2 evoluiu juntamente com os mais recentes recursos de rede do Linux , e os utilitários tradicionais não.

O equivalente iproute2 que você deseja é o pouco conhecido nstat , isso fornece os contadores netstat -s , embora de uma forma um pouco diferente:

  • nomes de contadores brutos de /proc sã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 nas primeiras e segundas colunas
  • terceira coluna mostra a média em uma janela de tempo configurável se você iniciou um nstat de fundo ( -d daemon mode), ou 0.0 se não for

    por exemplo. nstat imprime "UdpInDatagrams NNN" e não "Udp: InDatagrams", e não a versão detalhada do netstat de "Udp: NNN packets received".

nstat também pressupõe números incrementais em vez de absolutos, portanto, o equivalente mais próximo a netstat -s é /sbin/nstat -asz , em que as opções são -a use contadores absolutos, -s não mantém arquivo histórico, -z não omita os contadores de valor zero.

ss assume as partes "de soquete" de netstat , mas não sua função completa como você descobriu. ( ss é realmente melhor que netstat em muitos casos, dois específicos são a capacidade de usar expressões de filtro e a capacidade opcional de usar os módulos de kernel tcp_diag e inet_diag Linux para acessar dados de 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: link

Doug Vitale fornece um guia útil para encontrar os equivalentes de iproute2 dos comandos mais antigos (é não-mantido e ligeiramente incompleto, omite qualquer referência a nstat que tenha sido parte do pacote iproute2 desde pelo menos 2004 tempo do kernel 2.6.x).

net-tools vive em , no entanto, e você deve ser capaz de encontrar um pacote para sua distribuição (ou compile você mesmo).

    
por 08.03.2016 / 19:34
20

NETSTAT é considerado obsoleto nos dias de hoje e outros programas incluídos nas ferramentas de rede como arp, ifconfig, iptunnel, nameif, netstat e route.

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

Exemplos de comandos reprovados e suas substituições:

arp = > ip n (vizinho ip)

ifconfig = > ip a (ip addr), ip link, ip -s (ip -stats)

iptunnel = > túnel ip

iwconfig = > iw

nameif = > ip link, ifrename

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

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

As estatísticas fornecidas por ss são superficiais , mas é considerada a melhor alternativa para netstat

Exemplos:

obter todas as conexões: ss | less

ss -t get conexões tcp não no modo de escuta (programas do servidor)

ss -u get conexões udp não no modo de escuta

ss -x obtém conexões de pipe de soquete unix

ss -ta obtém todas as conexões tcp

ss -au obtém todas as conexões udp

ss -nt all tcp sem nome de host

ss -ltn ouvindo o tcp sem resolução do host

ss -ltp ouvindo tcp com PID e nome

ss -s imprime estatísticas

ss -tn -o tcp conexão com host de domínio e mostrador temporizador keepalive

ss -tl4 ip4 conexões

    
por 10.02.2016 / 12:36
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ê tem a ideia.

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

    
por 09.02.2016 / 01:08