El comando netstat en macOS es un comando de Terminal utilizado para mostrar información detallada sobre las comunicaciones de red de su Mac. Las comunicaciones en red incluyen todas las formas en que tu Mac habla con el mundo exterior, en todos los puertos y en todas las aplicaciones. Después de dominar netstat, los usuarios de Mac pueden entender rápidamente qué conexiones está haciendo su ordenador y por qué.
Índice de contenidos
Ejecución de Netstat
El comando netstat está disponible en los Macs por defecto. No necesita ser descargado o instalado.
Para ejecutar netstat, abra una ventana Terminal. Si no está familiarizado con Terminal, se encuentra en /Aplicaciones/Utilidades/Terminal.app. Escriba netstat y pulse Intro para ejecutar el comando.
Usted notará que una gran cantidad de texto críptico comenzará a desplazarse en su pantalla. Esto es normal y esperado. Sin opciones adicionales, netstat reportará todas las conexiones de red activas en tu Mac. Considerando el número de funciones que realiza un dispositivo de red moderno, puede esperar que la lista sea larga. Un informe estándar de netstat puede ejecutar más de 1000 líneas.
Filtrar la salida de netstat es esencial para entender qué está pasando en los puertos activos de tu Mac. Puede filtrar la salida de netstat con los indicadores incorporados. Estos indicadores le permiten establecer opciones, limitando el alcance y la salida de netstat.
Indicadores y opciones de Netstat
Para ver todas las opciones disponibles de netstat, escriba man netstat en la línea de comandos. Esto revelará la página de manual de netstat. También puede ver una versión en línea de la página de manual de netstat.
netstat [- AabdgiLlmnqrRsSvWx ] [ -c queue] [ -f address_family] [ -I interfaz] [ -p protocolo] [ -w wait]
Netstat en macOS no funciona de la misma manera que netstat en Windows o netstat en Linux. El uso de banderas o sintaxis de esas implementaciones de netstat puede no resultar en el comportamiento esperado.
Consejo : Si la abreviatura anterior parece completamente incomprensible, aprenda a leer la sintaxis de los comandos.
-r muestra la tabla de enrutamiento, mostrando cómo se enrutan los paquetes alrededor de la red.
-p protocol lista el tráfico asociado con un protocolo de red específico. Mientras que la lista completa de protocolos se puede encontrar en /etc/protocols, los más importantes son udp y tcp.
-v aumenta la verbosidad, específicamente añadiendo una columna que muestra el ID de proceso (PID) asociado con cada puerto abierto.
-I interfaz proporciona datos en paquetes para la interfaz especificada. Todas las interfaces disponibles se pueden ver con el indicador -i, pero en0 es normalmente la interfaz de red de salida predeterminada. Observe la letra minúscula.
-g muestra la información asociada a las conexiones multicast.
-s muestra las estadísticas de red para todos los protocolos, estén o no activos.
-n suprime el etiquetado de las direcciones remotas con nombres. Esto acelera dramáticamente la producción de netstat mientras que sacrifica sólo información limitada.
-a incluye puertos de servidor en la salida de netstat, que no están incluidos en la salida por defecto.
Ejemplos de Netstat
Para poner en práctica nuestro entendimiento, veamos algunos ejemplos de netstat.
netstat -apv TCP
Este comando sólo devuelve las conexiones TCP en tu Mac, incluidos los puertos abiertos y los puertos activos. También utilizará la salida verbosa, que enumera los PID asociados a cada conexión.
netstat -a | grep -i "listen"Esta combinación de netstat y grep revelará los puertos abiertos de tu Mac. Los puertos abiertos son puertos que están escuchando un mensaje. Si no está familiarizado con la sintaxis, el carácter pipe | se utiliza para enviar la salida de un comando a otro comando. Canalizamos la salida de netstat a grep, lo que nos permite buscar la palabra clave "listen" (escuchar) y encontrar nuestros resultados.
Acceso a netstat a través de la Utilidad de Red
Además del uso completo a través de la interfaz Terminal command-line, parte de la funcionalidad de netstat también es accesible a través de la aplicación Network Utility. Esta aplicación macOS incorporada se puede encontrar en /Aplicaciones/Utilidades/Utilidades/Utilidades de red.app. Abra la aplicación y haga clic en la pestaña Netstat para acceder a la interfaz gráfica de netstat.
Las opciones dentro de la Utilidad de red son claramente mucho más limitadas que las disponibles a través de la línea de comandos. Las cuatro selecciones de botones de radio simplemente ejecutan un comando netstat preestablecido y muestran la salida en la pantalla de abajo.
Los comandos de netstat para cada botón de radio son los siguientes:
- Mostrar información de la tabla de enrutamiento ejecuta netstat -r
- Mostrar estadísticas de red completas para cada protocolo ejecuta netstat -s
- Mostrar información multicast ejecuta netstat -g
- Muestra el estado de todas las conexiones de socket actuales ejecuta netstat
Complementando netstat con lsof
El hecho es que la implementación de macOS de netstat no incluye muchas de las funcionalidades que los usuarios esperan y necesitan. Aunque tiene sus usos, netstat no es tan útil en macOS como lo es en Windows. Un comando diferente, lsof, puede reemplazar gran parte de la funcionalidad que falta.
lsof muestra todos los archivos actualmente abiertos por cualquier aplicación. Esto también se puede utilizar para inspeccionar puertos abiertos asociados con aplicaciones. Ejecute lsof -i, y verá una lista de todas las aplicaciones que se comunican a través de Internet. Este es típicamente el objetivo cuando se usa netstat en máquinas Windows. Sin embargo, la única manera significativa de realizar esa tarea en macOS no es con netstat, sino con lsof.
Mostrar cada uno de los archivos abiertos o conexiones a Internet es a menudo abrumadoramente verboso. Es por eso que lsof viene con una serie de indicadores para restringir los resultados con criterios específicos. Hay muchos indicadores útiles que expanden la utilidad del comando. Los más importantes son los siguientes. Para lectura adicional, incluyendo más banderas y explicaciones técnicas de la implementación de cada bandera, compruebe la página de manual de lsof o ejecute man lsof en un indicador de terminal.
lsof banderas y opciones
-i muestra todas las conexiones de red abiertas y el nombre del proceso que está utilizando la conexión. Añadiendo un 4, como en -i4 , sólo se mostrarán las conexiones IPv4. Añadiendo un 6 en su lugar ( -i6 ) sólo se mostrarán las conexiones IPv6.
El indicador -i también se puede ampliar para especificar más detalles. -iTCP o -iUDP sólo devolverán las conexiones TCP y UDP. -iTCP:25 sólo devolverá las conexiones TCP en el puerto 25. Se puede especificar un rango de puertos con un guión, como -iTCP:25-50.
El uso de -i@1.2.3.4 sólo devolverá las conexiones a la dirección IPv4 1.2.3.4. Las direcciones IPv6 se pueden especificar de la misma manera. El precursor @ también se puede utilizar para especificar nombres de host de la misma manera, pero tanto las direcciones IP remotas como los nombres de host no se pueden utilizar simultáneamente.
-s normalmente obliga a lsof a mostrar el tamaño del archivo. Pero cuando se combina con la bandera -i , -s funciona de forma diferente. En su lugar, permite al usuario especificar el protocolo y el estado para que el comando vuelva.
-p restringe lsof a un ID de proceso particular (PID). Múltiples PIDs pueden ser configurados usando commons, tales como -p 123,456,789. Los ID de proceso también se pueden excluir con un ^, como en 123,^456, que excluiría específicamente el PID 456.
-P desactiva la conversión de números de puerto a nombres de puerto, lo que acelera la salida.
-n desactiva la conversión de números de red a nombres de host. Cuando se usa con -P anterior, puede acelerar significativamente la salida de lsof.
- u usuario sólo devuelve comandos propiedad del usuario nombrado.
lsof ejemplos
Al igual que netstat, ver algunos ejemplos de lsof nos ayudará a practicar nuestra comprensión.
lsof -nP -iTCP@lsof.itap:513Este comando de apariencia compleja listará todas las conexiones TCP con el nombre de host lsof.itap y el puerto 513. También se ejecutará lsof sin conectar nombres a direcciones IP y puertos, haciendo que el comando se ejecute notablemente más rápido.
lsof -iTCP -sTCP:LISTEN
Esto devolverá cada conexión TCP con el estado LISTEN . Esto revela todos los puertos TCP abiertos en tu Mac. También enumera los procesos asociados con esos puertos abiertos. Esta es una actualización significativa con respecto a netstat, que enumera los PID como máximo.
sudo lsof -i -u^$(whoami)
Devuelve todas las conexiones que no son propiedad del usuario conectado actualmente. Este comando es un poco diferente de los otros, así que lo desglosaremos en detalle.
El signo de intercalación ^ se utiliza para la negación. Cualquier cosa que coincida con el texto después del signo de intercalación se eliminará de los resultados. Obtenemos el nombre del usuario actualmente conectado ejecutando whoami dentro del comando lsof, rodeado de $() para que lsof pueda acceder a su salida como texto. Correr con sudo le permite ver tareas que no le pertenecen. Si ejecuta este comando sin sudo, obtendrá una lista vacía.
Otros comandos de red
Otros comandos de red del terminal que pueden ser de interés para examinar su red incluyen arp, ping y ipconfig.