netstat en Mac: la guía completa
Cómo usar netstat en macOS para ver puertos, conexiones, enrutamiento y estadísticas de red, por qué netstat en macOS no muestra nombres de proceso y qué usar en su lugar.
netstat es una de las herramientas de red más antiguas de un Mac, y una de las peor entendidas, porque la versión de macOS se comporta de forma distinta a la de Linux, de donde la gente suele copiar los comandos. Así funciona en realidad en macOS, en qué es bueno y dónde se queda corto.
Lo más importante que debes saber primero
El netstat de macOS es la versión BSD, no la de Linux (GNU). La mayor consecuencia: el netstat de macOS no muestra nombres de proceso ni PIDs. El truco de Linux que todos pegan, netstat -tulpn, no funciona en un Mac. El flag -p significa aquí algo completamente distinto (selecciona un protocolo, no “muestra el proceso”).
Así que si tu objetivo es “qué app usa este puerto”, netstat por sí solo no puede responderlo en macOS. Necesitarás lsof para eso, lo vemos más abajo.
Listar puertos a la escucha
El equivalente más cercano en macOS al clásico “muéstrame qué está escuchando”:
netstat -an | grep LISTEN
Ejemplo de salida:
tcp4 0 0 *.3000 *.* LISTEN
tcp4 0 0 127.0.0.1.5432 *.* LISTEN
tcp6 0 0 *.8080 *.* LISTEN
Explicación de los flags:
-a: muestra todos los sockets, incluidos los que están a la escucha-n: muestra direcciones y puertos numéricos (no resuelve nombres, mucho más rápido)
Añade un filtro de protocolo para reducir el ruido:
# Solo TCP
netstat -an -p tcp | grep LISTEN
# Solo UDP
netstat -an -p udp
Aquí -p selecciona el protocolo: este es el significado en macOS, no el de “proceso” de Linux.
Ver todas las conexiones activas
Quita el grep para ver también las conexiones establecidas, no solo las que están a la escucha:
netstat -an -p tcp
La columna State te dice qué hace cada conexión: LISTEN, ESTABLISHED, TIME_WAIT, CLOSE_WAIT, etc.
Otras cosas en las que netstat sí es bueno
Donde el netstat de macOS brilla es en las vistas a nivel de red que lsof no te da:
Tabla de enrutamiento (por qué interfaz va el tráfico):
netstat -rn
Estadísticas por interfaz (paquetes entrantes/salientes, errores, descartes):
netstat -i
Estadísticas por protocolo (retransmisiones TCP, errores UDP, etc.):
netstat -s
# Solo estadísticas TCP
netstat -sp tcp
Estos son los comandos por los que vale la pena conservar netstat. Para “qué está escuchando y quién lo ocupa”, hay mejores herramientas.
Lo que netstat no puede hacer: nombrar el proceso
Aquí es donde todos chocan. netstat muestra que algo está escuchando en el puerto 3000, pero no qué. Para obtener el nombre del proceso y el PID en macOS, usa lsof:
sudo lsof -iTCP -sTCP:LISTEN -n -P
COMMAND PID USER ... NODE NAME
node 1421 aaron ... TCP *:3000 (LISTEN)
postgres 1803 aaron ... TCP 127.0.0.1:5432 (LISTEN)
Ahora ves que node ocupa el puerto 3000. Para un puerto concreto:
sudo lsof -i :3000 -n -P
Consulta cómo listar puertos abiertos en Mac para la explicación completa de lsof, y qué app usa un puerto si eso es todo lo que necesitas.
Referencia rápida
| Objetivo | Comando |
|---|---|
| Puertos a la escucha | netstat -an | grep LISTEN |
| Todas las conexiones TCP | netstat -an -p tcp |
| Tabla de enrutamiento | netstat -rn |
| Estadísticas de interfaz | netstat -i |
| Estadísticas de protocolo | netstat -s |
| Qué proceso ocupa un puerto | sudo lsof -i :PUERTO -n -P |
Sáltate los flags por completo
Si recurres a netstat sobre todo para responder “qué está abierto y quién lo ocupa”, Portie lo hace sin ningún comando. Muestra cada puerto TCP y UDP abierto en tu Mac, la app que lo ocupa, el protocolo y el estado de la conexión, en una sola tabla en vivo que se actualiza cada 3 segundos: los nombres de proceso que netstat no puede darte, ahí mismo en la lista.
El monitoreo local es gratuito. El desbloqueo de $8.99 (pago único) agrega la terminación de procesos con un clic y el escaneo remoto de puertos. Descarga Portie y deja atrás los flags de netstat.