traceroute e mtr: Rastreando Caminhos de Rede e Encontrando o Salto Lento
O Que Voce Vai Aprender
- Como usar
traceroutepara mapear o caminho (quais roteadores seus pacotes atravessam) - Como usar
mtrpara medir continuamente perda e latencia por salto e isolar o segmento problemático - Como ler
* * *e perda em saltos intermediarios corretamente em vez de julgá-los erroneamente
Resumo Rapido
- Ver o caminho e o destino uma vez ->
traceroute - Ver onde a perda ou latencia ocorre ->
mtr - Ignorar perda apenas em saltos intermediarios (limitacao de taxa ICMP). Perda que chega ao salto final e o problema real
Premissas
- SO: Ubuntu / Linux geral
tracerouteemtrsao pacotes separados. Instale comsudo apt install traceroute mtr-tiny
O Que o traceroute Realmente Faz?
Conclusao: Ele envia pacotes com TTL crescente a partir de 1 e reconstroi o caminho um salto por vez a partir das mensagens ICMP Time Exceeded que cada roteador retorna.
Todo pacote IP carrega um contador TTL (Time To Live): quantos roteadores mais ele pode cruzar. Cada roteador decrementa o TTL em 1, e um pacote cujo TTL chega a 0 e descartado - o roteador envia uma mensagem ICMP Time Exceeded de volta ao remetente.
O traceroute explora isso.
- Envie um pacote com TTL=1 -> o primeiro roteador descarta e responde -> salto 1 revelado
- Envie TTL=2 -> o segundo roteador responde -> salto 2 revelado
- Continue aumentando o TTL ate alcancar o destino
Ele envia 3 sondas por salto por padrao, entao cada linha mostra tres tempos de ida e volta (RTT).
$ traceroute example.com
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets 1 _gateway (192.168.1.1) 0.512 ms 0.498 ms 0.471 ms 2 10.0.0.1 (10.0.0.1) 4.231 ms 4.118 ms 4.090 ms 3 * * * 4 93.184.216.34 (93.184.216.34) 12.043 ms 11.998 ms 12.110 ms
* * * Significa que Algo Esta Quebrado?
Conclusao: Normalmente nao. Um roteador simplesmente escolheu nao responder; se saltos alem dele ainda respondem, o caminho esta funcionando.
* * * significa "sem resposta a nenhuma das 3 sondas." As causas comuns sao:
- O roteador suprime respostas de TTL-exceeded (firewall / politica)
- Ele bloqueia sondas UDP (traceroute no Linux usa UDP por padrao)
- Atingiu um limite de taxa de resposta
Regra pratica: se saltos apos o * * * respondem, o caminho esta funcionando. So suspeite de alcancabilidade quando * continua ate o salto final (o destino).
Se voce suspeita que UDP esta sendo bloqueado, mude o metodo de sondagem.
# ICMP Echo (mesmo tipo de pacote que ping) $ sudo traceroute -I example.com # TCP SYN para porta 443 (mais proximo do trafego HTTPS real) $ sudo traceroute -T -p 443 example.com
-I (ICMP) e -T (TCP) usam raw sockets e precisam de root (sudo). O modo UDP padrao funciona como usuario regular.
Quais Opcoes do traceroute Importam?
Conclusao: Comece com
-n(pular DNS para velocidade),-T -p(sondar via TCP) e-m(max hops).
| Opcao | Significado |
|---|---|
-n |
Nao resolver IPs para nomes (mais rapido) |
-I |
Sondar com ICMP Echo |
-T |
Sondar com TCP SYN (use -p para a porta) |
-p PORT |
Porta de destino (com -T, ex. 443) |
-m N |
Maximo de saltos (padrao 30) |
-q N |
Sondas por salto (padrao 3) |
-w SEC |
Timeout de espera de resposta em segundos |
# Numerico, max 20 saltos, uma sonda por salto - varredura rapida $ traceroute -n -m 20 -q 1 example.com
Se as resolucoes DNS reversas estao tornando o processo lento, adicione -n primeiro.
Como o mtr E Diferente do traceroute?
Conclusao: traceroute e um snapshot unico do caminho; mtr continua fazendo ping em cada salto do caminho e atualiza estatisticas de perda e latencia em tempo real.
Problemas de rede oscilam. Um unico traceroute nao consegue capturar o caso intermitente. O mtr combina traceroute (descoberta de caminho) com ping (medicao continua) e monitora cada salto continuamente.
$ mtr example.com
Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. _gateway 0.0% 20 0.5 0.6 0.4 1.2 0.2 2. 10.0.0.1 0.0% 20 4.2 4.3 4.0 6.1 0.5 3. 203.0.113.1 10.0% 20 18.0 19.4 17.2 41.0 5.1 4. 93.184.216.34 0.0% 20 12.0 12.1 11.9 12.4 0.1
O significado das colunas:
- Loss%: proporcao de sondas sem resposta naquele salto
- Snt: sondas enviadas
- Last / Avg / Best / Wrst: ultimo / medio / minimo / maximo RTT (ms)
- StDev: variacao do RTT (maior = menos estavel)
Como Voce Le a Perda no mtr?
Conclusao: Perda em um salto intermediario que volta a 0% no salto final e perda falsa da limitacao de taxa ICMP. Apenas perda que persiste ate o salto final e real.
Esta e a maior armadilha do mtr e sua licao mais importante. Na saida acima, o salto 3 mostra 10.0% de perda, porem o salto final 4 volta a 0.0%.
Roteadores frequentemente desprioritizam ou limitam as respostas de TTL-exceeded endereacadas a eles mesmos. Entao os 10.0% do salto 3 significam apenas "salto 3 descartou algumas de suas proprias respostas" - o trafego em si passa direto.
Regra de decisao
- Perda em salto intermediario -> ignore a menos que se propague ate o salto final (falso positivo de limitacao de taxa ICMP)
- Perda no salto final (destino) -> perda real de pacotes. O segmento onde a perda comeca a subir e continua e o culpado
Em resumo, observe onde a perda comeca e permanece ate o fim. Descarte perda que desaparece depois.
Como Voce Identifica o Segmento Lento?
Conclusao: Se o Avg salta em um salto e permanece alto pelo resto, esse segmento e a fonte de latencia. Um pico que volta e apenas processamento atrasado de resposta, sem impacto real.
A latencia se le da mesma forma que a perda.
- Avg salta em um salto e permanece alto para cada salto posterior -> esse segmento (salto anterior -> este salto) e a fonte real de latencia
- Apenas Wrst sobe em um salto enquanto Avg permanece baixo -> aquele roteador simplesmente atrasou sua resposta; nao e latencia real do caminho
# Modo relatorio: enviar 10 ciclos, depois imprimir resultados finais (para logs / tickets) $ mtr -rwzbc 10 example.com
Significado das opcoes:
-r/--report: imprimir resultados agregados uma vez em vez da tela interativa-w: saida ampla (nao truncar hostnames)-z: mostrar o numero AS de cada salto (qual rede de provedor e)-b: mostrar tanto hostname quanto IP-c N: numero de ciclos a enviar (padrao 10)-n: pular resolucao de nomes (mais rapido)
Ao enviar um relatorio para seu ISP ou equipe de infra, anexe um relatorio com mais ciclos, ex. mtr -rwzbc 100 host. Mais amostras tornam os numeros de perda mais confiaveis e aceleram a conversa.
traceroute vs mtr: qual usar
Conclusao: Use traceroute para verificar o caminho uma vez, e mtr para isolar continuamente onde a perda ou latencia ocorre. Anexe a saida de relatorio do mtr ao reportar um problema.
| Situacao | Use |
|---|---|
| Ver o caminho para um host uma vez | traceroute -n |
UDP bloqueado, * * * continua |
traceroute -T -p 443 |
| Medir perda / latencia continuamente | mtr host |
| Compartilhar resultados como relatorio | mtr -rwzbc 100 host |
Interpretacoes erradas comuns
- Tratar um
* * *intermediario como uma falha - Acreditar em perda de salto intermediario que retorna a 0% no salto final
- Concluir "tudo certo" a partir de uma unica execucao de traceroute