web-dev-qa-db-fra.com

alternative à "netstat -s"

netstat -s affiche un grand nombre de statistiques de protocole très détaillées comme le nombre de TCP messages de réinitialisation reçus ou le nombre de messages de "demande d'écho" ICMP envoyés ou le nombre de paquets abandonnés en raison d'une route manquante .

Quand sous Linux, netstat est considéré comme obsolète de nos jours, existe-t-il une alternative?

Statistiques fournies par ss -s sont superficiels par rapport à ceux fournis par netstat.

26
Martin

netstat a en effet été déprécié par de nombreuses distributions, bien que ce soit vraiment une grande partie du package "net-tools" (y compris ifconfig, route et arp) qui a été déconseillé au profit du package "iproute2". iproute2 a évolué avec les dernières fonctionnalités de mise en réseau Linux , et les utilitaires traditionnels ne l'ont pas.

L'équivalent iproute2 que vous voulez est le peu connu nstat, ceci fournit le netstat -s compteurs, quoique sous une forme légèrement différente:

  • noms de compteur bruts de /proc sont utilisés, chacun préfixé avec sa classe ("Udp", "Tcp", "TcpExt" etc)
  • les descriptions longues (et éventuellement localisées) de netstat ne sont pas disponibles
  • compteurs à valeur nulle omis par défaut
  • en utilisant une sortie en colonnes cohérente avec le nom et la valeur dans les première et deuxième colonnes
  • la troisième colonne affiche la moyenne sur une fenêtre de temps configurable si vous avez démarré un nstat en arrière-plan (-d mode démon), ou 0,0 sinon

    par exemple. nstat affiche "UdpInDatagrams NNN" et non "Udp: InDatagrams", et non la version verbeuse netstat de "Udp: NNN paquets reçus".

nstat suppose également que vous voulez des nombres incrémentiels plutôt que absolus, donc l'équivalent le plus proche de netstat -s est /sbin/nstat -asz où les options sont -a utilisez des compteurs absolus, -s ne conserve pas le fichier historique, -z n'omettez pas les compteurs à valeur nulle.

ss reprend les parties "socket" de netstat, mais pas sa fonction complète comme vous l'avez découvert. (ss est en fait meilleur que netstat dans de nombreux cas, deux sont spécifiques: la possibilité d'utiliser des expressions de filtre et la capacité facultative d'utiliser le tcp_diag et inet_diag Modules du noyau Linux pour accéder aux données de socket du noyau plus directement que via /proc.)

Si vous devez confirmer le mappage des noms descriptifs, la source net-tools est la référence définitive: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale fournit un guide utile pour trouver les équivalents iproute2 des anciennes commandes (il est non entretenu et légèrement incomplet, il omet toute référence à nstat qui faisait partie du package iproute2 - depuis au moins 2004 temps noyau 2.6.x).

net-tools vit toujours cependant, et vous devriez pouvoir trouver un paquet pour votre distribution (ou le compiler vous-même).

19
mr.spuratic

NETSTAT est considéré comme obsolète de nos jours et d'autres programmes inclus dans les outils réseau comme arp, ifconfig, iptunnel, nameif, netstat et route.

La fonctionnalité fournie par plusieurs de ces utilitaires a été reproduite et améliorée dans la nouvelle suite iproute2, principalement en utilisant sa nouvelle commande ip.

Exemples de commandes obsolètes et de leurs remplacements:

  • arpip n (ip neighbor)
  • ifconfigip a (ip addr), ip link, ip -s (ip -stats)
  • iptunnelip tunnel
  • iwconfigiw
  • nameifip link, ifrename
  • netstatss, ip route (pour netstat -r), ip -s link (pour netstat -i), ip maddr (pour netstat -g)

La commande netstat lit divers fichiers/proc pour recueillir des informations. Cependant, cette approche devient faible lorsqu'il y a beaucoup de connexions à afficher. Cela le rend plus lent. La commande ss obtient ses informations directement de l'espace noyau. Les options utilisées avec les commandes ss sont très similaires à netstat, ce qui en fait un remplacement facile.

Les statistiques fournies par ss sont superficielles mais elles sont considérées la meilleure alternative à netstat

Exemples

ss | less  # get all connections
ss -t      # get tcp connections not in listen mode (server programs)
ss -u      # get udp connections not in listen mode
ss -x      # get unix socket pipe connections
ss -ta     # get all tcp connections
ss -au     # get all udp connections
ss -nt     # all tcp without Host name
ss -ltn    # listening tcp without Host resolution
ss -ltp    # listening tcp with PID and name
ss -s      # prints statstics
ss -tn -o  # tcp connection with domain Host and show keepalive timer
ss -tl4    # ip4 connections 
27
GAD3R

Vous voudrez peut-être vérifier le contenu 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

Pas le format le plus convivial, mais vous avez l'idée.

Je ne sais pas s'il contient réellement les éléments spécifiques que vous recherchez, mais ils peuvent être disponibles ailleurs dans /proc/net.

4
jcaron