DÍA 07: El Navegador de Redes

LinuxBeginner
Practicar Ahora

Introducción

¡Bienvenido, Navegador de Redes! Acabas de ser contratado como Administrador de Sistemas Junior en una startup tecnológica de rápido crecimiento. Esta mañana, un servidor web crítico se ha desconectado. Los usuarios informan que no pueden acceder al portal interno de la empresa.

Tu administrador senior está ocupado en una reunión y te ha encargado el diagnóstico inicial. ¡Es tu momento de brillar! Tu misión es investigar sistemáticamente el estado de la red del servidor, identificar la causa raíz y restaurar la conectividad. ¡Pongamos este servidor en línea de nuevo!

Aviso importante
Los desafíos siguientes pueden exceder el alcance del curso Inicio rápido con Linux.
Si encuentras dificultades durante el desafío:
  1. Omite temporalmente el desafío y continúa con los laboratorios guiados posteriores en la ruta de aprendizaje de Linux.
  2. Habla con Labby o consulta la solución.

Comprobación del estado de la interfaz de red

Tu primer paso como Navegador de Redes es recopilar información básica. ¿El hardware de red está reconocido y activo? Debes verificar el estado de todas las interfaces de red en el servidor. La herramienta moderna para esta tarea es el comando ip.

Tareas

  • Utiliza el comando ip para mostrar el estado y la configuración de todas las interfaces de red.

Requisitos

  • Debes utilizar el comando ip addr para realizar esta comprobación.

Ejemplos

Después de ejecutar el comando, deberías ver una salida que muestra las interfaces de red como lo (loopback) y eth0 (o similar). Busca el estado de tu interfaz principal; debería mostrar UP para indicar que está activa.

## Formato de salida esperado (los nombres de las interfaces pueden variar)
1: lo: 65536 qdisc noqueue state UNKNOWN group default qlen 1000 < LOOPBACK,UP,LOWER_UP > mtu
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: 1500 qdisc mq state UP group default qlen 1000 < BROADCAST,MULTICAST,UP,LOWER_UP > mtu
link/ether 00:16:3e:04:b0:40 brd ff:ff:ff:ff:ff:ff
inet 172.16.50.108/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159216sec preferred_lft 1892159216sec

Pistas

  • El comando ip es una herramienta potente con muchos subcomandos. El indicado para gestionar direcciones es addr.
  • Puedes usar ip addr show o su alias más corto ip addr.

Verificación de la configuración de la dirección IP

Bien, la interfaz está UP. Es un buen comienzo. Pero, ¿tiene una dirección IP? Una interfaz sin dirección IP no puede comunicarse en la red. Aunque ip addr muestra esto, usemos otro comando clásico, ifconfig, para verificarlo. Es bueno conocer múltiples herramientas para el mismo trabajo.

Tareas

  • Utiliza el comando ifconfig para verificar la configuración de la dirección IP.

Requisitos

  • Debes utilizar el comando ifconfig.

Ejemplos

La salida debería mostrar tus interfaces de red con sus direcciones IP. Busca el campo inet bajo tu interfaz de red principal (como eth0) para confirmar la configuración IP.

## Salida esperada mostrando la configuración IP
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.50.108  netmask 255.255.255.0  broadcast 172.16.50.255
        ether 00:16:3e:04:b0:40  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

Pistas

  • El comando ifconfig es parte del paquete net-tools, que ya hemos instalado para ti.
  • Ejecutar ifconfig sin argumentos mostrará todas las interfaces activas.

Prueba de conectividad con hosts remotos

El servidor tiene una interfaz activa y una dirección IP. El siguiente paso lógico es comprobar si puede llegar al mundo exterior. Un fallo aquí podría indicar un problema con la puerta de enlace o la configuración de DNS. El comando ping es la herramienta perfecta para esta prueba.

Tareas

  • Prueba la conectividad del servidor a Internet enviando exactamente 3 paquetes ICMP al servidor DNS público de Google en 8.8.8.8.

Requisitos

  • Debes utilizar el comando ping.
  • Debes limitar el número de paquetes enviados a 3.
  • La dirección IP de destino debe ser 8.8.8.8.

Ejemplos

Si la conectividad funciona, deberías ver respuestas de la dirección IP de destino con información de tiempo. El resumen al final debería mostrar 3 paquetes transmitidos y 3 recibidos con un 0% de pérdida de paquetes.

## Patrón de salida exitosa esperado
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=4.33 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=4.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=4.30 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 4.298/4.309/4.329/0.014 ms

Pistas

  • El comando ping se ejecutará indefinidamente a menos que le indiques que se detenga.
  • Usa la opción -c para especificar el count (número) de paquetes a enviar.

Inspección de puertos de red abiertos

¡La conectividad es buena! Entonces, ¿por qué el portal interno sigue siendo inaccesible? El problema podría estar en la propia aplicación. ¿Está el proceso del servidor web realmente ejecutándose y escuchando conexiones en el puerto correcto? El comando ss (socket statistics) es una herramienta moderna y rápida para investigar esto.

Tareas

  • Se supone que el portal interno se ejecuta en el puerto 8000. Utiliza el comando ss para comprobar si algún proceso está escuchando conexiones TCP en el puerto 8000.

Requisitos

  • Debes utilizar el comando ss.
  • Tu comando debe estar construido para mostrar sockets TCP en escucha.

Ejemplos

Si un proceso está escuchando en el puerto 8000, deberías ver una salida que contenga información sobre el socket en escucha. Busca una línea que muestre el puerto 8000 en la columna Local Address.

## Salida esperada mostrando un proceso en escucha en el puerto 8000
LISTEN 0      5            0.0.0.0:8000       0.0.0.0:*    users:(("python3",pid=3765,fd=3))

Pistas

  • El comando ss tiene varias banderas útiles:
    • -t: Muestra sockets TCP.
    • -l: Muestra sockets en listening (escucha).
    • -n: Muestra números de puerto numéricos en lugar de nombres de servicio.
    • -p: Muestra el proceso que usa el socket.
  • Puedes combinar estas banderas, como ss -tlnp.
  • Para encontrar un puerto específico, puedes enviar la salida de ss al comando grep. Por ejemplo: ss -tlnp | grep 8000.

Configuración de reglas básicas de firewall

Lo has confirmado todo: la interfaz está activa, la IP está configurada, la conectividad a Internet funciona y la aplicación está escuchando en el puerto correcto. Solo queda un sospechoso principal: el firewall. Es probable que esté bloqueando el tráfico entrante al portal. Tu tarea final es configurar el firewall para que el tráfico pueda llegar al portal de nuevo. Usaremos ufw (Uncomplicated Firewall), una interfaz fácil de usar para gestionar reglas de firewall.

Tareas

  1. Añade una regla de firewall para permitir el tráfico entrante en el puerto 8000.
  2. Añade una regla de firewall para permitir el tráfico SSH entrante (puerto 22).
  3. Habilita el firewall para aplicar las nuevas reglas.

Requisitos

  • Debes utilizar el comando ufw para todas las operaciones.
  • Debes usar sudo porque modificar las reglas del firewall requiere privilegios administrativos.

Ejemplos

Después de configurar las reglas del firewall, ejecutar sudo ufw status debería mostrar que el firewall está activo con el puerto 8000 y SSH (puerto 22) permitidos.

## Salida esperada después de habilitar el firewall con el puerto 8000 y SSH permitidos
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
8000                       ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
8000 (v6)                  ALLOW       Anywhere (v6)

Al añadir la regla, deberías ver:

Rules updated
Rules updated (v6)

Al habilitar el firewall, deberías ver:

Firewall is active and enabled on system startup

Pistas

  • La sintaxis de ufw es muy sencilla. Para permitir tráfico en un puerto, usa ufw allow <puerto>.
  • Puedes permitir tráfico en el puerto 8000 usando ufw allow 8000.
  • Puedes permitir tráfico SSH específicamente usando ufw allow ssh o ufw allow 22.
  • Advertencia crítica: Si no abres correctamente el puerto SSH (22), la verificación fallará porque depende de este puerto para la conectividad SSH.
  • Advertencia importante: No modifiques las reglas del firewall para otros puertos arbitrariamente, ya que esto puede causar fallos en la máquina virtual.
  • Después de añadir tus reglas, debes habilitar el firewall con ufw enable.

Resumen

¡Excelente trabajo, Navegador! Al comprobar sistemáticamente las interfaces de red, verificar la configuración IP, probar la conectividad, inspeccionar los puertos abiertos y, finalmente, configurar el firewall, has diagnosticado y resuelto el problema con éxito. El portal interno vuelve a estar en línea y te has ganado el respeto de tu equipo.

Has demostrado un sólido dominio de las herramientas fundamentales de redes en Linux como ip, ifconfig, ping, ss y ufw. Este proceso de solución de problemas lógico y paso a paso es una habilidad crítica para cualquier administrador de sistemas y será invaluable en tu carrera. ¡Sigue perfeccionando tus habilidades!

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar