El netstat
comando de Linux le brinda un tesoro de información sobre sus conexiones de red, los puertos que están en uso y los procesos que los utilizan. Aprenda como usarlo.
Los enchufes de red pueden estar conectados o esperando una conexión. Las conexiones utilizan protocolos de red como el Protocolo de control de transporte (TCP) o el Protocolo de datagramas de usuario UDP. Utilizan direcciones de protocolo de Internet y puertos de red para establecer conexiones.
La palabra sockets puede evocar imágenes de un punto de conexión física para un cable o cable, pero en este contexto, un socket es una construcción de software que se utiliza para manejar un extremo de una conexión de datos de red.
Los sockets tienen dos estados principales: están conectados y facilitan una comunicación de red en curso, o están esperando una conexión entrante para conectarse a ellos. Hay otros estados, como el estado en el que un conector está a medio camino del establecimiento de una conexión en un dispositivo remoto, pero dejando de lado los estados transitorios, puede pensar en un conector como conectado o en espera (lo que a menudo se denomina escucha ).
El socket de escucha se llama servidor y el socket que solicita una conexión con el socket de escucha se llama cliente . Estos nombres no tienen nada que ver con los roles de hardware o computadora. Simplemente definen la función de cada socket en cada extremo de la conexión.
El netstat
comando le permite descubrir qué sockets están conectados y qué sockets están escuchando. Es decir, le dice qué puertos están en uso y qué procesos los están usando. Puede mostrarle tablas de enrutamiento y estadísticas sobre sus interfaces de red y conexiones de multidifusión .
La funcionalidad de netstat
se ha replicado a lo largo del tiempo en diferentes utilidades de Linux, como ip y ss . Todavía vale la pena conocer a este abuelo de todos los comandos de análisis de red, porque está disponible en todos los sistemas operativos Linux y similares a Unix, e incluso en Windows y Mac.
Aquí se explica cómo usarlo, con comandos de ejemplo.
La -a
opción (todos) hace que se netstat
muestren todos los sockets conectados y en espera. Este comando puede producir una lista larga, por lo que lo canalizamos less
.
netstat -a | Menos
La lista incluye sockets TCP (IP), TCP6 (IPv6) y UDP.
La envoltura en la ventana de la terminal hace que sea un poco difícil ver lo que está sucediendo. Aquí hay un par de secciones de esa lista:
Conexiones de Internet activas (servidores y establecidas) Proto Recv-Q Send-Q Dirección local Dirección extranjera Estado tcp 0 0 localhost: dominio 0.0.0.0:* ESCUCHAR tcp 0 0 0.0.0.0:ssh 0.0.0.0:* ESCUCHAR tcp 0 0 localhost: ipp 0.0.0.0:* ESCUCHAR tcp 0 0 localhost: smtp 0.0.0.0:* ESCUCHAR tcp6 0 0 [::]: ssh [::]: * ESCUCHAR tcp6 0 0 ip6-localhost: ipp [::]: * ESCUCHAR . . . Sockets de dominio UNIX activos (servidores y establecidos) Proto RefCnt Flags Tipo Estado Ruta de nodo I unix 24 [] DGRAM 12831 / run / systemd / journal / dev-log UNIX 2 [ACC] ESCUCHA DE TRANSMISIÓN 24747 @ / tmp / dbus-zH6clYmvw8 unix 2 [] DGRAM 26372 / run / user / 1000 / systemd / notificar unix 2 [] DGRAM 23382 / run / user / 121 / systemd / notificar unix 2 [ACC] SEQPACKET LISTENING 12839 / run / udev / control
La sección «Internet activa» enumera las conexiones externas conectadas y los enchufes locales que escuchan solicitudes de conexión remota. Es decir, enumera las conexiones de red que están (o se establecerán) con dispositivos externos.
La sección «Dominio UNIX» enumera las conexiones internas conectadas y en escucha. En otras palabras, enumera las conexiones que se han establecido dentro de su computadora entre diferentes aplicaciones, procesos y elementos del sistema operativo.
Las columnas «Internet activa» son:
netstat
mostrar el nombre de host local para la dirección y el nombre del servicio para el puerto.Para las conexiones TCP, el valor de estado puede ser uno de los siguientes:
Las columnas de «dominio Unix» son:
ACC
, lo que representa SO_ACCEPTON
, lo que significa que el socket está esperando una solicitud de conexión. SO_WAITDATA
, mostrado como W
, significa que hay datos esperando ser leídos. SO_NOSPACE
, mostrado como N
, significa que no hay espacio para escribir datos en el socket (es decir, el búfer de envío está lleno).El tipo de socket de dominio Unix puede ser uno de los siguientes:
El estado del socket del dominio Unix puede ser uno de los siguientes:
¡Vaya, eso es mucha información! Muchas de las netstat
opciones refinan los resultados de una forma u otra, pero no cambian demasiado el contenido. Vamos a ver.
El netstat -a
comando puede proporcionar más información de la que necesita ver. Si solo desea o necesita ver los sockets TCP, puede usar la -t
opción (TCP) para restringir la visualización y mostrar solo los sockets TCP.
netstat -at | Menos
La visualización se reduce considerablemente. Los pocos sockets que se enumeran son todos TCP.
Las opciones -u
(UDP) y -x
(UNIX) se comportan de manera similar, restringiendo los resultados al tipo de socket especificado en la línea de comando. Aquí está la opción -u (UDP) en uso:
netstat -au | Menos
Solo se enumeran los sockets UDP.
Para ver los sockets que están en estado de escucha o de espera, use la -l
opción (escuchando).
netstat -l | Menos
Los sockets que se enumeran son los que están en estado de escucha.
Esto se puede combinar con las opciones -t (TCP, -u (UDP) y -x (UNIX) para profundizar en los sockets de interés. Busquemos sockets TCP de escucha:
netstat -lt | Menos
Ahora, solo vemos sockets de escucha de TCP.
Para ver las estadísticas de un protocolo, use la -s
opción (estadísticas) y pase las opciones -t
(TCP), -u
(UDP) o -x
(UNIX). Si solo usa la -s
opción (estadísticas) por sí sola, verá estadísticas para todos los protocolos. Revisemos las estadísticas del protocolo TCP.
netstat -st | Menos
Se muestra una colección de estadísticas para las conexiones TCP en less
.
Puede ser útil ver el ID de proceso (PID) del proceso mediante un socket, junto con el nombre de ese proceso. La -p
opción (programa) hace precisamente eso. Veamos cuáles son los PID y los nombres de proceso para los procesos que utilizan un socket TCP que está en estado de escucha. Usamos sudo
para asegurarnos de recibir toda la información disponible, incluida cualquier información que normalmente requeriría permisos de root.
sudo netstat -p -at
Aquí está ese resultado en una tabla formateada:
Conexiones de Internet activas (servidores y establecidas) Proto Recv-Q Send-Q Dirección local Dirección extranjera Estado PID / Nombre del programa tcp 0 0 localhost: dominio 0.0.0.0:* ESCUCHA 6927 / systemd-resolv tcp 0 0 0.0.0.0:ssh 0.0.0.0:* ESCUCHAR 751 / sshd tcp 0 0 localhost: ipp 0.0.0.0:* ESCUCHA 7687 / cupsd tcp 0 0 localhost: smtp 0.0.0.0:* ESCUCHA 1176 / master tcp6 0 0 [::]: ssh [::]: * ESCUCHAR 751 / sshd tcp6 0 0 ip6-localhost: ipp [::]: * ESCUCHA 7687 / cupsd tcp6 0 0 ip6-localhost: smtp [::]: * ESCUCHA 1176 / master
Tenemos una columna adicional llamada «PID / nombre del programa». Esta columna enumera el PID y el nombre del proceso que utiliza cada uno de los sockets.
Otro paso que podemos tomar para eliminar algunas ambigüedades es mostrar las direcciones locales y remotas como direcciones IP en lugar de sus dominios y nombres de host resueltos. Si usamos la -n
opción (numérica), las direcciones IPv4 se muestran en formato decimal con puntos:
sudo netstat -an | Menos
Las direcciones IP se muestran como valores numéricos. También se muestran los números de puerto, separados por dos puntos ” :
” de la dirección IP.
Una dirección IP 127.0.0.1 muestra que el conector está vinculado a la dirección de bucle de retorno de la computadora local . Puede pensar en una dirección IP de 0.0.0.0 como la «ruta predeterminada» para direcciones locales y «cualquier dirección IP» para direcciones extranjeras. Las direcciones IPv6 que se muestran como “ ::
” también son direcciones cero.
Los puertos que se enumeran se pueden verificar fácilmente para ver cuál es su propósito habitual :
La -r
opción (ruta) muestra la tabla de enrutamiento del kernel.
sudo netstat -r
Aquí está ese resultado en una tabla ordenada:
Tabla de enrutamiento de IP del kernel Pasarela de destino Genmask Flags MSS Window irtt Iface Vigor.router predeterminado 0.0.0.0 UG 0 0 0 enp0s3 enlace-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
Y esto es lo que significan las columnas:
*
Aparece un asterisco “ ” aquí si no se establece una dirección de puerta de enlace.El valor de las banderas puede ser uno de los siguientes:
addrconf
el generador automático de archivos de configuración de DNS y DHCP.Si canalizamos la salida de netstat
through grep
, podemos buscar un proceso por nombre e identificar el puerto que está usando. Usamos las opciones -a
(todas), -n
(numéricas) y -p
(programa) utilizadas anteriormente, y buscamos «sshd».
sudo netstat -anp | grep "sshd"
grep
encuentra la cadena de destino, y vemos que el sshd
demonio está usando el puerto 22.
Por supuesto, también podemos hacer esto a la inversa. Si buscamos “: 22”, podemos averiguar qué proceso está usando ese puerto, si lo hay.
sudo netstat -anp | grep ": 22"
Esta vez grep
encuentra la cadena de destino “: 22” y vemos que el proceso que usa este puerto es el sshd
demonio, ID de proceso 751.
La -i
opción (interfaces) mostrará una tabla de las interfaces de red que netstat
pueden descubrir.
sudo netstat -i
Aquí está la salida de una manera más legible:
Tabla de interfaz de kernel Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU
Esto es lo que significan las columnas:
enp0s3
interfaz es la interfaz de red para el mundo exterior y la lo
interfaz es la interfaz de bucle invertido. La interfaz de bucle invertido permite que los procesos se comuniquen entre sí dentro de la computadora mediante protocolos de red, incluso si la computadora no está conectada a una red.Las banderas representan lo siguiente:
En pocas palabras, una transmisión de multidifusión permite que un paquete se envíe una sola vez, independientemente del número de destinatarios. Para servicios como la transmisión de video, por ejemplo, esto aumenta enormemente la eficiencia desde el punto de vista del remitente.
La -g
opción (grupos) hace una netstat
lista de los miembros del grupo de multidifusión de los sockets en cada interfaz.
sudo netstat -g
Las columnas son bastante simples:
Los comandos route , ip , ifconfig y ss pueden proporcionar mucho de lo que netstat
es capaz de mostrarle. Todos son excelentes comandos y vale la pena revisarlos.
Nos hemos centrado en netstat
porque está disponible universalmente, independientemente del sistema operativo tipo Unix en el que esté trabajando, incluso los más oscuros.
El mundo del gaming ha experimentado un crecimiento exponencial en los últimos años. La…
Stokkete/Shutterstock.com ¿Sigue utilizando una unidad flash USB obsoleta para almacenar sus archivos? ¿Por qué no…
LG Los fabricantes siempre intentan mejorar el rendimiento de imagen de los monitores. Como resultado,…
Patty Chan/Shutterstock.com Si cree en lo que ve en las redes sociales, puede pensar en…
Seksan.TH/Shutterstock.com Los servicios de suscripción como Netflix, Game Pass y Spotify nos permiten consumir tantas…
fatmawati achmad zaenuri/Shutterstock El acceso a Internet, oa cualquier otra red, se rige por la…