Alternative zu "netstat -s"

23

netstat -s druckt eine Menge sehr detaillierter Protokollstatistiken aus, z. B. die Anzahl der empfangenen TCP-Rücksetznachrichten oder die Anzahl der ICMP-Echoanforderungsnachrichten oder die Anzahl der aufgrund einer fehlenden Route verworfenen Pakete.

Wenn Linux netstatheutzutage als veraltet gilt, gibt es dann eine Alternative?

Statistiken, die von bereitgestellt werden, ss -ssind oberflächlich im Vergleich zu denen, die von bereitgestellt werden netstat.

Martin
quelle
tcpdump scheint das gleiche Bedürfnis zu erfüllen
Thomas Dickey
4
netstatist veraltet. Verwenden Sie ss.
mikeserv
@ThomasDickey tcpdumpermöglicht die Erfassung von Live-Datenverkehr, speichert Statistiken jedoch nicht in einer Weise, die dies netstat -szeigt.
Martin
1
Das Angeben der Plattform wäre wahrscheinlich hilfreich. Möglicherweise möchten Sie die sysctlAusgabe oder den Inhalt verschiedener /proc/net/*Knoten untersuchen.
Jcaron

Antworten:

16

netstathat in der Tat von vielen Distributionen als veraltet, obwohl es wirklich viel von dem „net-tool“ Paket ist (einschließlich ifconfig, routeund arp) , die sie für den „iproute2“ -Paket ist veraltet. iproute2 hat sich zusammen mit den neuesten Linux-Netzwerkfunktionen weiterentwickelt , die traditionellen Dienstprogramme jedoch nicht.

Das gewünschte iproute2-Äquivalent ist das wenig bekannte nstat. Es enthält die Leistungsindikatoren netstat -s, allerdings in einer etwas anderen Form:

  • Es werden rohe /procZählernamen von verwendet, denen jeweils eine Klasse vorangestellt ist ("Udp", "Tcp", "TcpExt" usw.).
  • Die langen (und möglicherweise lokalisierten) Beschreibungen von netstat sind nicht verfügbar
  • Nullwertzähler werden standardmäßig weggelassen
  • Verwenden einer konsistenten Spaltenausgabe mit dem Namen und Wert in der ersten und zweiten Spalte
  • Die dritte Spalte zeigt den Durchschnitt über ein konfigurierbares Zeitfenster, wenn Sie ein Hintergrund-nstat ( -dDaemon-Modus) gestartet haben , oder 0,0, wenn nicht

    zB nstatprints "udpInDatagrams NNN" nicht "Udp: InDatagrams", und nicht die ausführliche netstat - Version von "Udp: NNN - Pakete empfangen".

nstatauch voraus , dass Sie als absolute Zahlen inkrementelle eher wollen, so der am nächsten entspricht netstat -sist , /sbin/nstat -aszwo die Optionen -aGebrauch absolute Zähler, -skeine History - Datei halten, -znicht auslassen Null-Wert - Zähler.

ssübernimmt die "Socket" -Teile netstat, aber nicht deren vollständige Funktion, wie Sie herausgefunden haben. ( ssIst eigentlich besser als netstatin vielen Fällen. Zwei spezielle sind die Möglichkeit, Filterausdrücke zu verwenden, und die optionale Möglichkeit, das Kernelmodul tcp_diagund das inet_diagLinux-Kernelmodul zu verwenden, um direkter als über auf Kernel-Socket-Daten zuzugreifen /proc.)

Wenn Sie die Zuordnung für beschreibende Namen bestätigen müssen, ist die Net-Tools-Quelle die endgültige Referenz: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale bietet eine nützliche Anleitung, um die iproute2-Entsprechungen der älteren Befehle zu finden (es ist nicht gepflegt und etwas unvollständig, es wird kein Verweis darauf verwendet, nstatder seit mindestens Kernel 2.6.x im iproute2-Paket enthalten ist).

net-tools lebt jedoch weiter und Sie sollten in der Lage sein, ein Paket für Ihre Distribution zu finden (oder es selbst zu kompilieren).

mr.spuratic
quelle
23

NETSTAT gilt heutzutage als veraltet und andere Programme, die in den Net-Tools enthalten sind, wie arp, ifconfig, iptunnel, nameif netstatund route.

Die von mehreren dieser Dienstprogramme bereitgestellten Funktionen wurden in der neuen iproute2- Suite reproduziert und verbessert , hauptsächlich durch Verwendung des neuen ipBefehls.

Beispiele für veraltete Befehle und deren Ersetzungen:

arp => ip n (ip nachbar)

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

iptunnel => ip tunnel

iwconfig => iw

nameif => ip link, ifrename

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

Der netstatBefehl liest verschiedene / proc-Dateien, um Informationen zu sammeln. Dieser Ansatz ist jedoch schwach, wenn viele Verbindungen angezeigt werden müssen. Das macht es langsamer. Der ssBefehl bezieht seine Informationen direkt aus dem Kernel-Space. Die mit den ssBefehlen verwendeten Optionen ähneln denen von netstat und sind daher leicht zu ersetzen.

Statistiken von sssind oberflächlich, gelten aber als die bessere Alternative zunetstat

Beispiele:

bekomme alle Verbindungen: ss | less

ss -t Holen Sie sich TCP-Verbindungen nicht im Listen-Modus (Server-Programme)

ss -u Holen Sie sich udp-Verbindungen nicht im Listen-Modus

ss -x Unix-Muffenrohrverbindungen erhalten

ss -ta Holen Sie sich alle TCP-Verbindungen

ss -au bekomme alle udp verbindungen

ss -nt Alle TCP ohne Hostnamen

ss -ltn Hören von TCP ohne Hostauflösung

ss -ltp Hören von TCP mit PID und Name

ss -s druckt statistische Daten

ss -tn -o TCP-Verbindung mit Domain-Host und Keepalive-Timer anzeigen

ss -tl4 IP4-Verbindungen

GAD3R
quelle
4
Dies beantwortet die Frage nicht, das OP weist korrekt darauf hin, dass ss -s keine Daten bereitgestellt werden, die netstat -sbereitstellen. Dies beinhaltet auch Fehlinformationen: /proc ist der Kernel - Schnittstelle für dieses und das ist genau , wie sserhält ein Großteil der Daten: strace -e trace=file,read /sbin/ss -s.
mr.spuratic
1
Das OP sagte, dass nicht die ganz "ss sind oberflächlich", sondern " ss -ssind oberflächlich im Vergleich zu den von netstat zur Verfügung gestellten" (Mittel im Vergleich zu netstat -s). Und es ist wirklich die Wahrheit: Von ss-s können Sie beispielsweise nichts über TCP Retransmissions wissen.
Kenichi
4

Möglicherweise möchten Sie den Inhalt von /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

Nicht das freundlichste Format, aber Sie bekommen die Idee.

Sie sind sich nicht sicher, ob es tatsächlich die gewünschten Artikel enthält, sie sind jedoch möglicherweise an anderer Stelle in verfügbar /proc/net.

jcaron
quelle
5
Hier ist ein (einzelnes, langes) Skript zum Formatieren der Ausgabe: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/snmpenthält die meisten Daten und /proc/net/netstatenthält den Rest. Leider müssen Sie net-tools statistics.csource lesen , um alle Namenszuordnungen zu ermitteln, obwohl die meisten ziemlich offensichtlich sind.
mr.spuratic