Troubleshooting de Rede na Pratica - Diagnosticando Problemas com ping, traceroute e dig
O Que Voce Vai Resolver com Este Artigo
"Nao consigo acessar o site." "So este servidor esta inacessivel." Falhas de rede sao 90% diagnostico. Com ping, traceroute e dig, voce pode sistematicamente restringir o problema verificando alcancabilidade, roteamento e DNS em ordem.
O Padrao de Diagnostico (3 Passos para Uso Real)
pingpara verificar alcancabilidadetraceroutepara encontrar onde os pacotes paramdigpara verificar resolucao DNS
Requisitos de Ambiente
- SO: Ubuntu ou Linux baseado em RHEL
- Acesso CLI disponivel
1. ping -- Como Verificar a Alcancabilidade?
ping e a primeira ferramenta para confirmar se os pacotes chegam ao destino. Testar com um endereco IP permite separar problemas de DNS de problemas de roteamento.
$ ping -c 4 8.8.8.8
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=118 time=8.45 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=7.92 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=8.21 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=8.10 ms --- 8.8.8.8 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 7.920/8.170/8.450/0.196 ms
Interpretando a Saida do ping
| Resultado | Significado |
|---|---|
| Respostas recebidas (0% loss) | Conexao fisica e roteamento estao funcionando |
| 100% packet loss | Problema de roteamento ou firewall bloqueando ICMP |
| Request timeout | Host remoto rejeita ICMP, ou caminho com problema |
Verifique Externo e Interno Separadamente
# Passo 1: Voce alcanca o gateway local? $ ping -c 4 192.168.1.1 # Passo 2: Voce alcanca um DNS do ISP? (confirma conectividade com a internet) $ ping -c 4 8.8.8.8 # Passo 3: Voce consegue pingar por hostname? (confirma que a resolucao DNS funciona) $ ping -c 4 google.com
Se o Passo 2 funcionar mas o Passo 3 falhar, o problema e DNS.
Use -c 4 para limitar o numero de pacotes. Sem isso, ping roda indefinidamente ate voce pressionar Ctrl+C -- sempre use -c em scripts ou verificacoes rapidas.
2. traceroute -- Onde o Pacote Para?
Quando o destino esta inacessivel, use traceroute para identificar qual salto esta descartando pacotes.
$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 192.168.1.1 (192.168.1.1) 1.234 ms 1.145 ms 1.089 ms 2 10.0.0.1 (10.0.0.1) 8.456 ms 8.512 ms 8.398 ms 3 * * * 4 203.0.113.1 (203.0.113.1) 15.234 ms 15.198 ms 15.321 ms 5 8.8.8.8 (8.8.8.8) 22.567 ms 22.489 ms 22.601 ms
O Que Significa * * *?
* * * significa que aquele roteador nao retornou uma mensagem ICMP Time Exceeded. Isso nao e necessariamente uma falha. Se os pacotes alcancam saltos alem daquele roteador, ele simplesmente esta configurado para descartar respostas ICMP.
Quando * * * continua a partir de algum salto e nunca alcanca o destino, os pacotes provavelmente estao sendo descartados naquele ponto ou depois.
Instalando o traceroute
Pode nao estar instalado por padrao no Ubuntu:
$ sudo apt install traceroute
mtr e uma alternativa popular que monitora continuamente o caminho e mostra a perda de pacotes por salto em tempo real:
$ sudo apt install mtr $ mtr 8.8.8.8
3. dig -- Como Verificar a Resolucao DNS?
Quando voce alcanca um endereco IP mas nao um hostname, o problema e DNS. Use dig para inspecionar a resolucao de nomes em detalhe.
Uso Basico
# Consultar registro A (endereco IPv4) $ dig google.com A # Saida compacta -- apenas a resposta $ dig +short google.com
142.250.196.46
# Consultar um servidor DNS especifico diretamente (isola o servidor DNS) $ dig @8.8.8.8 google.com A
Interpretando a Saida do dig
$ dig google.com A
; <<>> DiG 9.18.18 <<>> google.com A ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 83 IN A 142.250.196.46 ;; Query time: 12 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
- Uma entrada na
ANSWER SECTIONsignifica que a resolucao DNS teve sucesso NXDOMAINsignifica que o dominio nao existe (ou esta digitado errado)SERVFAILsignifica que o servidor DNS falhou em retornar uma resposta
Tipos de Registro DNS e Como Consultar
| Registro | Finalidade | Comando de exemplo |
|---|---|---|
| A | Endereco IPv4 | dig example.com A |
| AAAA | Endereco IPv6 | dig example.com AAAA |
| MX | Servidor de email | dig example.com MX |
| CNAME | Alias | dig example.com CNAME |
| NS | Servidor de nomes | dig example.com NS |
| PTR | Consulta reversa | dig -x 8.8.8.8 |
4. Fluxo de Diagnostico -- Padroes do Mundo Real
O objetivo e restringir em qual camada a falha esta. Siga esta sequencia:
Passo 1: O ping para um endereco IP funciona?
$ ping -c 4 8.8.8.8
Se nao, e um problema de roteamento L3. Use traceroute para encontrar onde os pacotes param.
Passo 2: O ping para um hostname funciona?
$ ping -c 4 google.com
Se o IP funciona mas o hostname falha, e um problema de DNS. Investigue com dig.
Passo 3: O dig resolve o nome?
$ dig @8.8.8.8 google.com
Se 8.8.8.8 resolve mas seu servidor DNS configurado nao, o problema esta em /etc/resolv.conf ou no proprio servidor DNS.
Padroes Comuns de Falha e Correcoes
Padrao 1: Gateway acessivel, mas sem acesso a internet
$ ping -c 4 192.168.1.1 # OK $ ping -c 4 8.8.8.8 # Falha
Configuracao incorreta do roteador ou problema no ISP. Use traceroute para ver ate onde os pacotes viajam.
Padrao 2: IP acessivel, mas resolucao de hostname falha
$ ping -c 4 8.8.8.8 # OK $ ping -c 4 google.com # Falha
Problema de DNS. Verifique /etc/resolv.conf e tente um servidor DNS alternativo.
$ cat /etc/resolv.conf $ dig @8.8.8.8 google.com $ dig @1.1.1.1 google.com
Padrao 3: Uma porta especifica esta inacessivel
$ ping -c 4 example.com # OK (ICMP funciona) $ curl -v https://example.com # Falha (porta 443 bloqueada)
Problema de firewall. Verifique ufw, firewalld ou iptables.
$ sudo ufw status
ICMP (ping) passando nao significa que HTTP/HTTPS passara -- sao protocolos diferentes em camadas diferentes. Para conectividade em nivel de porta, use nc (netcat) ou curl -v.
5. Quando systemd-resolved Interfere
No Ubuntu 18.04 e posteriores, systemd-resolved atua como intermediario de resolucao DNS. Quando dig mostra o servidor como 127.0.0.53, as consultas estao passando pelo systemd-resolved.
# Verificar a configuracao DNS atual $ resolvectl status # Consultar um DNS externo diretamente para comparar $ dig @8.8.8.8 google.com
Se 8.8.8.8 resolve nomes mas 127.0.0.53 nao, o problema esta na configuracao do systemd-resolved ou no symlink de /etc/resolv.conf.
# Verificar para onde /etc/resolv.conf aponta $ ls -la /etc/resolv.conf
O estado normal e /etc/resolv.conf ser um symlink para stub-resolv.conf (gerenciado pelo systemd-resolved). Se aponta para outro lugar ou e um arquivo simples, o comportamento DNS pode ser inesperado.