Ver puertos abiertos en Linux con ss, netstat y lsof

Terminal con comandos ss y lsof para ver puertos abiertos en Linux

Para ver qué puertos están abiertos en Linux, lo más directo hoy es usar ss y mirar los sockets en estado LISTEN.

Esto sirve para comprobar si un servicio está escuchando, en qué IP lo hace y qué proceso lo mantiene abierto.

Ver puertos TCP abiertos con ss

El comando más útil para empezar es:

sudo ss -ltnp

Las opciones significan:

  • -l: muestra sockets en escucha.
  • -t: muestra TCP.
  • -n: no resuelve nombres; muestra IPs y puertos numéricos.
  • -p: muestra el proceso asociado, si tienes permisos.

Una línea típica puede ser:

LISTEN 0 4096 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=1234,fd=7))

Ahí el puerto es 5432, la IP de escucha es 127.0.0.1 y el proceso es postgres.

Ver puertos UDP abiertos

Para UDP cambia -t por -u:

sudo ss -lunp

En UDP no existe el estado LISTEN igual que en TCP, pero el comando muestra qué procesos tienen sockets UDP abiertos.

Buscar un puerto concreto

Si solo quieres saber qué pasa con un puerto, puedes filtrar por número:

sudo ss -ltnp 'sport = :80'

Otro ejemplo para PostgreSQL:

sudo ss -ltnp 'sport = :5432'

Y para Ollama, si lo estás usando en red local:

sudo ss -ltnp 'sport = :11434'

Entender 127.0.0.1, 0.0.0.0 e IPv6

La IP de escucha importa tanto como el puerto.

  • 127.0.0.1:PUERTO: solo escucha en la propia máquina.
  • 0.0.0.0:PUERTO: escucha en todas las interfaces IPv4.
  • [::]:PUERTO: escucha en IPv6, normalmente en todas las interfaces IPv6.

Que un puerto aparezca abierto en 127.0.0.1 no significa que sea accesible desde otra máquina. Para eso debe escuchar en una IP de red o en 0.0.0.0, y además el firewall debe permitirlo.

Ver el proceso con lsof

lsof también es muy práctico cuando quieres ir directo al proceso que usa un puerto.

sudo lsof -iTCP:80 -sTCP:LISTEN -P -n

Para listar todos los servicios TCP en escucha:

sudo lsof -iTCP -sTCP:LISTEN -P -n

Las opciones -P y -n evitan resolver nombres de puerto y DNS, así la salida suele ser más rápida y clara.

Usar netstat si estás en un sistema antiguo

netstat sigue apareciendo en muchas notas antiguas, pero en sistemas actuales suele estar sustituido por ss.

Si lo necesitas, normalmente está en el paquete net-tools:

sudo apt install net-tools

El comando clásico es:

sudo netstat -tulpn

Úsalo si estás manteniendo sistemas antiguos o si una documentación concreta todavía lo pide. Para trabajo diario en Linux moderno, mejor empezar por ss.

Comprobar un puerto desde la misma máquina

Si un servicio aparece escuchando, puedes hacer una prueba rápida contra localhost:

nc -vz 127.0.0.1 80

Si el puerto acepta conexión, verás un mensaje de éxito. Si no responde, revisa primero si el servicio está levantado y escuchando en la IP correcta.

Resumen rápido

# TCP en escucha
sudo ss -ltnp

# UDP abierto
sudo ss -lunp

# puerto concreto
sudo ss -ltnp 'sport = :80'

# proceso que escucha en un puerto
sudo lsof -iTCP:80 -sTCP:LISTEN -P -n

# compatibilidad con sistemas antiguos
sudo netstat -tulpn

Si el puerto escucha solo en 127.0.0.1, está disponible localmente. Si escucha en 0.0.0.0 o en una IP de red, puede estar accesible desde otros equipos, siempre que el firewall y la red lo permitan.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *