Problemas comunes de conectividad de red en Linux y cómo solucionarlos

Diagnostique problemas de red en Linux con ip, ping, dig, ethtool, tcpdump, verificaciones de firewall y soluciones claras para fallos comunes.

Problemas comunes de conectividad de red en Linux y cómo solucionarlos

Los problemas de red en Linux suelen manifestarse como uno de cuatro síntomas: sin ruta, sin DNS, tráfico lento o un puerto de servicio que no responde. Desde configuraciones domésticas simples hasta entornos empresariales complejos, es común encontrar problemas de red en sistemas Linux. Estos problemas pueden variar desde fallos completos de conectividad hasta velocidades de red frustrantemente lentas. Afortunadamente, Linux proporciona un conjunto robusto de herramientas y comandos que pueden ayudar a diagnosticar y resolver la mayoría de los problemas comunes de red. Trabaje desde el host local hacia afuera: estado del enlace, dirección IP, ruta, DNS, firewall y luego el servicio remoto.

Comprendiendo la pila de red

Antes de sumergirse en la resolución de problemas, es beneficioso tener una comprensión básica de la pila de red de Linux. La pila de red es un modelo en capas (similar al modelo OSI o TCP/IP) que maneja la comunicación de red. Los componentes clave incluyen:

  • Tarjetas de interfaz de red (NIC): El hardware físico responsable de enviar y recibir datos.
  • Configuración de la interfaz de red: Configuraciones de software que definen cómo operan las NIC (dirección IP, máscara de red, puerta de enlace, etc.).
  • Enrutamiento IP: El proceso de dirigir el tráfico de red entre diferentes redes.
  • DNS (Sistema de nombres de dominio): Traduce nombres de dominio legibles por humanos en direcciones IP.
  • Firewall (iptables/nftables): Controla el flujo de tráfico de red según reglas predefinidas.

Al solucionar problemas, a menudo interactuará con herramientas que inspeccionan y manipulan estos componentes.

Problemas comunes de conectividad de red y soluciones

1. Sin conectividad de red / No se pueden alcanzar recursos externos

Este es el problema más básico y a menudo el más disruptivo. Significa que su sistema no puede enviar ni recibir paquetes de datos más allá de su red local.

Pasos de diagnóstico:

  1. Verificar el estado de la interfaz de red:

    • ip a o ifconfig -a: Lista todas las interfaces de red y su estado actual. Busque su interfaz principal (por ejemplo, eth0, ens33) y verifique si tiene una dirección IP y está en estado UP.
      ip a show eth0
      # o
      ifconfig eth0
      
    • Si la interfaz está inactiva, actívela:
      sudo ip link set eth0 up
      # o
      sudo ifconfig eth0 up
      
  2. Verificar la dirección IP, máscara de red y puerta de enlace:

    • Asegúrese de que su sistema tenga una dirección IP y máscara de red válidas para su red. La IP de la puerta de enlace es esencial para alcanzar redes externas.
    • Verifique su configuración de puerta de enlace:
      ip r
      # o
      route -n
      
      Debería ver una ruta predeterminada (generalmente comenzando con 0.0.0.0/0 o default) que apunte a su IP de puerta de enlace.
    • Si usa DHCP, intente renovar la concesión:
      sudo dhclient -r eth0  # Liberar concesión actual
      sudo dhclient eth0      # Obtener una nueva concesión
      
    • Si usa IP estática, verifique el administrador de red activo para su distribución, como Netplan en muchos servidores Ubuntu, perfiles de conexión de NetworkManager o archivos heredados como /etc/network/interfaces y /etc/sysconfig/network-scripts/ifcfg-* donde aún se usen.
  3. Probar la conectividad de red local:

    • ping a la IP de la puerta de enlace: Esto verifica si puede alcanzar su enrutador o puerta de enlace predeterminada.
      ping <gateway_ip>
      
      (por ejemplo, ping 192.168.1.1)
  4. Probar la resolución DNS:

    • ping a un nombre de host externo: Si hacer ping a una dirección IP funciona pero a un nombre de host no, indica un problema de DNS.
      ping example.com
      
    • nslookup o dig: Estas herramientas consultan servidores DNS.
      nslookup example.com
      # o
      dig example.com
      
    • Verifique la configuración de su servidor DNS en /etc/resolv.conf.
      cat /etc/resolv.conf
      
      Asegúrese de que liste entradas nameserver válidas.
  5. Verificar NetworkManager (si aplica):

    • Si está usando NetworkManager (común en Linux de escritorio), verifique su estado:
      nmcli networking off
      nmcli networking on
      nmcli device status
      nmcli connection show
      

Soluciones:

  • Reiniciar servicios de red:
    sudo systemctl restart networking  # Para Debian/Ubuntu (antiguo)
    sudo systemctl restart NetworkManager # Para sistemas que usan NetworkManager
    sudo systemctl restart network # Para RHEL/CentOS
    
  • Corregir archivos de configuración: Edite manualmente los archivos de configuración para establecer la IP, máscara de red, puerta de enlace y servidores DNS correctos.
  • Verificar el servidor DHCP: Asegúrese de que su servidor DHCP esté funcionando y tenga concesiones disponibles.
  • Reemplazar hardware defectuoso: Si ip a no muestra enlace, pruebe con un cable de red o puerto diferente, o incluso una NIC diferente.

2. Velocidades de red lentas

Cuando su red es técnicamente funcional pero lenta, puede ser igualmente frustrante.

Pasos de diagnóstico:

  1. Aislar el cuello de botella:

    • Probar velocidad localmente: Use herramientas como iperf3 para probar el rendimiento entre dos máquinas en su red local. Esto ayuda a determinar si la lentitud está dentro de su LAN o con su conexión WAN.
      • En el servidor (una máquina):
        iperf3 -s
        
      • En el cliente (otra máquina):
        iperf3 -c <server_ip>
        
    • Probar velocidad externa: Use sitios web de prueba de velocidad en línea o herramientas como speedtest-cli.
      sudo apt install speedtest-cli # Debian/Ubuntu
      sudo yum install speedtest-cli # RHEL/CentOS (puede necesitar repositorio EPEL)
      speedtest-cli
      
  2. Verificar errores de la interfaz de red:

    • Use ethtool para verificar errores, paquetes descartados o problemas de hardware en la interfaz.
      sudo ethtool -S eth0
      
      Busque métricas como rx_dropped, tx_dropped o rx_errors.
  3. Examinar el tráfico de red:

    • iftop o nethogs: Estas herramientas muestran el uso de red en tiempo real por conexión o por proceso, respectivamente. Pueden ayudar a identificar qué aplicación o host está consumiendo ancho de banda.
      sudo apt install iftop nethogs # Debian/Ubuntu
      sudo yum install iftop nethogs # RHEL/CentOS
      sudo iftop -i eth0
      sudo nethogs eth0
      
    • tcpdump: Para un análisis de paquetes más profundo (más avanzado).
      sudo tcpdump -i eth0 -n
      
  4. Verificar congestión:

    • Si tiene muchos dispositivos en su red, la congestión podría ser la causa. Verifique el estado de su enrutador y el ancho de banda disponible.
  5. Revisar el rendimiento de DNS:

    • Las consultas DNS lentas pueden hacer que la navegación se sienta lenta. Intente usar un servidor DNS diferente (por ejemplo, Google DNS 8.8.8.8, Cloudflare 1.1.1.1) en /etc/resolv.conf o en la configuración de su administrador de red y vuelva a probar.

Soluciones:

  • Actualizar controladores: Asegúrese de que los controladores de su tarjeta de red estén actualizados.
  • Ajustar MTU: A veces, una configuración incorrecta de la Unidad Máxima de Transmisión (MTU) puede causar problemas de rendimiento, especialmente con VPN o ciertas configuraciones de red. (Avanzado: Use ip link set eth0 mtu <valor>).
  • Reemplazar hardware: Una NIC o puerto de switch defectuoso puede causar ralentizaciones.
  • Optimizar reglas de firewall: Reglas de firewall demasiado complejas o ineficientes pueden afectar el rendimiento.
  • Actualizar la infraestructura de red: Si su red está saturada, es posible que necesite un enrutador, switch o conexión a internet más rápidos.

3. Problemas de conectividad intermitente

Este es quizás el tipo de problema más desafiante, ya que las conexiones se caen aleatoriamente.

Pasos de diagnóstico:

  1. Monitorear los registros del sistema:

    • Verifique los registros del sistema en busca de errores relacionados con la red o desconexiones. Los registros clave incluyen:
      • /var/log/syslog o /var/log/messages
      • journalctl -xe (para sistemas que usan systemd)
      • Busque mensajes relacionados con NetworkManager, dhclient, kernel o interfaces de red específicas.
  2. Verificar dmesg:

    • dmesg muestra mensajes del búfer de anillo del kernel, que pueden revelar problemas de hardware o controladores.
      dmesg | grep -i eth0
      dmesg | grep -i net
      
  3. Probar con ping continuamente:

    • En Linux, ping se ejecuta continuamente de forma predeterminada hasta que lo detiene con Ctrl+C. Use -c cuando desee un número fijo.
      ping <gateway_ip>
      ping -c 1000 <gateway_ip>
      
    • Haga ping tanto a la puerta de enlace como a un host externo simultáneamente para diferenciar problemas locales vs. externos.
  4. Verificar la conectividad inalámbrica (si aplica):

    • Si usa Wi-Fi, verifique la intensidad de la señal, la interferencia y vuelva a asociarse con la red.
      iwconfig
      nmcli device wifi list
      nmcli device wifi connect <SSID> password <password>
      
  5. Verificaciones de hardware:

    • Pruebe con un cable de red diferente, un puerto en el switch o incluso una NIC diferente.
    • Si es inalámbrico, intente acercarse al punto de acceso.

Soluciones:

  • Actualizar controladores y kernel: Los problemas intermitentes a veces pueden ser causados por controladores o módulos del kernel con errores. Asegúrese de que su sistema esté completamente actualizado.
  • Deshabilitar el ahorro de energía: Algunas NIC tienen funciones agresivas de ahorro de energía que pueden causar desconexiones. Esto a veces se puede ajustar mediante ethtool o con parámetros del módulo del kernel.
  • Simplificar la configuración de red: Deshabilite temporalmente NetworkManager u otros demonios de gestión de red para descartar conflictos.
  • Verificar las concesiones DHCP: Asegúrese de que su servidor DHCP no se esté quedando sin concesiones o tenga problemas para renovarlas.

4. Firewall bloqueando el tráfico

Los firewalls son esenciales para la seguridad, pero las configuraciones incorrectas pueden bloquear el tráfico legítimo.

Pasos de diagnóstico:

  1. Verificar el estado del firewall:

    • iptables: Lista las reglas actuales de iptables.
      sudo iptables -L -n -v
      
    • nftables: Lista las reglas actuales de nftables (sistemas más nuevos).
      sudo nft list ruleset
      
    • Verifique si ufw (Uncomplicated Firewall) o firewalld se están ejecutando y qué reglas están activas.
      sudo ufw status verbose
      sudo systemctl status firewalld
      sudo firewall-cmd --list-all
      
  2. Probar puertos específicos:

    • Si no puede acceder a un servicio (por ejemplo, SSH en el puerto 22), intente conectarse usando telnet o nc (netcat) desde otra máquina.
      telnet <server_ip> <port>
      # o
      nc -zv <server_ip> <port>
      

Soluciones:

  • Deshabilitar temporalmente el firewall: Solo con fines de prueba, puede deshabilitar temporalmente el firewall para ver si la conectividad regresa. Recuerde volver a habilitarlo después.
    sudo ufw disable
    sudo systemctl stop firewalld
    # o gestionar las reglas de iptables directamente
    
  • Agregar reglas específicas: Si el firewall es el problema, agregue reglas para permitir el tráfico necesario. Por ejemplo, para permitir SSH:
    • ufw:
      sudo ufw allow ssh
      # o
      sudo ufw allow 22/tcp
      
    • firewalld:
      sudo firewall-cmd --permanent --add-service=ssh
      sudo firewall-cmd --reload
      
    • iptables (ejemplo para permitir HTTP saliente):
      sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
      

Mejores prácticas para la administración de redes

  • Documente su red: Mantenga registros de direcciones IP, subredes, puertas de enlace, servidores DNS y reglas de firewall.
  • Use registro centralizado: Reenvíe registros a un servidor central para rastrear fácilmente problemas en múltiples máquinas.
  • Monitoree el rendimiento de la red: Implemente herramientas de monitoreo (por ejemplo, Nagios, Zabbix, Prometheus) para detectar problemas de manera proactiva.
  • Mantenga los sistemas actualizados: Aplique parches de seguridad y actualizaciones regularmente, ya que a menudo incluyen correcciones para errores relacionados con la red.
  • Comprenda su hardware: Conozca las capacidades y limitaciones de sus interfaces de red, switches y enrutadores.
  • Pruebe los cambios: Antes de realizar cambios significativos en la configuración de red, pruébelos en un entorno que no sea de producción si es posible.

Conclusión

Comience con lo básico: enlace físico, estado de la interfaz, dirección IP, ruta predeterminada, DNS y reglas de firewall. Si esos pasan, pruebe el puerto de servicio específico con nc e inspeccione los paquetes con tcpdump. Ese orden evita que persiga problemas de aplicación cuando el host simplemente no tiene ruta o resolución de nombres.