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:
Verifique o Status da Interface de Rede:
ip aouifconfig -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 estadoUP.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
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:
Você deve ver uma rota padrão (geralmente começando comip r # ou route -n0.0.0.0/0oudefault) 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/interfacese/etc/sysconfig/network-scripts/ifcfg-*onde ainda são usados.
Teste a Conectividade da Rede Local:
pingno IP do gateway: Isso verifica se você consegue alcançar seu roteador ou gateway padrão.
(por exemplo,ping <gateway_ip>ping 192.168.1.1)
Teste a Resolução de DNS:
pingem 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.comnslookupoudig: Essas ferramentas consultam servidores DNS.nslookup example.com # ou dig example.com- Verifique sua configuração de servidor DNS em
/etc/resolv.conf.
Certifique-se de que ele lista entradascat /etc/resolv.confnameserverválidas.
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
- Se você estiver usando o NetworkManager (comum em desktops Linux), verifique seu status:
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 anã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:
Isole o Gargalo:
- Teste a Velocidade Localmente: Use ferramentas como
iperf3para 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>
- No servidor (uma máquina):
- 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
- Teste a Velocidade Localmente: Use ferramentas como
Verifique Erros na Interface de Rede:
- Use
ethtoolpara verificar erros, pacotes descartados ou problemas de hardware na interface.
Procure por métricas comosudo ethtool -S eth0rx_dropped,tx_droppedourx_errors.
- Use
Examine o Tráfego de Rede:
iftopounethogs: 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 eth0tcpdump: Para análise de pacotes mais aprofundada (mais avançado).sudo tcpdump -i eth0 -n
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.
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.confou nas configurações do seu gerenciador de rede e teste novamente.
- 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
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:
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/syslogou/var/log/messagesjournalctl -xe(para sistemas que usam systemd)- Procure por mensagens relacionadas a
NetworkManager,dhclient,kernelou interfaces de rede específicas.
- Verifique os logs do sistema em busca de erros relacionados à rede ou desconexões. Os logs principais incluem:
Verifique
dmesg:dmesgmostra mensagens do buffer de anel do kernel, que podem revelar problemas de hardware ou driver.dmesg | grep -i eth0 dmesg | grep -i net
Teste com
pingcontinuamente:- No Linux,
pingé executado continuamente por padrão até que você o pare com Ctrl+C. Use-cquando 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.
- No Linux,
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>
- Se estiver usando Wi-Fi, verifique a intensidade do sinal, interferência e reassocie-se à rede.
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
ethtoolou 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:
Verifique o Status do Firewall:
iptables: Lista as regras atuais doiptables.sudo iptables -L -n -vnftables: Lista as regras atuais donftables(sistemas mais novos).sudo nft list ruleset- Verifique se
ufw(Uncomplicated Firewall) oufirewalldestá em execução e quais regras estão ativas.sudo ufw status verbose sudo systemctl status firewalld sudo firewall-cmd --list-all
Teste Portas Específicas:
- Se você não consegue acessar um serviço (por exemplo, SSH na porta 22), tente conectar usando
telnetounc(netcat) de outra máquina.telnet <server_ip> <port> # ou nc -zv <server_ip> <port>
- Se você não consegue acessar um serviço (por exemplo, SSH na porta 22), tente conectar usando
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/tcpfirewalld:sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reloadiptables(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.