Linux

Los 15 comandos Linux esenciales para la administración de redes y la resolución de problemas

I. Introducción

Descubra 15 comandos esenciales para la gestión de redes por línea de comandos en Linux. Tanto si quieres mostrar la configuración de tu red, diagnosticar un problema de conectividad, probar un puerto o analizar el tráfico de red, hay comandos que necesitas conocer.

Si eres nuevo en la administración de Linux, quieres mejorar tus habilidades, o simplemente estás buscando un memorándum de los comandos de red que necesitas saber sobre Linux, has venido al lugar correcto. ¡Este artículo cubre un amplio rango de comandos para diferentes necesidades!

II. Linux: mostrar la configuración de red

A. El comando ip a

Hubo un tiempo en que era necesario utilizar el "ifconfig". Esto era útil para mostrar la dirección IP de una máquina o simplemente para recuperar el nombre de la tarjeta de red. Esto solía ser útil para mostrar la dirección IP de una máquina o simplemente para recuperar el nombre de la tarjeta de red. A partir de ahora, debe utilizarse el comando "ip a", que es la abreviatura de "ip addr show". Forma parte de la colección de utilidades iproute2.

Este es el método preferido y, lo que es más importante, el comando "ifconfig" ya no se reconoce (aunque esto depende del entorno en el que esté ejecutando el comando). Si el "ifconfig" no se puede encontrar en una máquina, ya sabes por qué.

Ejemplos de cómo utilizar el comando ip a:

ip a

Esta sencilla llamada muestra todas las interfaces de red y su información detallada, incluidas las direcciones IPv4 e IPv6. Si desea mostrar información sobre una interfaz específica solamente, puede utilizar este comando:

ip a show <nombre de la interfaz>
ip a show ens33
ip a s ens33

B. El comando netplan

En lo que respecta a la gestión de redes, también existe Netplan, una herramienta de configuración de redes situada por encima de los gestores de configuración de redes"systemd-networkd" y "NetworkManager". Está presente por defecto en Ubuntu, y dada la popularidad de este sistema y la disponibilidad de Netplan en Debian, creo que es importante mencionarlo en este artículo.

Como mínimo, necesita poder mostrar la configuración de Netplan cuando se utiliza para gestionar la red en una máquina Linux.

Ejemplo del comando netplan:

netplan status --all

Este comando muestra la configuración detallada de todas las interfaces. También se especifican las direcciones MAC y las rutas.

C. El comando ip route

Con "ip a" no se muestra la ruta por defecto utilizada por la máquina Linux. Para ver y modificar la tabla de enrutamiento en Linux, y así mostrar la ruta por defecto, es necesario utilizar el comando "ip route".

Ejemplos de cómo utilizar el comando ip route:

ip route show

Este comando muestra las rutas actualmente en uso, incluyendo la pasarela por defecto y las rutas específicas definidas en el sistema.

Para definir una nueva puerta de enlace predeterminada, siga estos pasos. Aquí, la dirección IP "192.168.14.2" se definirá como puerta de enlace predeterminada.

sudo ip route add default via 192.168.14.2

Si es necesario, también puede especificar la interfaz de salida, aquí "ens33" :

sudo ip route add default via 192.168.14.2 dev ens33

III. Linux: comprobación de la conectividad de la red

A. El comando ping

¿Sigue siendo necesario presentar el "ping" ? Esencial y básico a la vez, sigue siendo muy útil para realizar diagnósticos de red de primer nivel. El comando ping envía una serie de paquetes ICMP (Internet Control Message Protocol) a un host de destino (dirección IP, nombre) para comprobar si se puede llegar a él y medir el tiempo de respuesta.

Ejemplos de cómo utilizar el comando ping:

Puede realizar una simple ping especificando el siguiente comando. Por defecto, el comando ping es continuo en Linux, por lo que debe detenerlo con CTRL + C.

ping www.it-connect.fr
ping 1.1.1.1

Si desea limitar el número de paquetes enviados a cuatro, puede utilizar la opción "-c 4".

ping -c 4 1.1.1.1

Lo que da:

Para forzar el ping en IPv4 o IPv6, dependiendo de sus necesidades, puede utilizar estas opciones:

# IPv4
ping -4 www.google.fr

# IPv6
ping -6 www.google.fr

B. El comando traceroute

El comando "traceroute" muestra el camino recorrido por un paquete hasta su destino, identificando cada router atravesado. Si no puedes llegar a un host, puedes intentar identificar un punto de bloqueo utilizando este comando. También puede ayudarte a comprender dónde se encuentra el fallo en una red, en caso de fallo de conectividad, aunque la falta de respuesta de algunos equipos puede dificultar el análisis.

Ejemplos de cómo utilizar el comando traceroute:

traceroute 1.1.1.1

Si no tiene acceso a este comando, debe instalar traceroute:

sudo apt update && sudo apt install traceroute

El resultado es la ruta. Sin embargo, al ejecutar traceroute, pueden aparecer asteriscos (*) en la consola cuando la herramienta no recibe respuesta de un router intermedio (timeout). Esto puede deberse simplemente al filtrado a nivel de equipo.

Por defecto, el traceroute utiliza paquetes UDP para determinar la ruta. Si un cortafuegos filtra estos paquetes, puede intentar utilizar la opción "-I" para cambiar a paquetes ICMP:

sudo traceroute -I 1.1.1.1

Alternativamente, puede utilizar la opción "-T" para utilizar paquetes TCP en lugar de UDP (e ICMP). Sin embargo, la ruta puede determinarse con menos precisión.

sudo traceroute -T 1.1.1.1

C. El comando mtr (My Traceroute)

Detrás del comando "mtr" se esconde una herramienta llamada My Traceroute, que tiene la ventaja de combinar tanto el comando ping y el traceroute. Aunque se utiliza en modo consola, su interfaz es clara y, sobre todo, los datos se actualizan en tiempo real. El resultado es una visualización más dinámica del camino recorrido por la red.

Ejemplos de cómo utilizar el comando mtr:

mtr google.fr

Se obtiene un resultado como éste:

Aquí, el resultado contiene poca información, ya que hay filtrado en la red. En otra máquina, sin embargo, logré obtener un resultado mucho más realista. A continuación se muestra la visualización de My Traceroute a través de WSL (abre una pequeña ventana independiente con los resultados). Por defecto, Mi Traceroute se ejecuta en modo interactivo.

He aquí algunos ejemplos de cómo puede utilizar Mi Traceroute para poner en práctica determinadas opciones.

# Limitar el número de paquetes enviados a 10  
mtr -c 10 google.fr  

# Mostrar solo estadísticas usando el modo de informe  
# Con 5 ciclos en lugar de los 10 predeterminados  
mtr --report --report-cycles 5 google.fr  

# Realizar una prueba utilizando paquetes TCP en el puerto 443  
mtr -T -P 443 google.fr  

# Desactivar la resolución DNS para mostrar solo direcciones IP  
mtr -n google.fr  

# Instalar My Traceroute en Ubuntu / Debian  
sudo apt-get install mtr

IV. Linux: análisis de las conexiones y el tráfico de red

A. El comando lsof

El comando "lsof ", cuyo nombre significa "Listar archivos abiertos", es una herramienta para mostrar los archivos abiertos por los procesos del sistema, incluidas las conexiones de red activas.

Ejemplo de utilización del comando lsof:

sudo lsof -i -Pn

Desmenucemos este comando para comprender las ventajas de cada opción:

  • La opción "-i" muestra las conexiones de red abiertas.
  • El otpion "-P" desactiva la resolución de números de puerto a nombres de servicio.
  • La opción "-n" impide la resolución DNS (aumenta la velocidad de ejecución)

B. El comando ss

En ss cuyo nombre significa"estadísticas de socket", es una versión más rápida y moderna de la herramienta netstat . Por tanto, nos permitirá obtener información sobre las conexiones de red. La transición de netstat à ss es fácil, ya que se dispone de las mismas opciones.

Ejemplo de utilización del comando ss:

sudo ss -tulnp

Proporciona una vista detallada de las conexiones de red actuales y los procesos asociados. Resulta especialmente útil para obtener una lista de puertos de escucha en la máquina local, leyendo la columna"Dirección local:Puerto".

He aquí otros ejemplos ss :

# Listar los sockets TCP  
ss -t  

# Listar los sockets UDP  
ss -u  

# Listar los sockets TCP en escucha en el puerto de origen 22 (SSH)  
ss -tl "sport == :22"  

# Listar las conexiones TCP en un estado específico (por ejemplo, establecido)  
ss state established

Nota : netstat aunque muy útil y aún popular hoy en día, se considera obsoleta. Por este motivo, no se ha destacado en este artículo.

C. El comando tcpdump

La herramienta tcpdump, asociada a un comando del mismo nombre, es muy útil para capturar y analizar paquetes de red en tiempo real. Suele utilizarse para diagnosticar problemas de comunicación en la red, examinar el tráfico entrante y saliente o detectar posibles flujos maliciosos. Es una especie de alternativa de línea de comandos a Wireshark.

Incluye numerosas opciones para crear filtros que capturen sólo determinados paquetes. Por ejemplo, puede filtrar paquetes según criterios como la dirección IP, el puerto o el protocolo utilizado.

Ejemplos de tcpdump:

Empecemos con el ejemplo más básico, pero no necesariamente el más práctico. Con este comando, tcpdump captura y muestra todos los paquetes en la interfaz ens33, en tiempo real.

sudo tcpdump -i ens33

Puedes detener la captura en cualquier momento con la combinación de teclas CTRL + C.

Para capturar sólo las peticiones DNS con tcpdump, puede utilizar el siguiente comando para añadir un filtro en el puerto 53 :

sudo tcpdump -i ens33 port 53

La siguiente imagen muestra los intercambios DNS entre la máquina local y un servidor DNS, en este caso el servidor 1.1.1.1.

También podríamos capturar sólo los paquetes intercambiados con el host cuya dirección IP es 192.168.1.254. Para ello, añadimos un filtro basado en la dirección dst host.

sudo tcpdump -i ens33 dst host 192.168.1.254

Aquí podemos ver que se intercambian paquetes ICMP (ping) entre las dos máquinas:

Nota : puede asociar el uso de tcpdump con grep para refinar la salida de la captura de paquetes en tiempo real.

V. Linux: diagnóstico de la resolución DNS

A. El comando nslookup

En nslookup que también se encuentra en otros sistemas operativos como Windows, se puede utilizar para consultar un servidor DNS y obtener la dirección IP asociada a un nombre de dominio (o viceversa). He aquí algunos ejemplos de cómo puede utilizarse este comando:

  • Resolución de un nombre de dominio en una dirección IP.
  • Consulta un servidor DNS específico para su resolución.
  • Obtener registros DNS (MX, CNAME, TXT, etc.).
  • Pruebe la resolución inversa (registros PTR) para obtener el nombre de dominio asociado a una dirección IP.

Ejemplos de nslookup:

nslookup it-connect.fr

Esto devuelve la dirección IP correspondiente al dominio it-connect.fr. La respuesta puede variar, sobre todo cuando el sitio web está detrás de una solución como Cloudflare. Más allá de la respuesta, también sabemos qué servidor DNS fue consultado, en este caso el servidor 1.1.1.1.

Para consultar un servidor DNS concreto, basta con especificar su dirección IP, después del nombre de host que se desea resolver.

nslookup it-connect.fr 8.8.8.8

También puede consultar registros específicos, como los de tipo"TXT", que proporcionan información más concreta (sobre SPF, por ejemplo).

nslookup -query=TXT it-connect.fr

Si nslookup no está instalado en su máquina, puede obtenerlo de los repositorios oficiales. En Ubuntu y Debian, estos comandos serán suficientes:

sudo apt update && sudo apt install dnsutils

B. El comando dig

A la hora de diagnosticar un problema de DNS u obtener información sobre un host, el comando "dig" también es muy interesante. Esta herramienta, cuyo nombre significa "Domain Information Groper", es una auténtica navaja suiza para realizar consultas DNS.

En comparación con nslookup la herramienta dig proporciona información más detallada sobre los registros DNS de un dominio. Se utiliza especialmente para analizar con precisión las respuestas del servidor DNS.

Ejemplos de dig:

Se puede utilizar de forma tan sencilla como nslookup, en el que basta con especificar el nombre de host que se desea resolver.

dig it-connect.fr

Este comando muestra el registro DNS correspondiente al dominio seleccionado, junto con el tiempo de respuesta y el servidor DNS solicitado.

Un ejemplo de comando dig que no se puede hacer con nslookup es la petición de mostrar la cadena de resolución DNS completa. Para ello, basta con añadir la opción "+trace" de la siguiente manera:

dig google.fr +trace

Este comando permite seguir todas las etapas de la resolución DNS (es decir, todas las respuestas), desde los servidores raíz hasta el servidor de nombres final del dominio. La salida muestra primero la petición enviada al servidor raíz, y después el camino seguido a través de los sucesivos servidores de nombres hasta que el dominio está completamente resuelto. A continuación se muestra un resumen del resultado, que puede utilizarse para diagnosticar un problema de propagación DNS.

Aquí tienes otros ejemplos prácticos de cómo utilizar este comando:

# Consultar un servidor DNS específico (aquí 8.8.8.8)  
dig @8.8.8.8 it-connect.fr  

# Especificar el tipo de registros a recuperar (A, AAAA, CNAME, TXT, etc.)  
dig it-connect.fr txt  

# Resolver varios nombres de host al mismo tiempo  
dig it-connect.fr google.fr  

# Mostrar solo la respuesta de la consulta DNS (por ejemplo, la dirección IP)  
dig +short it-connect.fr  

VI. Linux: escaneo y comprobación de puertos

A. La herramienta netcat y el comando nc

Netcat, a menudo abreviado como "nc"Como su nombre indica, se trata de una herramienta versátil capaz de realizar una amplia gama de tareas. De hecho, se puede utilizar en una amplia variedad de aplicaciones, incluyendo :

  • Buscar puertos abiertos
  • Probar la apertura de un puerto en una máquina remota.
  • Escucha en un puerto en modo servidor para recibir conexiones.
  • Establecer una conexión TCP/UDP con un host remoto.
  • Transfiere archivos entre dos máquinas.
  • Etc....

Ejemplos de nc:

Empecemos usando netcat para ver si el puerto 3389 está abierto en una máquina:

nc -zv serveur.it-connect.local 3389

El "-z" La primera opción se utiliza para realizar escaneos de puertos, mientras que la segunda corresponde al modo verboso. Si la conexión tiene éxito, se devolverá el siguiente mensaje:

Connection to serveur.it-connect.local 3389 port [tcp/ms-wbt-server] succeeded!

Si el puerto no está abierto, se devolverá un mensaje similar al siguiente:

nc: connect to serveur.it-connect.local port 3389 (tcp) failed: Connection timed out

Para escanear un rango de puertos, puede utilizar esta sintaxis (de 10 a 1000, aquí):

nc -zv serveur.it-connect.local 10-1000

El resultado de la prueba para cada puerto se mostrará en la consola. Para establecer un tiempo de espera personalizado, utilice el botón " -w" con un valor en segundos a continuación. He aquí un ejemplo:

nc -zv serveur.it-connect.local 10-1000 -w 3

Más información sobre cómo utilizar el comando nc:

# Transferir un archivo entre dos máquinas  
# Lado receptor: escuchar en el puerto 2025  
nc -lvp 2025 > data.txt  

# Lado emisor: enviar el contenido de un archivo a 192.168.14.130:2025  
cat file.txt | nc 192.168.14.130 2025  

# Probar un servidor SMTP enviando un comando  
nc smtp.it-connect.fr 25  

# Iniciar un shell entre dos máquinas  
# Lado receptor (máquina a la que conectarse) en el puerto 2025  
nc -lvp 2025 -e /bin/bash  

# Lado emisor: máquina desde la que se ejecutan los comandos  
nc 192.168.14.99 2025

¡Los ejemplos anteriores muestran que incluso es posible lanzar un shell entre dos máquinas con netcat ! Por lo tanto, este versátil comando debe utilizarse de forma responsable y ética.

B. La herramienta nmap

¿Sigue siendo necesario presentar la herramienta Nmap ? Especialmente en IT-Connect, donde hemos publicado un curso completo sobre el uso de Nmap. Se trata de una potente herramienta para realizar escaneos de puertos, detectar máquinas conectadas a una red e incluso buscar vulnerabilidades. Se utiliza con un comando llamado simplemente " nmap ", que admite una amplia gama de parámetros.

Ejemplos de nmap:

El ejemplo de abajo es útil para escanear los puertos 80, 22 y 3389 en una máquina. También podríamos escanear varias máquinas, una red entera o incluso un rango de puertos.

nmap 192.168.14.201 -p 22,80,3389
# o 
nmap 192.168.14.201 -p 22,80,3389 -Pn

Aquí, el puerto 3389 parece estar abierto en la máquina analizada, a diferencia de los otros dos puertos probados.

A continuación encontrarás más ejemplos de cómo se puede utilizar esta herramienta, pero eso es sólo una pequeña muestra de las posibilidades que ofrece. Si quieres saber más, echa un vistazo a nuestro curso.

# Escanear todos los puertos de una máquina (1-65535)  
nmap -p- server.it-connect.local  

# Escanear los 100 puertos TCP más utilizados  
nmap server.it-connect.local --top-ports 100  

# Detectar hosts en una red completa con un Ping Scan  
nmap -sP 192.168.10.0/24  

# Detectar versiones en el host  
nmap -sV server.it-connect.local

VII. Linux: comprobación del ancho de banda

A. El comando iperf

El comando "iperf" corresponde a una herramienta de medición del ancho de banda de la red utilizada para evaluar el rendimiento de una conexión generando tráfico entre dos máquinas. Por lo tanto, se requiere la herramienta iperf en ambas máquinas.

A modo de recordatorio, tres características fundamentales determinan la calidad de un enlace:

  • La latencia (también conocida como tiempo de respuesta y abreviada como RTT) suele medirse con un comando ping.
  • Jitter (también conocido como variación de latencia ).
  • Pérdida de paquetes.

Ejemplos de uso de la función iperf :

El primer paso consiste en instalar la herramienta en cada máquina:

sudo apt update && sudo apt install iperf

A continuación, escucha la primera máquina que recibirá el tráfico (servidor):

iperf -s

A continuación, en la máquina cliente (que envía tráfico al servidor), ejecute este comando:

iperf -c <Dirección IP del servidor>
iperf -c 192.168.14.130

De esta forma, obtenemos un resultado como el que se muestra en la siguiente imagen. Muestra que el servidor iperf está escuchando en el puerto TCP 5001 y ha recibido una conexión de una máquina cliente (192.168.14.99). La prueba de rendimiento duró unos 10 segundos, transfiriendo 5,99 GB de datos a una velocidad de 5,15 Gbit/s. Este resultado muestra el ancho de banda disponible entre las dos máquinas, ¡utilizando una conexión TCP!

Aquí tienes otros ejemplos de cómo utilizar esta herramienta para evitar usar las opciones por defecto:

# Realizar una prueba bidireccional para medir el rendimiento en ambas direcciones  
iperf -c 192.168.14.130 -d  

# Realizar una prueba de rendimiento en paralelo con 4 flujos simultáneos  
iperf -c 192.168.14.130 -P 4  

# Realizar una prueba por una duración definida (30 segundos)  
iperf -c 192.168.14.130 -t 30  

# Realizar una prueba de rendimiento UDP (cliente / servidor)  
iperf -s -u  
iperf -c 192.168.14.130 -u  

B. El comando speedtest

¿Conoces el servicio Speedtest de Ookla? Pues bien, existe una herramienta de línea de comandos llamada simplemente speedtest-cli que te permite medir la velocidad de tu conexión a Internet. Esta prueba de velocidad se basa en los servicios de Ookla.

Ejemplo de speedtest-cli:

Comience por instalar la herramienta en su máquina utilizando los comandos oficiales que se proporcionan en el sitio web de Speedtest.

sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest

A continuación, puede ejecutar una prueba de flujo con este comando:

speedtest

Esto inicia una prueba de velocidad de descarga y subida sondeando el servidor más cercano. Puede explorar las opciones para seleccionar el servidor Speedtest de su elección, especialmente a través del botón " -L" para listar los servidores disponibles.

VIII. Conclusión

Estos 15 comandos cubren una amplia gama de necesidades para la administración de redes en Linux, ¡pero también para diagnosticar un problema relacionado con la red! Dominar estas herramientas y comandos es un buen punto de partida para cualquier administrador de red o sysadmin que quiera estar a gusto bajo Linux.

¿Qué te parece? ¿Le hubiera gustado que se añadieran otros pedidos a esta lista? Esperamos sus comentarios.

author avatar
Florian Burnel Co-founder of IT-Connect
Systems and network engineer, co-founder of IT-Connect and Microsoft MVP "Cloud and Datacenter Management". I'd like to share my experience and discoveries through my articles. I'm a generalist with a particular interest in Microsoft solutions and scripting. Enjoy your reading.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.