Comando tracepath: verificar saltos e MTU do caminho no lugar do traceroute

Ambiente de testeFamília RHELAlmaLinux 9.8iputils 20210202conta rootDebian 12 · traceroute 2.1.2 conta comum
Comandos de redetracepathLocalização/usr/bin/tracepath

Em um servidor Linux, o comando tracepath mostra sem privilégios de root o caminho (saltos) que os pacotes percorrem até um destino e a MTU do caminho. Em um servidor AlmaLinux 9 sem o traceroute instalado, limitamos o número de saltos a 10 e verificamos o caminho até example.com: até o quarto salto apareceram os tempos de resposta e uma MTU de caminho de 1500, e os seis saltos seguintes não responderam.

A saída abaixo foi executada em um servidor AlmaLinux 9.8 (conta root), e a versão do traceroute e o estado do pacote foram verificados em um servidor Debian 12 (conta comum). Os endereços IPv6 do primeiro salto e dos roteadores intermediários foram trocados por endereços de exemplo para documentação, e os tempos de resposta e os valores de pmtu foram mantidos como estavam.

1️⃣ Como usar o comando tracepath

  • ↪️ Verificar os saltos e a MTU do caminho até o destino

O tracepath recebe um nome ou endereço IP de destino, envia pacotes UDP e mostra os saltos que respondem, uma linha por salto na ordem do TTL. O número máximo de saltos padrão é 30 e pode ser alterado com -m.

Para example.com, adicionamos -m 10 para verificar só até o décimo salto.

tracepath -n -m 10 example.com
 1?: [LOCALHOST]                        0.006ms pmtu 9001
 1:  fe80::1%eth0                                          0.077ms pmtu 1500
 1:  2001:db8:a::5b                                        2.627ms asymm  8 
 2:  2001:db8:a::52                                        1.473ms asymm 12 
 3:  2001:db8:b::1e                                       19.653ms asymm  9 
 4:  2001:db8:c::                                          3.642ms asymm 11 
 5:  no reply
 6:  no reply
 7:  no reply
 8:  no reply
 9:  no reply
10:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500 

Este servidor enviou os pacotes para o endereço IPv6 de example.com, e até o quarto salto apareceram tempos de resposta. A partir do quinto salto seguiu no reply, então a linha reached, que indica que o destino foi alcançado em dez saltos, não apareceu, e a execução levou cerca de 18 segundos para terminar.

Ao executar para o mesmo destino sem -m, o comando não terminou em 30 segundos. Em caminhos com muitos saltos que não respondem, use -m para reduzir o número de saltos verificados.

A versão do tracepath instalada é verificada com -V; o tracepath deste servidor era iputils 20210202.

tracepath -V
tracepath from iputils 20210202

2️⃣ Como ler a saída do tracepath

  • ↪️ Número do salto, pmtu, asymm, reached

Cada linha da saída mostra, nesta ordem, o número do salto, o endereço que respondeu e o tempo de ida e volta. Onde a MTU do caminho mudou aparece pmtu, e quando a ida e a volta têm números de saltos diferentes aparece asymm. Veja o que verificar em cada linha.

SaídaSignificado
1?:Campo do número do salto — um ? aparece no número estimado quando a resposta não trouxe o TTL
[LOCALHOST]Linha do próprio servidor, antes de o pacote sair para a rede
0.077msTempo de ida e volta até esse salto
pmtu 1500MTU do caminho (bytes) alterada nesse ponto — aparece só quando muda
asymm 8Diferença de saltos entre a ida e a volta — o manual oficial diz que não é um valor confiável
no replySalto que não respondeu ao pacote enviado com esse TTL
reachedLinha em que o destino foi alcançado
Too many hopsPara depois de verificar até o número de saltos definido com -m
Resume: pmtu … hops … back …MTU do caminho inteiro, saltos até o destino e estimativa de saltos na volta

Na saída de example.com, a pmtu da primeira linha [LOCALHOST] era 9001 e mudou para 1500 no primeiro salto. A linha de TTL 1 aparecer duas vezes mudando só o endereço também é o formato do exemplo do manual oficial. O manual explica que, se o primeiro pacote for recusado no primeiro salto por causa da MTU do caminho, a mesma linha de TTL aparece mais uma vez.

Ao alcançar o destino, reached aparece no fim da linha, e a última linha Resume mostra o número de saltos até o destino. Ao enviar para 127.0.0.1, reached apareceu em um único salto, e a linha Resume foi [pmtu 65535 hops 1 back 1].

tracepath -n 127.0.0.1
 1:  127.0.0.1                                             0.047ms reached
     Resume: pmtu 65535 hops 1 back 1 

Um caminho que termina em Too many hops sem reached não recebeu resposta do destino dentro dos saltos definidos com -m. O caminho de example.com também não teve reached em dez saltos, então na linha Resume ficou só pmtu, sem número de saltos.

3️⃣ Opções do tracepath

  • ↪️ -n, -b, -m e o tamanho do pacote -l

O tracepath tem só oito opções: -4, -6, -n, -b, -l, -m, -p e -V, e ao executá-lo sem destino essa lista aparece como mensagem de uso. Sem opções, ele resolve em nomes os endereços que respondem; ao enviar para localhost, apareceu localhost no campo do salto.

tracepath localhost
 1?: [LOCALHOST]                        0.003ms pmtu 65536
 1:  localhost                                             0.048ms reached
 1:  localhost                                             0.030ms reached
     Resume: pmtu 65536 hops 1 back 1 

[tracepath -n] mostra apenas endereços IP, sem resolver nomes. Ao adicionar -n para o mesmo localhost, o campo do salto mudou para o endereço IPv6 ::1, e o caminho de example.com executado com -n também mostrou só endereços nesse campo.

tracepath -n localhost
 1?: [LOCALHOST]                        0.005ms pmtu 65536
 1:  ::1                                                   0.039ms reached
 1:  ::1                                                   0.010ms reached
     Resume: pmtu 65536 hops 1 back 1 

-b mostra o nome e o endereço juntos. Ao adicionar -b para 127.0.0.1, o endereço apareceu entre parênteses depois do nome: [localhost (127.0.0.1)].

tracepath -b 127.0.0.1
 1:  localhost (127.0.0.1)                                 0.050ms reached
     Resume: pmtu 65535 hops 1 back 1 

-m é a opção que define o número máximo de saltos verificados e aceitou valores de 0 a 255. Com -m 0 apareceram direto só as linhas Too many hops e Resume, sem linhas de salto, e 256 foi recusado com [out of range].

tracepath -m 0 127.0.0.1
     Too many hops: pmtu 65535
     Resume: pmtu 65535 

-l é o tamanho do primeiro pacote enviado; o padrão é 65535 bytes no IPv4 e 128000 bytes no IPv6. Ao adicionar -l 1500 para 127.0.0.1, a pmtu da linha Resume mudou de 65535 para 1500.

tracepath -l 1500 -n 127.0.0.1
 1:  127.0.0.1                                             0.028ms reached
     Resume: pmtu 1500 hops 1 back 1 

-p é a opção que define a primeira porta UDP de destino. O resultado de adicionar -p 33434 para 127.0.0.1 foi o mesmo de sem ela.

OpçãoCopiarDescrição
-nMostra só endereços IP, sem resolver nomes
-bMostra o nome e o endereço juntos
-msaltosDefine o número máximo de saltos verificados, padrão 30
-ltamanhoDefine o tamanho do primeiro pacote, padrão IPv4 65535, IPv6 128000
-VMostra a versão e sai
OpçãoCopiarDescrição
-4Envia só para endereços IPv4
-6Envia só para endereços IPv6
-pPortaDefine a primeira porta UDP de destino

4️⃣ Diferença entre tracepath e traceroute

  • ↪️ Instalação, permissões, pacotes enviados

Em servidores onde não é possível instalar o traceroute, o caminho é verificado com o tracepath em vez do traceroute. O servidor AlmaLinux 9.8 verificado não tinha o pacote traceroute, e o tracepath vem no pacote iputils, então rodou sem instalação à parte.

rpm -q traceroute
package traceroute is not installed

O servidor Debian 12 era o contrário: o traceroute 2.1.2 estava instalado, e o pacote iputils-tracepath, que contém o tracepath, não estava.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later
apt-cache policy iputils-tracepath
iputils-tracepath:
  Installed: (none)
  Candidate: 3:20221126-1+deb12u1

Como mostram esses dois servidores, os comandos disponíveis mudam conforme a distribuição, então primeiro verifique qual existe no servidor em que você está conectado. O tracepath não precisa de privilégios de root e pode ser executado por qualquer conta que consiga enviar pacotes UDP. O executável do tracepath no servidor AlmaLinux 9.8 também tinha permissões rwxr-xr-x, sem capacidades (capability) extras.

Itemtracepathtraceroute
Servidor AlmaLinux 9.8Vem no pacote iputils, roda na horaNão instalado
Servidor Debian 12Pacote iputils-tracepath não instaladotraceroute 2.1.2 instalado
Pacotes enviadosUDPUDP por padrão, -I para ICMP, -T para TCP
Saída por saltoUma linhaEnvia três vezes por padrão, três tempos (muda com -q)
Número de opçõesOito: -4 -6 -n -b -l -m -p -VMais de 20 só na primeira tela de --help

Se você precisa ver o caminho por ICMP ou TCP, ou enviar várias vezes por salto para comparar tempos, vai instalar e usar o comando traceroute. Em servidores onde instalar é difícil ou onde também é preciso ver a MTU do caminho, o tracepath é a escolha certa.

🔲 Simulador do comando tracepath

No simulador abaixo, você pode ver de novo o caminho de example.com mudando só o número de saltos, ou digitar -n, -b, -m e -l para localhost e 127.0.0.1 e comparar as diferenças.

Simulador do comando tracepathiputils 20210202
[root@server work]#
Funciona só no seu navegador e não envia pacotes reais. Use ↑↓ para trazer de volta os comandos anteriores.

🔢 FAQ & conteúdo recomendado

Não, o código de saída não mostra isso. Mesmo quando a execução para example.com com -m 10 terminou em Too many hops sem reached, o código de saída foi 0. Uma falha na resolução de nomes e um argumento inválido deram 1, e executar sem destino deu 255. O código de saída só distingue erros de execução; para saber se o destino foi alcançado, veja a linha reached na saída.

localhost foi enviado para o endereço IPv6 ::1, então a primeira linha [LOCALHOST] mostrou a MTU da interface de loopback, 65536, enquanto em 127.0.0.1, que é IPv4, apareceu como está o tamanho de pacote padrão do IPv4, 65535. A MTU da interface lo verificada com ip link também era 65536.

Com -4, o envio vai só para endereços IPv4. Ao adicionar -4 para localhost, reached apareceu em um único salto via IPv4 sem a linha [LOCALHOST]; ao contrário, ao adicionar -6 para 127.0.0.1, terminou com [Address family for hostname not supported].

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 4   +   4   =