Cómo listar todos los puertos abiertos en Mac
Tres formas de ver todos los puertos abiertos en tu Mac: lsof, netstat y una interfaz gráfica. Incluye comandos para TCP, UDP y filtros por proceso o número de puerto.
Arrancas un servidor y algo ya está ahí. O quieres tener un panorama completo de lo que tu Mac está escuchando antes de desplegar una app. En cualquier caso, macOS tiene las herramientas, solo que no son obvias.
Aquí tienes las tres formas de listar puertos abiertos en un Mac, desde el comando más rápido hasta el más completo.
Método 1: lsof (el mejor comando para todo)
lsof — list open files — trata los sockets de red como archivos. Te muestra cada puerto en escucha, el nombre del proceso, el PID y el protocolo.
Lista todos los puertos TCP en escucha:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Ejemplo de salida:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 1421 aaron 23u IPv6 0xa1b... 0t0 TCP *:3000 (LISTEN)
postgres 1803 aaron 5u IPv6 0xb2c... 0t0 TCP *:5432 (LISTEN)
ruby 2044 aaron 11u IPv4 0xc3d... 0t0 TCP *:8080 (LISTEN)
Explicación de los flags:
-iTCP— filtra solo sockets TCP-sTCP:LISTEN— muestra solo sockets en estado LISTEN (no conexiones establecidas)-n— omite la resolución DNS inversa (mucho más rápido)-P— muestra números de puerto, no nombres de servicio (muestra3000en lugar dehbci)
Incluir también puertos UDP:
sudo lsof -i -n -P | grep LISTEN
Listar todos los puertos (TCP + UDP, incluyendo conexiones establecidas):
sudo lsof -i -n -P
Esto es más verboso — verás cada socket abierto, incluyendo conexiones activas a servidores remotos. Usa grep para filtrar:
# Solo tu proceso de Node
sudo lsof -i -n -P | grep node
# Todo lo que hay en un puerto específico
sudo lsof -i :5432 -n -P
¿Por qué sudo? Sin él, lsof solo muestra los sockets de tu cuenta de usuario. Los procesos del sistema como mDNSResponder, ControlCenter y extensiones del kernel se ejecutan como root. Sin sudo obtendrás una lista incompleta.
Método 2: netstat
netstat es más antiguo y su salida en macOS difiere de Linux. La limitación clave: en macOS, netstat no muestra nombres de proceso ni PIDs. Verás direcciones y puertos, pero no sabrás qué app los ocupa.
netstat -an | grep LISTEN
Ejemplo de salida:
tcp4 0 0 *.3000 *.* LISTEN
tcp4 0 0 *.5432 *.* LISTEN
tcp6 0 0 *.8080 *.* LISTEN
Útil si quieres un escaneo rápido y no te importa qué proceso hay detrás de cada puerto. Si necesitas nombres de proceso, usa lsof.
Ver puertos en escucha con números de puerto (no nombres de servicio):
netstat -anp tcp | grep LISTEN
Método 3: nmap (para escanear un rango de IPs local)
nmap es un escáner de red — sondea puertos desde el exterior en lugar de leer la tabla de sockets del kernel. Útil cuando quieres ver qué expone una máquina remota o tu Mac en la red local.
Requiere instalación:
brew install nmap
Escanear todos los puertos en localhost:
sudo nmap -sT -p- 127.0.0.1
Escaneo rápido de los 1000 puertos más comunes:
nmap localhost
nmap es excesivo para simplemente listar lo que tu propio Mac está escuchando — lsof es más rápido y preciso para eso. Usa nmap cuando quieras verificar lo que un host expone en la red, no solo lo que su propio kernel registra.
Referencia rápida
Qué significa la salida
Cuando lsof muestra *:3000 (LISTEN), significa:
- El proceso está escuchando en todas las interfaces de red en el puerto 3000. Cualquier máquina en tu red local que pueda alcanzar tu IP puede intentar conectarse.
127.0.0.1:3000significa que el proceso solo está vinculado a localhost — sin acceso externo.192.168.1.5:3000significa que está vinculado a una interfaz específica.
Si ves un proceso del sistema que no reconoces, algunos son normales:
ControlCenteren los puertos 5000 y 7000 — AirPlay Receiver. Activado por defecto en Configuración del Sistema > General > AirDrop y Handoff.mDNSResponderen el puerto 5353 — Bonjour, para el descubrimiento de dispositivos en la red local.rapportd— función de Continuidad para la interacción entre iPhone y Mac.- Puertos en el rango
49152–65535— puertos efímeros, usados temporalmente para conexiones salientes. Es normal ver muchos de estos.
Listar solo los puertos de tu usuario
Si solo te interesan tus propios procesos — no los demonios del sistema — omite sudo:
lsof -iTCP -sTCP:LISTEN -n -P
Esto limita la salida a procesos que se ejecutan bajo tu cuenta. Más rápido, sin solicitud de contraseña, suficiente para la mayoría de flujos de trabajo de desarrollo.
Terminar un proceso que ocupa un puerto
¿Encontraste el proceso problemático? Si el puerto 3000 está bloqueado, termina el proceso directamente:
kill -9 $(lsof -ti :3000)
El flag -t hace que lsof muestre solo el PID, sin encabezados ni columnas, para pasarlo directamente a kill. Consulta cómo matar un proceso por número de puerto en Mac para la explicación completa, incluyendo cuándo usar SIGTERM en lugar de SIGKILL.
Ver todos los puertos abiertos sin la Terminal
Ejecutar lsof cada vez que inicias o detienes un servicio se vuelve tedioso. Portie te da una lista en vivo de todos los puertos abiertos en tu Mac, actualizada automáticamente cada 3 segundos — sin comandos que recordar.
Puedes ver el nombre del proceso, PID, protocolo y estado del socket en una tabla ordenable. Alterna entre una lista plana de puertos y una vista agrupada por aplicación. Haz clic en cualquier fila para ver los detalles completos de la conexión.
El monitoreo de puertos locales es gratuito. El desbloqueo de $8.99 (pago único) agrega la terminación de procesos con un clic (con opción de SIGTERM o SIGKILL) y escaneo de puertos remotos para otros hosts en tu red.
Descarga Portie y reemplaza tu hábito de lsof con un panel en vivo.