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