netstat en Linux, Windows y MacOSX

netstat en Linux, Windows y MacOSX

Mediante netstat se pueden visualizar diferentes parámetros de red, dos de los más comunes son ver las conexiones establecidas con los puertos que escucha el sistema y la tabla de rutas. Hoy vamos a ver como los parámetros para Linux,Windows y MacOSX
Para el caso de la tabla de rutas podemos hacerlo en los tres sistemas operativos con la opción -rn:
Podemos ver el caso de Linux:


# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.16.101.5    0.0.0.0         255.255.255.255 UH        0 0          0 tun0
172.16.101.1    172.16.101.5    255.255.255.255 UGH       0 0          0 tun0
192.168.232.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.232.2   0.0.0.0         UG        0 0          0 eth0
El caso de MacOSX:
$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.1.1        UGSc        3       13    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH         11     2774    lo0
169.254            link#5             UCS         0        0    en1
192.168.1          link#5             UCS         1        0    en1
192.168.1.1        0:14:bf:6e:79:19   UHLW        3       18    en1    984
192.168.1.105      127.0.0.1          UHS         0        0    lo0
192.168.2          link#4             UC          0        0    en0

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UH          lo0
fe80::/64                         link#5                        UC          en1
fe80::211:24ff:fe2d:5577          0:11:24:2d:55:77              UHL         lo0
ff01::/32                         ::1                           U           lo0
ff02::/32                         ::1                           UC          lo0
ff02::/32                         link#5                        UC          en1
Finalmente el caso de Windows podemos ver que es bastante más “verbose”:
C:\Documents and Settings\Administrator>netstat -rn

Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 50 ff ff 00 08 ...... VMware Virtual Ethernet Adapter for VMnet8
0x3 ...00 50 ff ff 00 01 ...... VMware Virtual Ethernet Adapter for VMnet1
0x4 ...00 11 22 33 44 55 ...... Broadcom 802.11b/g WLAN - Packet Scheduler Miniport
0x5 ...00 ff 82 20 25 b4 ...... TAP-Win32 Adapter V8 - Packet Scheduler Miniport
0x6 ...00 ff ee 69 40 c6 ...... TAP-Win32 Adapter V9 - Packet Scheduler Miniport

===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0     172.16.101.1    172.16.101.2       1
    99.99.111.118  255.255.255.255      192.168.1.1   192.168.1.100       1
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      169.254.0.0      255.255.0.0    192.168.102.1   192.168.102.1       20
     172.16.101.0  255.255.255.252     172.16.101.2    172.16.101.2       30
     172.16.101.2  255.255.255.255        127.0.0.1       127.0.0.1       30
   172.16.255.255  255.255.255.255     172.16.101.2    172.16.101.2       30
      192.168.1.0    255.255.255.0    192.168.1.100   192.168.1.100       25
    192.168.1.100  255.255.255.255        127.0.0.1       127.0.0.1       25
    192.168.1.255  255.255.255.255    192.168.1.100   192.168.1.100       25
    192.168.102.0    255.255.255.0    192.168.102.1   192.168.102.1       20
    192.168.102.1  255.255.255.255        127.0.0.1       127.0.0.1       20
  192.168.102.255  255.255.255.255    192.168.102.1   192.168.102.1       20
    192.168.232.0    255.255.255.0    192.168.232.1   192.168.232.1       20
    192.168.232.1  255.255.255.255        127.0.0.1       127.0.0.1       20
  192.168.232.255  255.255.255.255    192.168.232.1   192.168.232.1       20
        224.0.0.0        240.0.0.0     172.16.101.2    172.16.101.2       30
        224.0.0.0        240.0.0.0    192.168.1.100   192.168.1.100       25
        224.0.0.0        240.0.0.0    192.168.102.1   192.168.102.1       20
        224.0.0.0        240.0.0.0    192.168.232.1   192.168.232.1       20
  255.255.255.255  255.255.255.255     172.16.101.2    172.16.101.2       1
  255.255.255.255  255.255.255.255    192.168.1.100   192.168.1.100       1
  255.255.255.255  255.255.255.255    192.168.102.1   192.168.102.1       1
  255.255.255.255  255.255.255.255    192.168.232.1   192.168.232.1       1
  255.255.255.255  255.255.255.255    192.168.232.1               6       1
Default Gateway:      172.16.101.1
===========================================================================
Persistent Routes:
  None
Por lo que respeta a las conexiones establecidas y los puertos TCP que escucha un sistema Linux se puede hacer mediante netstat -tpan.
# netstat -tpan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 172.16.101.6:389            0.0.0.0:*                   LISTEN      2468/slapd
tcp        0      0 127.0.0.1:10025             0.0.0.0:*                   LISTEN      4723/master
tcp        0      0 127.0.0.1:7306              0.0.0.0:*                   LISTEN      3142/mysqld
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1981/portmap
tcp        0      0 0.0.0.0:465                 0.0.0.0:*                   LISTEN      4723/master
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2149/cupsd
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      4723/master
tcp        0      0 127.0.0.1:7306              127.0.0.1:44919             ESTABLISHED 3142/mysqld
(...)
Para ver los puertos UDP que escucha simplemente cambiamos la t por una u, por lo que el comando queda netstat -upan:
# netstat -upan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
udp        0      0 0.0.0.0:54968               0.0.0.0:*                               2044/openvpn
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1838/dhclient
udp        0      0 0.0.0.0:5353                0.0.0.0:*                               2263/avahi-daemon:
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1981/portmap
udp        0      0 0.0.0.0:60016               0.0.0.0:*                               2263/avahi-daemon:
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               2149/cupsd
udp        0      0 :::48923                    :::*                                    2263/avahi-daemon:
udp        0      0 :::5353                     :::*                                    2263/avahi-daemon:
Para el caso de Windows el netstat no permite ver el nombre del programa sino solo el PID, por lo que necesitaremos dos pasos para conocer el nombre del ejecutable. Primero de todo hacemos un netstat -ano. Para ver solo los que están escuchando (no las conexiones establecidas) podemos filtrarlo con un find. A continuación mediante tasklist podemos ver a que binario corresponde el PID que nos interese:
C:\Documents and Settings\Administrator>netstat -ano | find "LISTE"
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2164
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       240
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       2128
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       2128
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       3128
  TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       2452
  TCP    0.0.0.0:8222           0.0.0.0:0              LISTENING       3020
  TCP    0.0.0.0:8308           0.0.0.0:0              LISTENING       2452
  TCP    0.0.0.0:8333           0.0.0.0:0              LISTENING       3020
  TCP    127.0.0.1:1039         0.0.0.0:0              LISTENING       2524
  TCP    127.0.0.1:1325         0.0.0.0:0              LISTENING       2932
  TCP    127.0.0.1:5152         0.0.0.0:0              LISTENING       3100
  TCP    127.0.0.1:5354         0.0.0.0:0              LISTENING       2204
  TCP    127.0.0.1:8005         0.0.0.0:0              LISTENING       2452
  TCP    127.0.0.1:8307         0.0.0.0:0              LISTENING       3020
  TCP    127.0.0.1:12025        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12080        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12110        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12119        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12143        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12465        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12563        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12993        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:12995        0.0.0.0:0              LISTENING       832
  TCP    127.0.0.1:27015        0.0.0.0:0              LISTENING       2184
  TCP    127.0.0.1:62514        0.0.0.0:0              LISTENING       2240
  TCP    192.168.1.100:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.102.1:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.232.1:139      0.0.0.0:0              LISTENING       4

C:\Documents and Settings\Administrator>tasklist | find "2164"
httpd.exe                   2164 Console                 0      7.888 K
Windows no diferencia conexiones UDP de TCP, por lo que también podemos ver unas o otras filtrando con find “UDP” o find “TCP”.
Para el caso de MacOSX mediante netstat no podemos ver los PIDs de las conexiones, pero si las conexiones. Para el caso de las TCP indicamos mediante laopción -p el protocolo, el comando quedaría netstat -p tcp -an:
$ netstat -p tcp -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  192.168.1.105.49290    195.27.58.20.80        ESTABLISHED
tcp4       0      0  127.0.0.1.631          *.*                    LISTEN
tcp4       0      0  192.168.2.1.53         *.*                    LISTEN
tcp4       0      0  127.0.0.1.1033         127.0.0.1.970          ESTABLISHED
tcp4       0      0  127.0.0.1.970          127.0.0.1.1033         ESTABLISHED
tcp4       0      0  127.0.0.1.1033         127.0.0.1.971          ESTABLISHED
tcp4       0      0  127.0.0.1.971          127.0.0.1.1033         ESTABLISHED
tcp4       0      0  127.0.0.1.1033         127.0.0.1.986          ESTABLISHED
tcp4       0      0  127.0.0.1.986          127.0.0.1.1033         ESTABLISHED
tcp4       0      0  127.0.0.1.1033         *.*                    LISTEN
Para el caso de UDP simplemente la opción -p cambiamos TCP por UDP, quedandonetstat -p udp -an:
$ netstat -p udp -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
udp4       0      0  *.5353                 *.*                    
udp4       0      0  *.5353                 *.*                    
udp4       0      0  127.0.0.1.49156        127.0.0.1.1022         
udp4       0      0  127.0.0.1.49155        127.0.0.1.1022         
udp4       0      0  127.0.0.1.1022         *.*                    
udp4       0      0  127.0.0.1.49154        127.0.0.1.1023         
udp4       0      0  127.0.0.1.1023         *.*                    
udp4       0      0  *.631                  *.*                    
udp6       0      0  *.49153                *.*                    
udp4       0      0  *.49152                *.*                    
udp4       0      0  192.168.2.1.53         *.*                    
udp4       0      0  *.67                   *.*                    
udp4       0      0  *.68                   *.*                    
udp4       0      0  127.0.0.1.1033         *.*                    
udp4       0      0  *.514                  *.*                    
udp6       0      0  *.514                  *.*                   
Para ver que proceso escucha en un determinado puerto o tiene una conexión establecida en MacOSX deberemos usar lsof -i
$ lsof -i
COMMAND   PID  USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
firefox-b 424 jordi   28u  IPv4 0x01b0caa0      0t0  TCP 192.168.1.105:49290->19

Comentarios