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.
Bash# On Ubuntu/Debian sudo apt update sudo apt install mtr-tiny -y # For the full version with graphical interface (optional) sudo apt install mtr -y
Verificar a instalação
Bash# Verify that traceroute is installed traceroute --version # Verify that MTR is installed mtr --version
🛠️ Usar Traceroute
Comando básico
Bash# Traceroute to a destination traceroute google.com # Traceroute to an IP traceroute 8.8.8.8 # Limit the number of hops (default 30) traceroute -m 20 google.com # Specify timeout in seconds traceroute -w 5 google.com
Opções úteis
Bash# Use UDP (default) traceroute -U google.com # Use TCP (more reliable) traceroute -T google.com # Use ICMP (like ping) traceroute -I google.com # Don't resolve DNS names (faster) traceroute -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
Bash# MTR in interactive mode (recommended) mtr google.com # MTR with report (non-interactive) mtr --report google.com # MTR with 10 test packets mtr --report --report-cycles 10 google.com # MTR to an IP mtr --report 8.8.8.8
Opções avançadas
Bash# Specify the number of packets to send mtr --report --report-cycles 50 google.com # Use TCP instead of ICMP mtr --tcp --port 80 google.com # Use UDP mtr --udp --port 53 8.8.8.8 # Don't resolve DNS names mtr --no-dns google.com # Interval between packets (in seconds) mtr --interval 2 google.com # Packet size (in bytes) mtr --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
Bash# Test to Google DNS mtr --report --report-cycles 30 8.8.8.8 # Test to Cloudflare DNS mtr --report --report-cycles 30 1.1.1.1 # Identify the problematic hop mtr --report --report-cycles 50 your-domain.com
Diagnosticar perda de pacotes
Bash# Test with TCP to bypass ICMP filters mtr --tcp --port 443 --report --report-cycles 50 google.com # Test to a specific server mtr --report --report-cycles 100 your-server.com
Teste do seu VPS para a sua localização
Bash# Test to your public IP address # Get your public IP first curl ifconfig.me # Then test from your VPS mtr --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:
Bash# Test with more packets to confirm mtr --report --report-cycles 100 destination.com # Test with TCP if ICMP is filtered mtr --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
Bash# Increase timeout mtr --timeout 10 --report destination.com # Test with different protocols mtr --tcp --port 443 --timeout 10 --report destination.com
📝 Comandos úteis
Script de diagnóstico completo
Crie um script para testar vários destinos:
Bash#!/bin/bash echo "=== MTR Test to Google DNS ===" mtr --report --report-cycles 30 8.8.8.8 echo -e "\n=== MTR Test to Cloudflare DNS ===" mtr --report --report-cycles 30 1.1.1.1 echo -e "\n=== MTR Test to your domain ===" mtr --report --report-cycles 30 your-domain.com
Guardar resultados
Bash# Save report to a file mtr --report --report-cycles 30 google.com > mtr-report-$(date +%Y%m%d).txt # With CSV format mtr --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
Bash# If MTR doesn't work in interactive mode, use report mode mtr --report destination.com # Check MTR version mtr --version
Erro "mtr: command not found"
Bash# Reinstall MTR sudo apt update sudo apt install mtr-tiny -y # Or install the full version sudo apt install mtr -y
Todos os resultados mostram asteriscos
Se todos os saltos mostram *, pode significar:
Bash# Your firewall is blocking ICMP # Test with TCP instead mtr --tcp --port 443 --report destination.com # Check firewall rules sudo ufw status sudo 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.