alternativa a "netstat -s"


23

netstat -s stampa molte statistiche di protocollo molto dettagliate come il numero di messaggi di ripristino TCP ricevuti o il numero di messaggi "richiesta eco" ICMP inviati o il numero di pacchetti rilasciati a causa di un percorso mancante.

Quando in Linux netstatè considerato deprecato al giorno d'oggi, allora c'è un'alternativa?

Le statistiche fornite da ss -ssono superficiali rispetto a quelle fornite da netstat.


tcpdump sembra soddisfare lo stesso bisogno
Thomas Dickey il

4
netstatè deprecato. Usa ss.
Mikeserv,

@ThomasDickey tcpdumpconsente di catturare il traffico in tempo reale, ma non memorizza le statistiche in un modo netstat -smostra.
Martin,

1
Specificare la piattaforma sarebbe probabilmente utile. È possibile che si desideri esaminare l' sysctloutput o il contenuto di vari /proc/net/*nodi.
Jcaron,

Risposte:


16

netstatè stato infatti deprecata da molte distribuzioni, anche se è davvero molto più del pacchetto "net-tools" (compresi ifconfig, routee arp) che è stato deprecato in favore del "iproute2" pacchetto. iproute2 si è evoluto insieme alle più recenti funzionalità di rete di Linux e le utility tradizionali no.

L'equivalente iproute2 che desideri è poco conosciuto nstat, questo fornisce i netstat -scontatori, sebbene in una forma leggermente diversa:

  • /procvengono utilizzati i nomi di contatore non elaborati da , ognuno con prefisso con la sua classe ("Udp", "Tcp", "TcpExt" ecc.)
  • Le descrizioni lunghe (e possibilmente localizzate) di netstat non sono disponibili
  • contatori a valore zero omessi per impostazione predefinita
  • usando un output colonnare coerente con il nome e il valore nella prima e seconda colonna
  • la terza colonna mostra la media in una finestra temporale configurabile se è stato avviato un nstat in background ( -dmodalità demone), oppure 0.0 in caso contrario

    ad es. nstatstampa "UdpInDatagrams NNN" non "Udp: InDatagram" e non la versione dettagliata di "Udp: pacchetti NNN ricevuti".

nstatpresuppone anche che tu voglia numeri incrementali anziché assoluti, quindi l'equivalente più vicino netstat -sè /sbin/nstat -aszdove le opzioni -ausano contatori assoluti, -snon conservare il file cronologico, -znon omettere i contatori a valore zero.

ssassume le parti "socket" di netstat, ma non la sua funzione completa come hai scoperto. (in ssrealtà è meglio che netstatin molti casi, due specifici sono la capacità di usare espressioni di filtro e la possibilità opzionale di usare i moduli del kernel tcp_diage inet_diagLinux per accedere ai dati del socket del kernel più direttamente che via /proc.)

Se è necessario confermare il mapping per i nomi descrittivi, l'origine net-tools è il riferimento definitivo: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale fornisce una guida utile per trovare gli equivalenti iproute2 dei comandi più vecchi (non è mantenuto e leggermente incompleto, omette qualsiasi riferimento a nstatcui fa parte del pacchetto iproute2 da almeno 2004 kernel 2.6.x time).

net-tools vive comunque e dovresti essere in grado di trovare un pacchetto per la tua distribuzione (o compilarlo tu stesso).


23

NETSTAT è considerato obsoleto al giorno d'oggi e altri programmi inclusi in net-tools come arp, ifconfig, iptunnel, nameif netstate route.

La funzionalità fornita da molte di queste utility è stata riprodotta e migliorata nella nuova suite iproute2 , principalmente utilizzando il suo nuovo ipcomando.

Esempi di comandi obsoleti e loro sostituzioni:

arp => ip n (ip neighbour)

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

iptunnel => tunnel ip

iwconfig => iw

nameif => collegamento ip, ifrename

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

Il netstatcomando legge vari file / proc per raccogliere informazioni. Tuttavia, questo approccio si indebolisce quando ci sono molte connessioni da visualizzare. Questo lo rende più lento. Il sscomando ottiene le sue informazioni direttamente dallo spazio del kernel. Le opzioni utilizzate con i sscomandi sono molto simili a netstat che lo rendono un facile sostituto.

Le statistiche fornite da sssono superficiali ma è considerata la migliore alternativa anetstat

Esempi:

ottenere tutte le connessioni: ss | less

ss -t ottenere connessioni tcp non in modalità di ascolto (programmi server)

ss -u ottenere connessioni udp non in modalità di ascolto

ss -x ottenere connessioni unix socket pipe

ss -ta ottenere tutte le connessioni TCPC

ss -au ottenere tutte le connessioni udp

ss -nt tutto tcp senza nome host

ss -ltn ascolto tcp senza risoluzione host

ss -ltp ascolto tcp con PID e nome

ss -s stampa statstics

ss -tn -o connessione tcp con host di dominio e mostra timer keepalive

ss -tl4 connessioni ip4


4
Questo non risponde alla domanda, l'OP sottolinea correttamente che ss -s non fornisce dati che netstat -sforniscono. Questo contiene anche disinformazione: /proc è l'interfaccia del kernel per questo e che è esattamente come ssottiene gran parte dei dati: strace -e trace=file,read /sbin/ss -s.
mr.spuratic,

1
L'OP ha affermato che non tutti gli "ss sono superficiali", ma " ss -ssono superficiali rispetto a quelli forniti da netstat" (significa confrontarli con netstat -s). Ed è davvero la verità: ad esempio, da ss -s non si può sapere nulla sulle ritrasmissioni TCP.
Kenichi,

4

Potresti voler controllare il contenuto di /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

Non è il formato più amichevole, ma ti viene l'idea.

Non sono sicuro che contenga effettivamente gli elementi specifici che stai cercando, ma potrebbero essere disponibili altrove /proc/net.


5
ecco uno script (a linea singola lunga) per formattare l'output: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

1
/proc/net/snmpcontiene la maggior parte dei dati e /proc/net/netstatcontiene il resto. Purtroppo dovrai leggere la fonte di net-toolsstatistics.c per determinare tutte le mappature dei nomi, sebbene la maggior parte sia abbastanza ovvia.
mr.spuratic,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.