Skip to content
Breachfolio
RECURSOS · GLOSARIO

Glosario de comandos de red: ip, ss, netstat, tcpdump — cuál usar y cuándo.

La mitad de los comandos de red que aparecen en cualquier tutorial antiguo están obsoletos, y la gente los sigue usando porque técnicamente aún funcionan. Esto es lo que conviene utilizar de verdad hoy.

8 de julio de 20269 min de lectura

Abre casi cualquier tutorial de redes de los últimos quince años y encontrarás ifconfig y netstat presentados como la forma estándar de mirar el estado de red de una máquina Linux. Ambos forman parte del antiguo paquete net-tools, y ambos llevan años formalmente obsoletos — net-tools no ha tenido desarrollo activo aguas arriba, y la mayoría de las distribuciones actuales (Debian, Ubuntu, Fedora, Arch, RHEL) o bien ya no lo instalan por defecto o bien lo conservan solo como capa de compatibilidad heredada. Los comandos que realmente los reemplazaron — ip y ss, ambos parte de la suite iproute2 — son los que vienen preinstalados y actualizados, y sin embargo se enseñan mucho menos, así que un montón de administradores por lo demás competentes nunca los han tecleado.

Nada de esto va realmente de "viejo" frente a "nuevo" por sí mismo. Va de qué se mantiene, qué lee el estado del kernel de forma más directa y rápida, y qué seguirá ahí el año que viene. Este glosario está organizado por la tarea que intentas hacer, no alfabéticamente, para que puedas ir directo a lo que necesitas.

Ver tus interfaces y direcciones: ip addr (no ifconfig)

Para listar cada interfaz de red y las direcciones asignadas a ella, ejecuta:

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.5/24 brd 172.20.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever

La forma abreviada ip a hace exactamente lo mismo — las herramientas de iproute2 aceptan subcomandos abreviados. Leyendo la salida: state UP significa que la interfaz está administrativamente activa y tiene enlace físico; inet 172.20.0.5/24 es la dirección IPv4 y su máscara de subred en notación CIDR; y scope global significa que la dirección es enrutable fuera de la máquina local, a diferencia de scope link (como la línea IPv6), que solo es válida en el segmento de red local.

ifconfig aún funciona en muchos sistemas porque las distribuciones lo incluyen como paquete opcional de compatibilidad, y mostrará información similar con una disposición ligeramente distinta. Pero no se mantiene aguas arriba, no puede ver con claridad los tipos de interfaz más nuevos, y no hay garantía de que siga instalado en el próximo servidor que toques. Si vas a aprender una sola herramienta para esta tarea, aprende ip addr.

Ver y cambiar rutas: ip route (no route)

Para ver cómo la máquina decide adónde enviar el tráfico:

$ ip route show
default via 172.20.0.1 dev eth0 proto dhcp metric 100
172.20.0.0/24 dev eth0 proto kernel scope link src 172.20.0.5 metric 100
169.254.0.0/16 dev eth0 scope link metric 1000

La línea que hay que leer primero es la ruta default: dice que cualquier tráfico que no coincida con una ruta más específica de las de abajo se envía via 172.20.0.1 — la puerta de enlace predeterminada — a través de eth0. La segunda línea describe la subred local directamente conectada: cualquier cosa dentro de 172.20.0.0/24 es alcanzable directamente por esa interfaz, sin puerta de enlace. Si un host no puede llegar a internet pero sí a otras máquinas de su propia subred, la ruta predeterminada es lo primero que hay que comprobar. El equivalente antiguo, route -n, es del mismo paquete net-tools que ifconfig y arrastra la misma salvedad.

Ver conexiones activas y puertos en escucha: ss (no netstat)

Para ver qué está escuchando y qué está conectado:

$ ss -tulpn
Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port  Process
tcp    LISTEN  0       128      0.0.0.0:22            0.0.0.0:*          users:(("sshd",pid=712,fd=3))
tcp    LISTEN  0       511      127.0.0.1:5432         0.0.0.0:*          users:(("postgres",pid=1188,fd=6))
tcp    ESTAB   0       0        172.20.0.5:22          172.20.0.1:51422   users:(("sshd",pid=2043,fd=4))
udp    UNCONN  0       0        0.0.0.0:68             0.0.0.0:*          users:(("dhclient",pid=590,fd=5))

Los flags hacen un trabajo concreto: -t muestra sockets TCP, -u muestra UDP, -l lo restringe a sockets en escucha, -p resuelve el proceso propietario, y -n se salta las búsquedas de DNS/nombre de servicio para que devuelva al instante en lugar de quedarse colgado en resoluciones inversas. En las columnas: State te dice si un socket está esperando pasivamente (LISTEN) o forma parte de una conversación activa (ESTAB); Local Address:Port es lo que está vinculado en esta máquina — fíjate en que 127.0.0.1:5432 solo acepta conexiones locales, mientras que 0.0.0.0:22 acepta desde cualquier sitio; Peer Address:Port es el lado remoto de una conexión establecida; y Process nombra exactamente qué programa es el dueño del socket.

netstat todavía existe en muchos sistemas y su salida parece superficialmente similar, pero ss lee la información de sockets directamente del kernel en lugar de parsear /proc como hace netstat, y por eso es muchísimo más rápido en una máquina con miles de conexiones abiertas. Es la herramienta que se mantiene de cara al futuro, y es la que encontrarás preinstalada en un contenedor o una VM recién creados cuando netstat no esté.

Capturar e inspeccionar tráfico: tcpdump

Este es el único comando de este glosario que no tiene un equivalente obsoleto del que preocuparse — tcpdump ha sido la herramienta estándar de captura de paquetes durante décadas y lo sigue siendo. Donde ip y ss te informan sobre la configuración y el estado de los sockets, tcpdump te muestra los paquetes reales que cruzan el cable. Un filtro útil y habitual:

$ sudo tcpdump -i eth0 port 443 -n
tcpdump: verbose output suppressed, use -v for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:32:07.184213 IP 172.20.0.5.51422 > 93.184.216.34.443: Flags [S], seq 812301, win 64240
14:32:07.201880 IP 93.184.216.34.443 > 172.20.0.5.51422: Flags [S.], seq 40213, ack 812302, win 65160
14:32:07.202015 IP 172.20.0.5.51422 > 93.184.216.34.443: Flags [.], ack 40214, win 502

Esto filtra el tráfico del puerto 443 (HTTPS) en la interfaz eth0, y -n desactiva la resolución de nombres para que imprima IPs en crudo en lugar de quedarse colgado en el DNS. Las tres líneas de arriba son un clásico saludo TCP de tres vías: [S] es el SYN, [S.] es el SYN-ACK, y [.] es el ACK final — útil para confirmar si una conexión siquiera se está completando antes de indagar más a fondo.

Para cualquier cosa que quieras analizar con calma, captura a un archivo en lugar de leer el desplazamiento en directo:

$ sudo tcpdump -i eth0 -w capture.pcap

El archivo .pcap resultante se abre en Wireshark para el análisis gráfico de seguir-el-flujo que un desplazamiento en terminal vuelve tedioso. Para un desglose completo de cuándo recurrir a la línea de comandos frente a la GUI, consulta Wireshark vs tcpdump.

Tabla de referencia rápida

TareaComando modernoEquivalente obsoleto
Ver interfacesip addrifconfig
Ver rutasip routeroute
Ver conexiones / puertos en escuchassnetstat
Capturar tráficotcpdumpno hace falta reemplazo
Ver la tabla ARPip neigharp

Ninguno de los cinco comandos de la izquierda es una herramienta oscura ni especializada — son los que de verdad vienen instalados por defecto en las distribuciones que la mayoría de la gente usa hoy. Reaprenderlos merece los diez minutos que cuesta aunque tus dedos ya conozcan ifconfig y netstat de memoria, porque el día que te sientes ante una imagen de contenedor mínima o un servidor fortificado y ninguno de los dos esté ahí, querrás que las herramientas actuales ya sean segunda naturaleza en lugar de algo que estás buscando a mitad de tarea.