alternativa a "netstat -s"

23

netstat -s imprime muchas estadísticas de protocolo muy detalladas, como la cantidad de mensajes de reinicio de TCP recibidos o la cantidad de mensajes de "solicitud de eco" ICMP enviados o la cantidad de paquetes descartados debido a una ruta faltante.

Cuando en Linux netstatse considera obsoleto en la actualidad, ¿hay alguna alternativa?

Las estadísticas proporcionadas por ss -sson superficiales en comparación con las proporcionadas por netstat.

Martín
fuente
tcpdump parece satisfacer la misma necesidad
Thomas Dickey
44
netstates obsoleto. Uso ss.
mikeserv
@ThomasDickey le tcpdumppermite a uno capturar tráfico en vivo, pero no almacena las estadísticas de una manera que se netstat -smuestra.
Martin
1
Especificar la plataforma probablemente sería útil. Es posible que desee examinar la sysctlsalida o el contenido de varios /proc/net/*nodos.
jcaron

Respuestas:

16

netstatde hecho ha quedado en desuso por muchas distribuciones, aunque es realmente la mayor parte del paquete de "net-tools" (incluyendo ifconfig, routey arp) que ha quedado en desuso a favor de la "iproute2" paquete. iproute2 ha evolucionado junto con las últimas funciones de red de Linux , y las utilidades tradicionales no.

El equivalente de iproute2 que desea es el poco conocido nstat, esto proporciona los netstat -scontadores, aunque de forma ligeramente diferente:

  • /procse utilizan los nombres de los contadores sin formato, cada uno con el prefijo de su clase ("Udp", "Tcp", "TcpExt", etc.)
  • Las descripciones largas (y posiblemente localizadas) de netstat no están disponibles
  • contadores de valor cero omitidos por defecto
  • usando una salida columnar consistente con el nombre y el valor en la primera y segunda columna
  • la tercera columna muestra el promedio durante una ventana de tiempo configurable si ha iniciado un nstat en segundo plano ( -dmodo demonio), o 0.0 si no

    por ejemplo, nstatimprime "UdpInDatagrams NNN", no "Udp: InDatagrams", y no la versión detallada de netstat de "Udp: paquetes NNN recibidos".

nstattambién supone que desea números incrementales en lugar de números absolutos, por lo que el equivalente más cercano netstat -ses /sbin/nstat -aszdonde las opciones son -ausar contadores absolutos, -sno mantener el archivo de historial, -zno omita contadores de valor cero.

ssse hace cargo de las partes de "socket" de netstat, pero no de su función completa como ya lo ha descubierto. ( ssEn realidad es mejor que netstaten muchos casos, dos específicos son la capacidad de las expresiones de filtro uso y la capacidad opcional para utilizar las tcp_diagy inet_diaglos módulos del kernel de Linux a los datos de acceso de socket del núcleo más directamente que a través de /proc.)

Si necesita confirmar la asignación de nombres descriptivos, la fuente de net-tools es la referencia definitiva: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale proporciona una guía útil para encontrar los equivalentes de iproute2 de los comandos más antiguos (no se mantiene y está un poco incompleto, omite cualquier referencia a la nstatque ha formado parte del paquete iproute2 desde al menos 2004 kernel 2.6.x time).

Sin embargo, net-tools sigue vivo , y debería poder encontrar un paquete para su distribución (o compilarlo usted mismo).

Sr. púrpura
fuente
23

NETSTAT se considera obsoleto en la actualidad y en otros programas incluidos en las herramientas de red como arp, ifconfig, iptunnel, nameif netstaty route.

La funcionalidad proporcionada por varias de estas utilidades se ha reproducido y mejorado en la nueva suite iproute2 , principalmente mediante el uso de su nuevo ipcomando.

Ejemplos de comandos obsoletos y sus reemplazos:

arp => ip n (vecino de ip)

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

iptunnel => túnel ip

iwconfig => iw

nameif => enlace ip, ifrename

netstat => ss, ruta ip (para netstat-r), enlace ip -s (para netstat -i), ip maddr (para netstat-g)

El netstatcomando lee varios archivos / proc para recopilar información. Sin embargo, este enfoque se debilita cuando hay muchas conexiones para mostrar. Esto lo hace más lento. El sscomando obtiene su información directamente del espacio del kernel. Las opciones utilizadas con los sscomandos son muy similares a netstat, por lo que es un reemplazo fácil.

Las estadísticas proporcionadas por ssson superficiales, pero se considera la mejor alternativa anetstat

Ejemplos:

obtener todas las conexiones: ss | less

ss -t Obtener conexiones TCP no en modo de escucha (programas de servidor)

ss -u obtener conexiones udp que no estén en modo de escucha

ss -x obtener conexiones de tubería de socket unix

ss -ta obtener todas las conexiones tcp

ss -au obtener todas las conexiones udp

ss -nt todo el TCP sin nombre de host

ss -ltn escuchando tcp sin resolución de host

ss -ltp escuchando tcp con PID y nombre

ss -s imprime estadísticas

ss -tn -o conexión tcp con host de dominio y mostrar temporizador keepalive

ss -tl4 conexiones ip4

GAD3R
fuente
44
Esto no responde la pregunta, el OP señala correctamente que ss -s no proporciona los datos que netstat -sproporciona. Esto también contiene información errónea: /proc es la interfaz del núcleo para esto y eso es exactamente cómo ssobtiene gran parte de los datos: strace -e trace=file,read /sbin/ss -s.
Sr.Spuratic
1
El OP dijo que no todos los "ss son superficiales", sino " ss -sson superficiales en comparación con los proporcionados por netstat" (significa comparar con netstat -s). Y es realmente la verdad: por ejemplo, desde ss -s no se puede saber nada sobre las retransmisiones TCP.
kenichi
4

Es posible que desee verificar el contenido 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

No es el formato más amigable, pero entiendes la idea.

No estoy seguro de que realmente contenga los elementos específicos que está buscando, pero pueden estar disponibles en otros lugares /proc/net.

jcaron
fuente
55
aquí hay una secuencia de comandos (línea larga única) para formatear la salida: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 mayoría de los datos y /proc/net/netstatcontiene el resto. Lamentablemente, deberá leer la statistics.cfuente de net-tools para determinar todas las asignaciones de nombres, aunque la mayoría son bastante obvias.
Sr.Spuratic