Problemas Comuns de Conectividade de Rede no Linux e Como Corrigi-los

Diagnostique problemas de rede no Linux com ip, ping, dig, ethtool, tcpdump, verificações de firewall e correções claras para falhas comuns.

Problemas Comuns de Conectividade de Rede no Linux e Como Corrigi-los

Os problemas de rede no Linux geralmente se manifestam como um dos quatro sintomas: sem rota, sem DNS, tráfego lento ou uma porta de serviço que não responde. De configurações domésticas simples a ambientes empresariais complexos, encontrar problemas de rede em sistemas Linux é comum. Esses problemas podem variar desde falhas completas de conectividade até velocidades de rede frustrantemente lentas. Felizmente, o Linux fornece um conjunto robusto de ferramentas e comandos que podem ajudar a diagnosticar e resolver a maioria dos problemas comuns de rede. Trabalhe do host local para fora: estado do link, endereço IP, rota, DNS, firewall e, em seguida, o serviço remoto.

Entendendo a Pilha de Rede

Antes de mergulhar na solução de problemas, é benéfico ter um entendimento básico da pilha de rede do Linux. A pilha de rede é um modelo em camadas (semelhante ao modelo OSI ou TCP/IP) que lida com a comunicação de rede. Os componentes principais incluem:

  • Placas de Interface de Rede (NICs): O hardware físico responsável por enviar e receber dados.
  • Configuração da Interface de Rede: Configurações de software que definem como as NICs operam (endereço IP, máscara de rede, gateway, etc.).
  • Roteamento IP: O processo de direcionar o tráfego de rede entre diferentes redes.
  • DNS (Sistema de Nomes de Domínio): Traduz nomes de domínio legíveis por humanos em endereços IP.
  • Firewall (iptables/nftables): Controla o fluxo de tráfego de rede com base em regras predefinidas.

Ao solucionar problemas, você frequentemente interagirá com ferramentas que inspecionam e manipulam esses componentes.

Problemas Comuns de Conectividade de Rede e Soluções

1. Sem Conectividade de Rede / Não é Possível Acessar Recursos Externos

Este é o problema mais básico e muitas vezes o mais disruptivo. Significa que seu sistema não pode enviar ou receber pacotes de dados além de sua rede local.

Etapas de Diagnóstico:

  1. Verifique o Status da Interface de Rede:

    • ip a ou ifconfig -a: Lista todas as interfaces de rede e seu status atual. Procure sua interface primária (por exemplo, eth0, ens33) e verifique se ela tem um endereço IP e está no estado UP.
      ip a show eth0
      # ou
      ifconfig eth0
      
    • Se a interface estiver inativa, ative-a:
      sudo ip link set eth0 up
      # ou
      sudo ifconfig eth0 up
      
  2. Verifique o Endereço IP, Máscara de Rede e Gateway:

    • Certifique-se de que seu sistema tenha um endereço IP e máscara de rede válidos para sua rede. O IP do gateway é essencial para alcançar redes externas.
    • Verifique sua configuração de gateway:
      ip r
      # ou
      route -n
      
      Você deve ver uma rota padrão (geralmente começando com 0.0.0.0/0 ou default) apontando para seu IP de gateway.
    • Se estiver usando DHCP, tente renovar a concessão:
      sudo dhclient -r eth0  # Libera a concessão atual
      sudo dhclient eth0      # Obtém uma nova concessão
      
    • Se estiver usando IP estático, verifique o gerenciador de rede ativo para sua distribuição, como Netplan em muitos servidores Ubuntu, perfis de conexão do NetworkManager ou arquivos legados como /etc/network/interfaces e /etc/sysconfig/network-scripts/ifcfg-* onde ainda são usados.
  3. Teste a Conectividade da Rede Local:

    • ping no IP do gateway: Isso verifica se você consegue alcançar seu roteador ou gateway padrão.
      ping <gateway_ip>
      
      (por exemplo, ping 192.168.1.1)
  4. Teste a Resolução de DNS:

    • ping em um nome de host externo: Se o ping em um endereço IP funcionar, mas em um nome de host não, isso indica um problema de DNS.
      ping example.com
      
    • nslookup ou dig: Essas ferramentas consultam servidores DNS.
      nslookup example.com
      # ou
      dig example.com
      
    • Verifique sua configuração de servidor DNS em /etc/resolv.conf.
      cat /etc/resolv.conf
      
      Certifique-se de que ele lista entradas nameserver válidas.
  5. Verifique o Gerenciador de Rede (se aplicável):

    • Se você estiver usando o NetworkManager (comum em desktops Linux), verifique seu status:
      nmcli networking off
      nmcli networking on
      nmcli device status
      nmcli connection show
      

Correções:

  • Reinicie os Serviços de Rede:
    sudo systemctl restart networking  # Para Debian/Ubuntu (mais antigo)
    sudo systemctl restart NetworkManager # Para sistemas que usam NetworkManager
    sudo systemctl restart network # Para RHEL/CentOS
    
  • Corrija Arquivos de Configuração: Edite manualmente os arquivos de configuração para definir o IP, máscara de rede, gateway e servidores DNS corretos.
  • Verifique o Servidor DHCP: Certifique-se de que seu servidor DHCP está em execução e tem concessões disponíveis.
  • Substitua Hardware com Defeito: Se ip a não mostrar link, tente um cabo de rede ou porta diferente, ou até mesmo uma NIC diferente.

2. Velocidades de Rede Lentas

Quando sua rede é tecnicamente funcional, mas lenta, pode ser igualmente frustrante.

Etapas de Diagnóstico:

  1. Isole o Gargalo:

    • Teste a Velocidade Localmente: Use ferramentas como iperf3 para testar a taxa de transferência entre duas máquinas em sua rede local. Isso ajuda a determinar se a lentidão está dentro de sua LAN ou com sua conexão WAN.
      • No servidor (uma máquina):
        iperf3 -s
        
      • No cliente (outra máquina):
        iperf3 -c <server_ip>
        
    • Teste a Velocidade Externa: Use sites de teste de velocidade online ou ferramentas como speedtest-cli.
      sudo apt install speedtest-cli # Debian/Ubuntu
      sudo yum install speedtest-cli # RHEL/CentOS (pode precisar do repositório EPEL)
      speedtest-cli
      
  2. Verifique Erros na Interface de Rede:

    • Use ethtool para verificar erros, pacotes descartados ou problemas de hardware na interface.
      sudo ethtool -S eth0
      
      Procure por métricas como rx_dropped, tx_dropped ou rx_errors.
  3. Examine o Tráfego de Rede:

    • iftop ou nethogs: Essas ferramentas mostram o uso de rede em tempo real por conexão ou por processo, respectivamente. Elas podem ajudar a identificar qual aplicativo ou host está consumindo largura 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 análise de pacotes mais aprofundada (mais avançado).
      sudo tcpdump -i eth0 -n
      
  4. Verifique Congestionamento:

    • Se você tem muitos dispositivos em sua rede, o congestionamento pode ser a causa. Verifique o status do seu roteador e a largura de banda disponível.
  5. Revise o Desempenho do DNS:

    • Consultas DNS lentas podem fazer a navegação parecer lenta. Tente usar um servidor DNS diferente (por exemplo, Google DNS 8.8.8.8, Cloudflare 1.1.1.1) em /etc/resolv.conf ou nas configurações do seu gerenciador de rede e teste novamente.

Correções:

  • Atualize Drivers: Certifique-se de que os drivers da sua placa de rede estejam atualizados.
  • Ajuste o MTU: Às vezes, uma configuração incorreta de Unidade Máxima de Transmissão (MTU) pode causar problemas de desempenho, especialmente com VPNs ou certas configurações de rede. (Avançado: Use ip link set eth0 mtu <valor>).
  • Substitua Hardware: Uma NIC ou porta de switch com defeito pode causar lentidão.
  • Otimize Regras de Firewall: Regras de firewall excessivamente complexas ou ineficientes podem, às vezes, impactar o desempenho.
  • Atualize a Infraestrutura de Rede: Se sua rede está saturada, você pode precisar de um roteador, switch ou conexão de internet mais rápidos.

3. Problemas de Conectividade Intermitente

Este é talvez o tipo de problema mais desafiador, pois as conexões caem aleatoriamente.

Etapas de Diagnóstico:

  1. Monitore os Logs do Sistema:

    • Verifique os logs do sistema em busca de erros relacionados à rede ou desconexões. Os logs principais incluem:
      • /var/log/syslog ou /var/log/messages
      • journalctl -xe (para sistemas que usam systemd)
      • Procure por mensagens relacionadas a NetworkManager, dhclient, kernel ou interfaces de rede específicas.
  2. Verifique dmesg:

    • dmesg mostra mensagens do buffer de anel do kernel, que podem revelar problemas de hardware ou driver.
      dmesg | grep -i eth0
      dmesg | grep -i net
      
  3. Teste com ping continuamente:

    • No Linux, ping é executado continuamente por padrão até que você o pare com Ctrl+C. Use -c quando quiser uma contagem fixa.
      ping <gateway_ip>
      ping -c 1000 <gateway_ip>
      
    • Pingue o gateway e um host externo simultaneamente para diferenciar problemas locais de externos.
  4. Verifique a Conectividade Sem Fio (se aplicável):

    • Se estiver usando Wi-Fi, verifique a intensidade do sinal, interferência e reassocie-se à rede.
      iwconfig
      nmcli device wifi list
      nmcli device wifi connect <SSID> password <password>
      
  5. Verificações de Hardware:

    • Tente um cabo de rede diferente, porta no switch ou até mesmo uma NIC diferente.
    • Se for sem fio, tente se aproximar do ponto de acesso.

Correções:

  • Atualize Drivers e Kernel: Problemas intermitentes podem, às vezes, ser causados por drivers ou módulos do kernel com bugs. Certifique-se de que seu sistema esteja totalmente atualizado.
  • Desative a Economia de Energia: Algumas NICs têm recursos agressivos de economia de energia que podem causar desconexões. Isso pode, às vezes, ser ajustado via ethtool ou por parâmetros do módulo do kernel.
  • Simplifique a Configuração de Rede: Desative temporariamente o NetworkManager ou outros daemons de gerenciamento de rede para descartar conflitos.
  • Verifique Concessões DHCP: Certifique-se de que seu servidor DHCP não está ficando sem concessões ou tendo problemas para renová-las.

4. Firewall Bloqueando Tráfego

Firewalls são essenciais para a segurança, mas configurações incorretas podem bloquear o tráfego legítimo.

Etapas de Diagnóstico:

  1. Verifique o Status do Firewall:

    • iptables: Lista as regras atuais do iptables.
      sudo iptables -L -n -v
      
    • nftables: Lista as regras atuais do nftables (sistemas mais novos).
      sudo nft list ruleset
      
    • Verifique se ufw (Uncomplicated Firewall) ou firewalld está em execução e quais regras estão ativas.
      sudo ufw status verbose
      sudo systemctl status firewalld
      sudo firewall-cmd --list-all
      
  2. Teste Portas Específicas:

    • Se você não consegue acessar um serviço (por exemplo, SSH na porta 22), tente conectar usando telnet ou nc (netcat) de outra máquina.
      telnet <server_ip> <port>
      # ou
      nc -zv <server_ip> <port>
      

Correções:

  • Desative Temporariamente o Firewall: Apenas para fins de teste, você pode desativar temporariamente o firewall para ver se a conectividade retorna. Lembre-se de reativá-lo depois.
    sudo ufw disable
    sudo systemctl stop firewalld
    # ou gerencie as regras do iptables diretamente
    
  • Adicione Regras Específicas: Se o firewall for o problema, adicione regras para permitir o tráfego necessário. Por exemplo, para permitir SSH:
    • ufw:
      sudo ufw allow ssh
      # ou
      sudo ufw allow 22/tcp
      
    • firewalld:
      sudo firewall-cmd --permanent --add-service=ssh
      sudo firewall-cmd --reload
      
    • iptables (exemplo para permitir HTTP de saída):
      sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
      

Melhores Práticas para Administração de Rede

  • Documente Sua Rede: Mantenha registros de endereços IP, sub-redes, gateways, servidores DNS e regras de firewall.
  • Use Registro Centralizado: Encaminhe logs para um servidor central para rastrear facilmente problemas em várias máquinas.
  • Monitore o Desempenho da Rede: Implemente ferramentas de monitoramento (por exemplo, Nagios, Zabbix, Prometheus) para detectar problemas proativamente.
  • Mantenha os Sistemas Atualizados: Aplique patches de segurança e atualizações regularmente, pois eles geralmente incluem correções para bugs relacionados à rede.
  • Entenda Seu Hardware: Conheça as capacidades e limitações de suas interfaces de rede, switches e roteadores.
  • Teste Alterações: Antes de fazer alterações significativas na configuração de rede, teste-as em um ambiente que não seja de produção, se possível.

Conclusão

Comece com o básico: link físico, estado da interface, endereço IP, rota padrão, DNS e regras de firewall. Se esses passarem, teste a porta de serviço específica com nc e inspecione os pacotes com tcpdump. Essa ordem evita que você persiga problemas de aplicação quando o host simplesmente não tem rota ou resolução de nomes.