Este guia ensina-o a usar MTR (My Traceroute) e Traceroute para diagnosticar problemas de conectividade de rede, identificar pontos de latência e analisar a qualidade da sua ligação de rede.
📋 Pré-requisitos
- Um servidor VPS com acesso root ou sudo
- Uma ligação SSH ativa
- Ubuntu/Debian (comandos adaptados para estas distribuições)
🔧 Instalação
Instalar Traceroute (ferramenta básica)
Bash# On Ubuntu/Debian sudo apt update sudo apt install traceroute -y
Instalar MTR (ferramenta avançada)
O MTR combina as funcionalidades de ping e traceroute numa única ferramenta poderosa.
Bash1# On Ubuntu/Debian 2sudo apt update 3sudo apt install mtr-tiny -y 4 5# For the full version with graphical interface (optional) 6sudo apt install mtr -y
Verificar a instalação
Bash1# Verify that traceroute is installed 2traceroute --version 3 4# Verify that MTR is installed 5mtr --version
🛠️ Usar Traceroute
Comando básico
Bash1# Traceroute to a destination 2traceroute google.com 3 4# Traceroute to an IP 5traceroute 8.8.8.8 6 7# Limit the number of hops (default 30) 8traceroute -m 20 google.com 9 10# Specify timeout in seconds 11traceroute -w 5 google.com
Opções úteis
Bash1# Use UDP (default) 2traceroute -U google.com 3 4# Use TCP (more reliable) 5traceroute -T google.com 6 7# Use ICMP (like ping) 8traceroute -I google.com 9 10# Don't resolve DNS names (faster) 11traceroute -n google.com
Exemplo de saída
traceroute to google.com (142.250.185.14), 30 hops max, 60 byte packets
1 10.0.0.1 (10.0.0.1) 0.123 ms 0.089 ms 0.067 ms
2 192.168.1.1 (192.168.1.1) 5.234 ms 5.189 ms 5.145 ms
3 * * *
4 8.8.8.8 (8.8.8.8) 12.456 ms 12.389 ms 12.334 ms
...
🚀 Usar MTR (Recomendado)
O MTR é mais poderoso porque envia pacotes continuamente e calcula estatísticas em tempo real.
Comando básico
Bash1# MTR in interactive mode (recommended) 2mtr google.com 3 4# MTR with report (non-interactive) 5mtr --report google.com 6 7# MTR with 10 test packets 8mtr --report --report-cycles 10 google.com 9 10# MTR to an IP 11mtr --report 8.8.8.8
Opções avançadas
Bash1# Specify the number of packets to send 2mtr --report --report-cycles 50 google.com 3 4# Use TCP instead of ICMP 5mtr --tcp --port 80 google.com 6 7# Use UDP 8mtr --udp --port 53 8.8.8.8 9 10# Don't resolve DNS names 11mtr --no-dns google.com 12 13# Interval between packets (in seconds) 14mtr --interval 2 google.com 15 16# Packet size (in bytes) 17mtr --psize 64 google.com
Modo interativo MTR
Quando lança mtr sem a opção --report, entra em modo interativo:
- d : Mostrar/ocultar estatísticas detalhadas
- n : Ativar/desativar modo DNS (resolução de nomes)
- r : Repor estatísticas
- s : Alterar tamanho dos pacotes
- j : Alterar intervalo entre pacotes
- q : Sair do MTR
📊 Interpretar resultados
Latência normal
- < 50 ms : Excelente, rede local ou muito próxima
- 50-100 ms : Boa, ligação regional
- 100-200 ms : Aceitável, ligação intercontinental
- > 200 ms : Elevada, pode causar problemas
Perda de pacotes
- 0% : Perfeita
- < 1% : Normal para uma ligação Internet
- 1-5% : Aceitável mas pode causar problemas
- > 5% : Problemática, investigação necessária
Significado dos asteriscos (*)
No traceroute, um * significa:
- Um único * em vez de um tempo : O router não respondeu a esse pacote específico
- Três * consecutivos : O router não respondeu de todo (timeout ou filtro de firewall)
🎯 Casos de uso
Diagnosticar latência elevada
Bash1# Test to Google DNS 2mtr --report --report-cycles 30 8.8.8.8 3 4# Test to Cloudflare DNS 5mtr --report --report-cycles 30 1.1.1.1 6 7# Identify the problematic hop 8mtr --report --report-cycles 50 your-domain.com
Diagnosticar perda de pacotes
Bash1# Test with TCP to bypass ICMP filters 2mtr --tcp --port 443 --report --report-cycles 50 google.com 3 4# Test to a specific server 5mtr --report --report-cycles 100 your-server.com
Teste do seu VPS para a sua localização
Bash1# Test to your public IP address 2# Get your public IP first 3curl ifconfig.me 4 5# Then test from your VPS 6mtr --report --report-cycles 30 YOUR_PUBLIC_IP
🔍 Resolução de problemas comuns
Problema: Latência elevada num salto específico
Se vir latência elevada num salto intermédio:
Bash# Test with different protocols mtr --tcp --port 443 --report google.com mtr --udp --port 53 --report 8.8.8.8 mtr --report google.com
Importante: Latência elevada num salto intermédio pode ser normal se esse router não responder rapidamente a pedidos de diagnóstico, mas a latência final permanecer boa.
Problema: Perda de pacotes significativa
Se vir perda de pacotes elevada:
Bash1# Test with more packets to confirm 2mtr --report --report-cycles 100 destination.com 3 4# Test with TCP if ICMP is filtered 5mtr --tcp --port 80 --report --report-cycles 50 destination.com
Aviso: Se a perda de pacotes aparecer em todos os saltos, o problema provavelmente está no seu VPS ou na sua ligação local. Se aparecer apenas num salto específico, o problema está na rede entre o VPS e o destino.
Problema: Timeouts repetidos
Bash1# Increase timeout 2mtr --timeout 10 --report destination.com 3 4# Test with different protocols 5mtr --tcp --port 443 --timeout 10 --report destination.com
📝 Comandos úteis
Script de diagnóstico completo
Crie um script para testar vários destinos:
Bash1#!/bin/bash 2echo "=== MTR Test to Google DNS ===" 3mtr --report --report-cycles 30 8.8.8.8 4 5echo -e "\n=== MTR Test to Cloudflare DNS ===" 6mtr --report --report-cycles 30 1.1.1.1 7 8echo -e "\n=== MTR Test to your domain ===" 9mtr --report --report-cycles 30 your-domain.com
Guardar resultados
Bash1# Save report to a file 2mtr --report --report-cycles 30 google.com > mtr-report-$(date +%Y%m%d).txt 3 4# With CSV format 5mtr --report --report-cycles 30 --csv google.com > mtr-report.csv
✅ Boas práticas
- Use MTR em vez de traceroute : O MTR fornece estatísticas mais completas
- Teste vários destinos : Compare resultados com diferentes servidores
- Execute vários testes : As redes podem variar; execute testes em momentos diferentes
- Use TCP se ICMP for filtrado : Alguns routers filtram ICMP mas não TCP
- Interprete os resultados corretamente : Latência elevada num salto intermédio nem sempre é um problema se a latência final for boa
🆘 Resolução de problemas
O MTR não é exibido corretamente
Bash1# If MTR doesn't work in interactive mode, use report mode 2mtr --report destination.com 3 4# Check MTR version 5mtr --version
Erro "mtr: command not found"
Bash1# Reinstall MTR 2sudo apt update 3sudo apt install mtr-tiny -y 4 5# Or install the full version 6sudo apt install mtr -y
Todos os resultados mostram asteriscos
Se todos os saltos mostram *, pode significar:
Bash1# Your firewall is blocking ICMP 2# Test with TCP instead 3mtr --tcp --port 443 --report destination.com 4 5# Check firewall rules 6sudo ufw status 7sudo iptables -L
📚 Recursos adicionais
❓ Perguntas frequentes
P: Qual é a diferença entre Traceroute e MTR?
R: O Traceroute envia alguns pacotes e apresenta resultados. O MTR envia pacotes continuamente e calcula estatísticas em tempo real, o que é mais útil para diagnóstico.
P: Porque é que alguns saltos mostram asteriscos?
R: Significa que o router não respondeu. Pode dever-se a um filtro de firewall, configuração do router ou simplesmente que o router não responde a pedidos de diagnóstico.
P: Devo preocupar-me com latência elevada num salto intermédio?
R: Nem sempre. Se a latência final até ao destino for boa, latência elevada num salto intermédio pode ser normal. É a latência final que realmente importa.
P: Como interpreto a perda de pacotes no MTR?
R: Perda de pacotes < 1% é normal. Entre 1-5%, é aceitável mas pode causar problemas. Acima de 5%, é problemática e requer investigação.