Guia Completo do Comando traceroute no Linux

Introdução ao Rastreamento de Rotas

O comando traceroute é uma ferramenta de diagnóstico de rede projetada para mapear o percurso que um pacote de dados percorre da origem até um host de destino. O seu funcionamento baseia-se na manipulação do campo TTL (Time To Live) do protocolo IP. Ao enviar pacotes com valores de TTL incrementalmente baixos, a ferramenta provoca a expiração do tempo de vida do pacote nos roteadores intermediários (gateways), forçando-os a retornar mensagens de erro ICMP TIME_EXCEEDED. Dessa forma, é possível identificar o endereço de cada salto (hop) no caminho.

Para redes IPv6, a funcionalidade é idêntica e pode ser invocada através do comando traceroute6 ou simplesmente utilizando o argumento -6. O único argumento obrigatório é o nome do host ou o endereço IP de destino. Opcionalmente, o usuário pode especificar o tamanho total do pacote de sonda (o padrão é 60 bytes para IPv4 e 80 para IPv6), embora alguns sistemas possam ignorar ou ajustar esse valor para respeitar os requisitos mínimos da MTU.

Por padrão, o processo inicia com um TTL de 1 e incrementa este valor em 1 a cada novo conjunto de sondas. O ciclo continua até que uma resposta ICMP "Port Unreachable" (para UDP) ou um "TCP Reset" (para TCP) seja recebida, indicando que o destino final foi alcançado, ou até que o limite máximo de saltos (padrão: 30) seja atingido.

Em ambientes modernos, o uso extensivo de firewalls pode bloquear os datagramas UDP tradicionais utilizados pelo traceroute, pois estes frequentemente utilizam portas altas não padronizadas. Para contornar isso, o comando suporta métodos alternativos, como o uso de pacotes ICMP ECHO ou TCP SYN (técnica de semi-abertura), que são frequentemente permitidos através de filtros de segurança que consideram essas conexões como tráfego legítimo.

Instalação e Sintaxe

Em distribuições Linux baseadas em RPM, como CentOS ou Red Hat, a instalação pode ser realizada facilmente através do gerenciador de pacotes:

sudo yum install traceroute -y

A estrutura básica da execução do comando segue o formato abaixo:

traceroute [opções] [nome_do_host ou IP] [tamanho_do_pacote]

Principais Parâmetros de Configuração

A ferramenta oferece uma série de flags para ajustar o comportamento da sondagem e a saída de dados:

  • -d: Ativa a depuração no nível de Socket (SO_DEBUG).
  • -f <valor_ttl>: Define o valer inicial do TTL para o primeiro pacote.
  • -F: Define o bit "Don't Fragment" (não fragmentar) no pacote IP.
  • -g <gateway>: Especifica um gateway de roteamento de origem (suporta até 8 gateways).
  • -i <interface>: Define qual interface de rede será usada para enviar os pacotes.
  • -I: Utiliza pacotes ICMP ECHO em vez de datagramas UDP para a sondagem.
  • -m <valor_ttl>: Define o número máximo de saltos (TTL) que o traceroute tentará alcançar.
  • -n: Exibe apenas os endereços IP numéricos, evitando a resolução de nomes DNS.
  • -p <porta>: Define a porta de destino a ser utilizada (o padrão para UDP é 33434).
  • -r: Ignora a tabela de roteamento padrão, enviando pacotes diretamente para o host conectado na rede local.
  • -s <endereço>: Define o endereço IP de origem para os pacotes enviados.
  • -t <tos>: Define o valor do campo TOS (Type of Service) no pacote.
  • -v: Modo detalhado (verbose), exibe mais informações sobre o processamento.
  • -w <segundos>: Define o tempo de espera (em segundos) por uma resposta antes de considerar o tempo limite esgotado.
  • -x: Habilita ou desabilita a verificação de integridade dos pacotes.

Interpretação da Saída e Diagnósticos

Ao executar o comando, o terminal exibirá uma lista contendo o número do salto, o andereço do roteador e o tempo de resposta (RTT) para três sondas enviadas. O exemplo abaixo ilustra uma saída típica:

$ traceroute 192.168.10.25
traceroute para 192.168.10.25 (192.168.10.25), 30 saltos máx, 60 byte pacotes
 1  * * *
 2  10.0.0.1 (10.0.0.1)  0.420 ms  10.0.0.2 (10.0.0.2)  0.435 ms  0.410 ms
 3  172.16.0.1 (172.16.0.1)  0.550 ms  0.560 ms  172.16.0.5 (172.16.0.5)  0.530 ms
 4  192.168.10.25 (192.168.10.25)  0.890 ms  0.915 ms  0.880 ms

Análise dos Resultados:

  1. Sequência de Saltos: Cada linha representa um "hop" ou roteador entre a origem e o destino. O número à esquerda indica a ordem.
  2. Tempos de Resposta: Para cada salto, três valores de tempo em milissegundos são exibidos, correspondendo às três sondas enviadas.
  3. Respostas Divergentes: Se as respostas vierem de interfaces diferentes (ex: balanceamento de carga), os endereços IP de cada rota serão listados separadamente.
  4. Asteriscos (*): Aparecem quando não há resposta dentro do tempo limite (padrão de 5 segundos). Isso geralmente indica que um firewall está filtrando pacotes ICMP ou que o roteador está configurado para não responder a essas requisições.
  5. Códigos de Erro ICMP: Após o tempo de viagem, códigos especiais podem aparecer para indicar falhas:
    • !H, !N, !P: Host, Rede ou Protocolo inalcançável.
    • !S: Falha na rota de origem.
    • !F: Necessidade de fragmentação.
    • !X: Comunicação administrativamente priobida (bloqueio por firewall/ACL).
    • !V: Conflito de prioridade de host.
    • !C: Cortesia de prioridade efetiva.

Publicado em 8-28 21:13