Saltar la navegación

netstat

El comando netstat nos va a permitir analizar el estado de nuestra red. Agrupa la funcionalidad de múltiples comandos; siempre podremos encontrar otro comando que haga una parte de la labor de netstat. Por otro lado, es un comando multiplataforma, lo encontramos en Unix, Windows y MAC.

La primera opción de netstat es la que indica sobre qué se va a mostrar información:

-r    Tabla de enrutamiento.
-i Interfaces de red.
-s Estadísticas.
-M     
Información de las conexiones enmascaradas (NAT).
  Si no ponemos ninguna de las anteriores opciones, se nos muestra información sobre los sockets abiertos del sistema.

Otras opciones que pueden usarse junto con varias de las opciones anteriores son:

-n Muestra las ip y los puertos en números y por lo tanto no hace traducción de nombres. El comando funciona así más rápido.
-e     Muestra información extra.
-c Hace que netstat funcione de forma continua, ejecutando el comando cada segundo.
-W     
Evita que las líneas largas se corten, algo normal cuando no se usa la opción -n y aparecen nombres en vez de IP.

Por ejemplo, si nos queremos ceñir únicamente a los sockets abiertos que usen tcp (-t) y udp (-u) tanto sobre IPv4 como IPv6:

# netstat -ntu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:53603         127.0.0.1:51236         TIME_WAIT  
tcp        0      0 192.168.1.50:58911      217.116.23.15:80        TIME_WAIT  
tcp        0      0 127.0.0.1:53606         127.0.0.1:51236         ESTABLISHED
tcp        0      0 127.0.0.1:51236         127.0.0.1:53606         ESTABLISHED
tcp        0      0 192.168.1.50:48707      77.240.113.206:80       ESTABLISHED
tcp        0      0 127.0.0.1:53604         127.0.0.1:51236         TIME_WAIT

Con la opción -a podemos añadir también los sockets que están en escucha (LISTEN):

# netstat -ntua
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:55179           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:51235         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:51236         0.0.0.0:*               LISTEN     
tcp        0      0 192.168.1.50:58919      217.116.23.15:80        ESTABLISHED
tcp        0      0 192.168.1.50:57553      212.106.219.114:80      ESTABLISHED
tcp        0      0 192.168.1.50:42671      212.155.198.30:80       TIME_WAIT  
tcp        0      0 192.168.1.50:34249      81.45.8.13:80           ESTABLISHED
tcp        0      0 127.0.0.1:53611         127.0.0.1:51236         TIME_WAIT  
tcp        0      0 192.168.1.50:57970      74.125.71.95:80         ESTABLISHED
tcp        0      1 192.168.1.50:53647      217.116.23.3:80         LAST_ACK   
tcp        0      0 192.168.1.50:40789      81.45.8.14:80           ESTABLISHED
tcp        0      0 192.168.1.50:36676      93.189.33.105:80        ESTABLISHED
tcp        0      0 192.168.1.50:57967      74.125.71.95:80         ESTABLISHED
tcp        0      1 192.168.1.50:53648      217.116.23.3:80         LAST_ACK   
tcp6       0      0 :::39246                :::*                    LISTEN     
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 0.0.0.0:11828           0.0.0.0:*                          
udp        0      0 0.0.0.0:631             0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 0.0.0.0:44118           0.0.0.0:*                          
udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
udp6       0      0 :::57603                :::*                               
udp6       0      0 :::40318                :::*

Si queremos solo los sockets tcp y udp abiertos y en escucha que usen IPv4 añadimos -4 (lo mismo para IPv6 es -6):

# netstat -ntua4
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:55179           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:51235         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:51236         0.0.0.0:*               LISTEN     
tcp        0      0 192.168.1.50:58919      217.116.23.15:80        ESTABLISHED
tcp        0      0 192.168.1.50:57553      212.106.219.114:80      ESTABLISHED
tcp        0      0 192.168.1.50:42671      212.155.198.30:80       TIME_WAIT  
tcp        0      0 192.168.1.50:34249      81.45.8.13:80           ESTABLISHED
tcp        0      0 127.0.0.1:53611         127.0.0.1:51236         TIME_WAIT  
tcp        0      0 192.168.1.50:57970      74.125.71.95:80         ESTABLISHED
tcp        0      1 192.168.1.50:53647      217.116.23.3:80         LAST_ACK   
tcp        0      0 192.168.1.50:40789      81.45.8.14:80           ESTABLISHED
tcp        0      0 192.168.1.50:36676      93.189.33.105:80        ESTABLISHED
tcp        0      0 192.168.1.50:57967      74.125.71.95:80         ESTABLISHED
tcp        0      1 192.168.1.50:53648      217.116.23.3:80         LAST_ACK   
udp        0      0 0.0.0.0:11828           0.0.0.0:*                          
udp        0      0 0.0.0.0:631             0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 0.0.0.0:44118           0.0.0.0:*                          
udp        0      0 0.0.0.0:5353            0.0.0.0:*                          

Con la opción -l solo vemos los sockets en estado de escucha:

# netstat -ntu4l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:51235         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:51236         0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:42959           0.0.0.0:*              
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 0.0.0.0:44118           0.0.0.0:*                          
udp        0      0 0.0.0.0:111             0.0.0.0:*                          
udp        0      0 0.0.0.0:5353            0.0.0.0:*

Y si queremos ver los programas que están utilizando los sockets, usamos la opción -p:

# netstat -ntul4p
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      3039/inetd      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2887/exim4      
tcp        0      0 127.0.0.1:51235         0.0.0.0:*               LISTEN      22169/python    
tcp        0      0 127.0.0.1:51236         0.0.0.0:*               LISTEN      15784/python    
udp        0      0 0.0.0.0:42959           0.0.0.0:*                           4159/firefox    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           5955/dhclient   
udp        0      0 0.0.0.0:44118           0.0.0.0:*                           1843/rpc.statd  
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1812/rpcbind    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           2805/avahi-daemon:

Para ver la tabla de enrutamiento, es necesaria la opción -r:

# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

Para ver las interfaces de red, usamos -i:

# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0    982490      0      0 0        617848      0      0      0 BMRU
lo        16436 0     39872      0      0 0         39872      0      0      0 LRU
# netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:24:81:43:11:19  
          inet addr:192.168.1.50  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::224:81ff:fe43:1119/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:982490 errors:0 dropped:0 overruns:0 frame:0
          TX packets:617848 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1316986973 (1.2 GiB)  TX bytes:59575391 (56.8 MiB)
          Interrupt:22 Memory:e4600000-e4620000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:39872 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39872 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:93235862 (88.9 MiB)  TX bytes:93235862 (88.9 MiB)

Las estadísticas de los protocolos se ven con la opción -s:

# netstat -s
Ip:
    9159 total packets received
    0 forwarded
    0 incoming packets discarded
    9159 incoming packets delivered
    8709 requests sent out
Icmp:
    3 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        echo replies: 3
    3 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        echo request: 3
IcmpMsg:
        InType0: 3
        OutType8: 3
Tcp:
    253 active connections openings
    151 passive connection openings
    2 failed connection attempts
    4 connection resets received
    2 connections established
    8738 segments received
    8453 segments send out
    18 segments retransmited
    10 bad segments received.
    56 resets sent
Udp:
    250 packets received
    0 packets to unknown port received.
    0 packet receive errors
    249 packets sent
.......

El resumen de las opciones que muestra el manual del sistema es el siguiente:

SYNOPSIS
       netstat   [address_family_options]   [--tcp|-t]   [--udp|-u]  [--raw|-w]  [--listening|-l]  [--all|-a]  [--numeric|-n]  [--numeric-hosts]  [--numeric-ports]
       [--numeric-users] [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c]

       netstat {--route|-r} [address_family_options] [--extend|-e[--extend|-e]] [--verbose|-v] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users]
       [--continuous|-c]

       netstat {--interfaces|-i} [--all|-a] [--extend|-e[--extend|-e]] [--verbose|-v] [--program|-p] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-
       users] [--continuous|-c]

       netstat {--groups|-g} [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]

       netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]

       netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w]

       netstat {--version|-V}

       netstat {--help|-h}

       address_family_options:

       [-4] [-6] [--protocol={inet,unix,ipx,ax25,netrom,ddp}[,...]]  [--unix|-x] [--inet|--ip] [--ax25] [--ipx] [--netrom] [--ddp]

Licencia: licencia de software libre GPL