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
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:
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:
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.