Linux es el sistema operativo más utilizado en entornos de servidor, muy por encima del resto de sistemas. Y ya seas desarrollador, administrador o usuario, te tocará lidiar con aspectos de red o networking en alguno de tus sistemas, por eso debes conocer los comandos de red imprescindibles en Linux.

Como ingeniero que lleva varias décadas trabajando en entornos Linux, te contaré los comandos que te ayudarán a solucionar los problemas de red que te puedes encontrar en tu día a día. Comandos básicos para analizar, mantener y corregir los diferentes problemas de tus servidores, infraestructura de red o tus nombres de dominio.

Uso de Linux en servidores web

Según W3Techs, el 80,6% de todos los servidores web mundiales utilizan algún sistema derivado de Unix como sistema operativo, frente al 19,5% de Windows. De este 80,6%, al menos el 50% son sistemas operativos Linux , siendo Ubuntu, Debian y CentOS las distribuciones más utilizadas en el ranking.

Herramientas de red en Linux

Aquí va el listado de herramientas Linux sobre networking imprescindibles, con algunos ejemplos.

ping

El comando ping, es probablemente el más usado por administradores de sistemas y redes. Utiliza paquetes ICMP para comprobar si dos máquinas están conectadas.

Sintaxis:

ping 192.168.1.189

También se suele utilizar con un nombre de dominio para comprobar la IP que resuelve el dominio:

ping redesteleco.com

traceroute

El comando traceroute te muestra el camino de red entre tu máquina y un dispositivo remoto, junto con el TTL de cada salto intermedio, mediante el envío de distintos paquetes ICMP.

Sintaxis:

traceroute google.es

Y el resultado debería ser algo como lo siguiente:

 1  8-1-33.ear2.Paris1.Level3.net (212.3.235.253)  0.545 ms  0.529 ms  0.553 ms
 2  ae1.3111.edge7.Paris1.level3.net (4.69.133.234)  1.006 ms  0.901 ms  0.799 ms
 3  Google-level3-Paris1.Level3.net (4.68.71.138)  1.056 ms Google-level3-Paris1.Level3.net (4.68.70.210)  0.815 ms  0.805 ms
 4  216.239.48.0 (216.239.48.0)  1.063 ms 142.250.234.40 (142.250.234.40)  1.132 ms 66.249.94.82 (66.249.94.82)  0.936 ms
 5  108.170.244.177 (108.170.244.177)  1.603 ms 108.170.244.176 (108.170.244.176)  0.997 ms 108.170.244.198 (108.170.244.198)  0.978 ms
 6  108.170.238.162 (108.170.238.162)  2.127 ms  2.099 ms 209.85.251.59 (209.85.251.59)  1.140 ms
 7  216.239.35.208 (216.239.35.208)  11.251 ms 216.239.35.206 (216.239.35.206)  11.879 ms 216.239.35.208 (216.239.35.208)  11.245 ms
 8  172.253.71.226 (172.253.71.226)  17.839 ms  18.241 ms 216.239.58.174 (216.239.58.174)  17.210 ms
 9  74.125.245.241 (74.125.245.241)  18.050 ms  17.866 ms 74.125.245.225 (74.125.245.225)  17.248 ms
10  142.251.50.137 (142.251.50.137)  17.385 ms 142.251.50.135 (142.251.50.135)  17.181 ms  17.148 ms
11  mil41s04-in-f3.1e100.net (142.250.184.99)  17.737 ms  17.718 ms  17.748 ms

También puedes probar tracepath, que te ofrece unos resultados similares.

mtr

El comando mtr, es una combinación de los comandos traceroute y ping, que te muestra en un interfaz de ncurses los distintos saltos hacia un destino, su latencia (RTT) y la pérdida de paquetes en cada uno de estos puntos.

Sintaxis:

mtr google.es

Eso te devuelve una pantalla similar a la siguiente, que se va refrescando continuamente, actualizando toda la información:

Resultado comando mtr

curl

El comando curl soporte infinidad de protocolos (FTP, SCP, Telnet, LDAP, …), pero se utiliza principalmente para hacer peticiones HTTP. Te permite ver las cabeceras de la petición y respuesta, hacer peticiones autenticando contra un proxy, realizar POST, cambiar el agente de usuario, …

Sintaxis:

curl https://redesteleco.com

Para ver las cabeceras HTTP de la petición y respuesta:

curl -v https://redesteleco.com

O descargar un fichero por HTTP:

curl https://dominio.com/tufichero.zip --output fichero.zip

wget

El comando wget tiene soporte para varios protocolos pero se utiliza principalmente para descargar archivos por HTTP/HTTPS. Es muy sencillo de utilizar, solamente tendrás que indicar la URL del contenido que necesites descargar.

Sintaxis:

wget https://dominio.com/tufichero.zip

dig

El comando dig es un cliente de DNS, por tanto te permitirá realizar consultas DNS para solucionar problemas de nombres de dominio. Es muy potente, y puedes utilizarlo para ver cada detalle con la resolución de nombres, vamos a ver un par de ejemplos.

Sintaxis:

dig -t a redesteleco.com

Comprobar los registros MX donde se envía el correo de un dominio:

dig -t mx redesteleco.com

Mostrar una resolución DNS completa y de forma jerárquica, comenzando por los servidores raíz:

dig +trace -t a redesteleco.com 

whois

El comando whois, suele ser un gran desconocido y es muy importante, porque aporta información muy valiosa. Lo puedes utilizar para mostrar información sobre un dominio o una IP, en concreto te permitirá obtener información sobre quién y en qué proveedor está registrado un dominio, y información sobre a qué compañía pertenece una determinada IP.

Sintaxis:

whois redesteleco.com

O para información sobre un dominio:

whois 8.8.8.8

ssh

El comando ssh (Secure shell) te permite utilizar el protocolo con el mismo nombre para conectarte de forma segura a un servidor remoto, por defecto utilizando el puerto TCP 22.

Sintaxis:

ssh nombre_usuario@nombre_servidor.com

Si tu servidor utiliza un puerto diferente, lo puedes indicar de la forma siguiente:

ssh -p 2222 nombre_usuario@nombre_servidor.com

scp

El comando scp utiliza el mismo protocolo que ssh, pero este está pensado para copiar ficheros entre tu máquina y un servidor remoto, en cualquiera de las dos direcciones.

Sintaxis para copiar un fichero desde tu máquina a una máquina remota:

scp fichero.txt nombre_usuario@nombre_servidor.com:/home/nombre_usuario/

Si lo quieres hacer en el otro sentido, puedes hacerlo así:

scp nombre_usuario@nombre_servidor.com:/home/nombre_usuario/fichero.txt /home/mi_usuario/

ip

El comando ip es la evolución de otros comandos para configurar la red en Linux (ipconfig, route, arp, …), y lo agrupa en un solo comando. Es muy potente y con múltiples opciones, revisa bien la documentación para aprenderlo porque es muy muy útil.

Sintaxis para ver la configuración de red de tu máquina:

ip addr

Para ver la tabla de rutas de tu máquina:

ip route

telnet

El comando telnet te permite conectarte a un servidor remoto, pero utilizando un protocolo no cifrado (por tanto, no recomendado en general), utilizando el puerto TCP 23. Pero además de ese uso, se utiliza muy a menudo para verificar de forma simple si un puerto en una máquina remota está abierto.

Sintaxis:

telnet servidor.com 80

nc

El comando nc (o netcat) es muy versátil, y sirve para escribir o leer datos en la red, en modo cliente o modo servidor, tanto con UDP como con TCP. Tiene muchos usos, vamos a ver varios ejemplos.

Sintaxis para escanear puertos TCP entre el 330 y el 340 de un servidor remoto:

nc -w 2 -z 192.168.143.121 330-340
Connection to 192.168.143.121 333 port [tcp/*] succeeded!

Arrancar un servidor escuchando en el puerto 80 y mostrando un fichero html a los clientes que se conecten:

nc -l -v -p 80 -w10 -L < mensaje de error.html

nmap

El comando nmap es una herramienta para escanear redes, y obtener mucha información a través de la red. Te permite identificar dispositivos conectados a una red, identificar los sistemas operativos que están ejecutando e identificar los puertos y servicios en ejecución en cada uno de ellos, enviando paquetes con distintos protocolos (TCP, UDP, SCTP, ICMP, …)

Sintaxis para escanear los puertos de una máquina remota:

nc 192.168.133.185

netstat

Cualquier administrador de sistemas conoce la utilidad netstat, porque te ofrece mucha información sobre estadísticas y el estado de la red en tu máquina.

Así puedes ver el número de conexiones en el puerto 80, para un servidor web:

netstat -panlt | grep 80

También puedes comprobar qué puertos están escuchando en tu servidor:

netstat -panlt | grep LISTEN

ethtool

El comando ethtool te ayudará a analizar cuando tengas problemas con un interfaz de red. Te muestra el estado del enlace, la velocidad, el duplex, autonegociación, …

Sintaxis:

ethtool eth0

tcpdump

Y cuando las cosas se complican, te recomiendo aprender sobre captura de tráfico y cómo analizar esa información. El comando tcpdump te facilita todo lo necesario para capturar tráfico de red en un interfaz, para que lo puedes analizar posteriormente a la profundidad que necesites.

Sintaxis para capturar todo el tráfico de un interfaz que utilice el puerto 25:

tcpdump -i eth0 port 25

Capturar todo el tráfico del puerto 80 y guardarlo en un fichero para analizarlo posteriormente:

tcpdump -i eth0 port 80 -w NOMBRE_ARCHIVO.pcap

Para el análisis del tráfico capturado, te recomendamos por supuesto la herramienta wireshark, que puedes instalar tanto en Linux como en Windows y analizar el tráfico de una forma muy completa, podrás identificar problemas de congestión, pérdidas de paquetes, tráfico anómalo y un sinfin de cosas más:

Análisis captura de tráfico con Wireshark

Conclusiones

Aprender todos estos comandos en Linux, te van a facilitar la vida cada vez que tengas un problema o necesites analizar o revisar el estado de tu red, o de los equipos y dispositivos que hay alrededor.

Existen muchos más comandos útiles para Linux, por supuesto, pero estos son los imprescindibles que debes conocer porque en alguna ocasión tendrás que utilizarlos, seguro.

Por Byte

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.