Troubleshooting de Rede na Pratica - Diagnosticando Problemas com ping, traceroute e dig

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)

  1. ping para verificar alcancabilidade
  2. traceroute para encontrar onde os pacotes param
  3. dig para 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 SECTION significa que a resolucao DNS teve sucesso
  • NXDOMAIN significa que o dominio nao existe (ou esta digitado errado)
  • SERVFAIL significa 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.

Proximas Leituras