Consejos y trucos de netstat

13

En la misma línea que las preguntas de "Línea de comando útil" (para Windows , Linux y Mac ), creo que sería útil tener preguntas "formas útiles de usar la utilidad x". Las páginas de manual le dicen qué parámetros hacen, pero no necesariamente por qué los usarían, qué significa el resultado, qué cosas útiles hace el comando que nunca conocería sin una amplia experimentación, o cómo obtener la respuesta que realmente desea.

Me gustaría saber sobre netstat . Parece que debería ser capaz de calcular qué procesos están usando el ancho de banda y, de hecho, qué tan rápido el sistema está usando el ancho de banda. También parece útil para detectar conexiones no deseadas (probablemente virii), y proporciona todo tipo de información de enrutamiento (con la que solo tuve que jugar cuando intentaba hacer que un PDA Sharp Zaurus usara TCP / IP sobre USB). En otras palabras, Suena como una mina de oro, y esperaba que algunos de ustedes compartieran pepitas de información que hayan encontrado.

Incluya la versión de netstat y su sistema operativo en su respuesta. Sería bueno ver algunos resultados de muestra y saber lo que significa. Marqué esta pregunta como wiki de la comunidad, y espero que hagas lo mismo en tus respuestas, para que otras personas, conociendo un sistema operativo diferente, puedan colocar un comando casi equivalente si lo saben, en la misma respuesta, y entonces podemos votar qué respuestas son las más útiles.

Clinton Blackmore
fuente

Respuestas:

4

Muestra los puertos TCP / UDP de escucha locales y el proceso al que pertenecen:

sudo netstat -tulpn
cmcginty
fuente
44
El Mac casi equivalente parece ser "sudo lsof -i -n -P | grep LISTEN". (La omisión de los indicadores -n y -P hará que busque nombres de host y puerto).
Clinton Blackmore
1
Clinton: ese es un comando fantástico.
SpacemanSpiff
3

Tablas de enrutamiento de Netstat

[Esto fue probado en Mac OS X 10.5.7. Sospecho que el resultado es casi el mismo en todas las plataformas, ya que se indicó que funciona en Solaris.]

netstat -r 

le dará una tabla de enrutamiento.

netstat -nr

es lo mismo, pero le dará IP sin procesar en lugar de buscar nombres de máquinas. Su salida se ve así (solo más larga):

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.40.250     UGSc       19        1    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH          1     3140    lo0
169.254            link#5             UCS         0        0    en1
169.254.33.92      127.0.0.1          UHS         0        0    lo0
192.168.40         link#5             UCS        11        0    en1
192.168.40.1       0:17:f2:ca:a0:94   UHLW        0        0    en1   1150
...

Internet6:
Destination                             Gateway                         Flags      Netif Expire
::1                                     link#1                          UHL         lo0
fe80::%lo0/64                           fe80::1%lo0                     Uc          lo0
fe80::1%lo0                             link#1                          UHL         lo0
fe80::%en0/64                           link#4                          UC          en0
...
ff02::/32                               link#7                          UC          en2
ff02::/32                               link#8                          UC          en3

Columnas:

Destino y puerta de enlace: El destino es una dirección (o rango de direcciones) a la que podríamos enviar información. Todos los datos enviados a ese destino irán a la puerta de enlace asociada. La puerta de enlace sabe a dónde enviar los datos para su próximo 'salto' en el viaje. Si deseamos enviar datos a un destino que no tiene entrada en la tabla de enrutamiento, pasará por la puerta de enlace predeterminada.

Banderas: la página man / info enumera todas las banderas. Esto es lo que significa la configuración de mi puerta de enlace predeterminada:

UGSc
U       - RTF_UP           Route usable
 G      - RTF_GATEWAY      Destination requires forwarding by intermediary
  S     - RTF_STATIC       Manually added
   c    - RTF_PRCLONING    Protocol-specified generate new routes on use

Es curioso que afirme que se agregó manualmente, ya que vino a través de DHCP.

Refs: "El campo refcnt proporciona el número actual de usos activos de la ruta. Los protocolos orientados a la conexión normalmente se mantienen en una sola ruta durante la conexión, mientras que los protocolos sin conexión obtienen una ruta mientras se envían al mismo destino". (Página del hombre)

Uso: "El campo de uso proporciona un recuento de la cantidad de paquetes enviados usando esa ruta".

Netif: "La entrada de la interfaz indica la interfaz de red utilizada para la ruta".

En mi Mac

  • lo0 es la interfaz de bucle invertido.
  • en0 es ethernet.
  • en1 es inalámbrico.
  • en2 y en3 son utilizados por una máquina virtual.

Caducar: desde una página de manual para una versión diferente de netstat: "Muestra el tiempo (en minutos) restante antes de que expire la ruta"

Clinton Blackmore
fuente
2

En windows:

c:>netstat -a | find /c "TCP"
68

Muestra el número de conexiones TCP / IP. Es útil si está solucionando problemas de sistemas de alta red que se están quedando sin puertos TCP y necesitan aumentar MaxUserPorts .

Christopher_G_Lewis
fuente
OS X 10.5.7 equiv: netstat -a | grep -c tcp
Clinton Blackmore
2

Tasa de transmisión / recepción

En la Mac [OS X 10.5.7]:

netstat -i -w 10

[Vea la respuesta de Chuck para notas sobre el uso en Solaris y Linux.]

El resultado se ve así:

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       794     0    1166796        763     0      50358     0
       789     0    1167773        765     0      52542     0
       792     0    1166548        765     0      51174     0
       796     0    1167262        598     0      40152     0
       929     0    1278561        846     0      65625     0
       563     0     815570        530     0      36828     0
        32     0       4360          1     0        774     0
         9     0        705          0     0        684     0
         9     0        631          0     0          0     0

Esto muestra cuántos paquetes y bytes se transfirieron en un intervalo de tiempo determinado. (10 segundos en este ejemplo). Estaba conectado a YouTube y estaba descargando más de 1 MB cada intervalo, hasta que cerré la pestaña del navegador y la velocidad tocó fondo.

Esto podría resultar útil si está esperando que finalice una carga o descarga. Controle la tasa y, cuando caiga drásticamente, sabrá que está hecho.

Tenga en cuenta que el comando anterior muestra todo el rendimiento en todas las interfaces. Para abarcarlo a una interfaz particular (WiFi en este ejemplo), use el -Iindicador, de esta manera:

netstat -I en1 -w 10
Clinton Blackmore
fuente
1

Ventanas:

Netstat -n
(Show active TCP connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

Muestra conexiones TCP activas, pero no actividad de UDP.

Netstat -an
  (Show all connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

Muestra todas las conexiones TCP activas, además de escuchar las conexiones TCP y UDP. No muestra la actividad UDP saliente aquí.

Miguel
fuente
Agregaré un comentario por ahora, pero cuando tenga suficiente representante, editaré la respuesta. netstat en Mac OS X 10.5.7 equivalente: agregue -p tcp para que se limite al protocolo tcp. es decir. netstat -p tcp -n, onetstat -p tcp -an
Clinton Blackmore
Otro par de modificadores útiles en Windows son -o (muestra el PID propietario de cada socket) y -b (muestra el nombre del proceso propietario de cada socket). Particularmente útil al investigar máquinas que sospecha que se han visto comprometidas.
Murali Suriar
netstat -nt hace lo mismo (solo numérico y tcp)
Jauder Ho
1

Ventanas

netstat -b

Mostrar el proceso usando la conexión

usuario640
fuente
1

Windows 7 (posiblemente desde antes, sin embargo):

netstat -ano

enumera sesiones activas con PID asociados

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       776
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING       1724

o para guardar un paso

netstat -anb

(de un indicador CMD elevado) proporciona el nombre del proceso

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  RpcSs
 [svchost.exe]
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 Can not obtain ownership information
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING
 [wmpnetwk.exe]
  TCP    0.0.0.0:2048           0.0.0.0:0              LISTENING
TristanK
fuente
1

Estoy seguro de que estoy reinventando la rueda, pero aquí hay un simple script de Perl para ejecutar netstat y ordenar la salida de modo que las IP conectadas actualmente estén en primer lugar. Esto se usa mejor con el programa 'watch' para actualizaciones en intervalos de 2 segundos.

Actualización: reescritura significativa 2013-02-11 para deshacerse de muchos problemas y mostrar nombres de host

Salida de muestra:

Distant inbound connections: 2
   85.93.216.17:772               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
   80.90.47.155:443               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
Distant outbound connections: 3
   80.90.63.61                    --> 80.90.63.48:25      :    2        smtp.m-plify.net                      2 x TIME_WAIT
   85.93.216.17                   --> 85.93.216.18:772    :    1        maya.m-plify.net                      1 x ESTABLISHED
Looping connections: 57 (10 duplicates)
   127.0.0.1                      --> 127.0.0.1:9355      :   20                                              1 x ESTABLISHED, 8 x TIME_WAIT, 11 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:4713      :   10                                             10 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:9353      :    9                                              4 x TIME_WAIT, 5 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:3306      :    8                                              6 x ESTABLISHED, 1 x TIME_WAIT, 1 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:5445      :    5                                              1 x ESTABLISHED, 4 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:9354      :    2                                              2 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:7998      :    1                                              1 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:3351      :    1                                              1 x ESTABLISHED
   127.0.0.1                      --> 127.0.0.1:32000     :    1                                              1 x ESTABLISHED
revs David Tonhofer
fuente
0

Solaris

netstat -nr
(displays routing table)
Milner
fuente
0

Del libro Wicked Cool Shell Scripts:

Script # 90.1 : Cada 'n' minutos, tome los valores de netstats (a través de crontab)

Script # 90.2 : Analice el registro de rendimiento de ejecución de netstat, identificando resultados y tendencias importantes.

(Me encanta este libro, ¡vale la pena comprarlo!)

gharper
fuente
0

En Solaris, muchas personas están acostumbradas a hacer "netstat -i 1" para obtener un recuento de paquetes en ejecución. El netstat de Linux tiene una versión inútil de esta característica, ya que muestra el recuento sin procesar y no un delta. Para obtener resultados similares, haga "sar -n DEV 1 0". Considere en realidad "LANG = C sar -n DEV 1 0 | nombre de interfaz grep" (sar pone la hora con AM y PM al comienzo de la línea en ciertas configuraciones regionales, por lo que es mejor acostumbrarse a ejecutar siempre "LANG = C sar "en caso de que alguna vez lo analices).

carlito
fuente
Para obtener resultados de muestra y uso de Mac, consulte serverfault.com/questions/11289/netstat-tips-and-tricks/… .
Clinton Blackmore
0

En Solaris,

netstat -k

Muestra un resumen de varias estadísticas. Útil para verificar errores, etc.

Jauder Ho
fuente
0

Como nadie lo ha mencionado todavía:

netstat -s 

proporciona un montón de estadísticas útiles por protocolo en Linux.

dmourati
fuente