Linux Windows

Linux: Comando Traceroute

Publicado

em

O traceroute é uma excelente ferramenta para rastrear as rotas que faz um pacote até que chegue em um destino.

A ferramenta traceroute tenta rastrear a rota que um pacote IP seguiria para algum host da Internet, iniciando pacotes de análise com um pequeno ttl (tempo de vida) e, em seguida, ouvindo uma resposta de “tempo excedido” do ICMP de um gateway. 

Ele inicia suas análises com um ttl de um e aumenta isso em um até obter uma “porta inacessível” (ou redefinição de TCP ) do ICMP , o que significa que chegamos ao “host” ou atingimos um máximo (o padrão é 30 saltos)) Três sondas (por padrão) são enviadas em cada configuração ttl e uma linha é impressa mostrando o ttl, o endereço do gateway e o tempo de ida e volta de cada sonda. 

O endereço pode ser seguido por informações adicionais quando solicitado. Se as respostas da sonda vierem de diferentes gateways, o endereço de cada sistema respondente será impresso. Se não houver resposta dentro de 5,0 segundos (padrão), um ” * ” (asterisco) será impresso para essa sonda.

Devido ao uso generalizado de firewalls muitas das vezes no ambiente de rede moderno que temos , os métodos tradicionais do proprio traceroute nem sempre são aplicáveis.

Esses firewalls filtram as portas UDP “improváveis” ou mesmo ecos de ICMP. Para resolver isso, alguns métodos adicionais de rastreamento são implementados (incluindo o tcp); Esses métodos tentam usar um protocolo específico e uma porta de origem / destino, para ignorar os firewalls (para serem vistos pelos firewalls apenas como um início do tipo permitido de uma sessão de rede).

A Sintaxe do Comando

Opções do Comando

–SocorroExiba uma mensagem de ajuda e saia.
-4 , -6Forçar explicitamente o rastreamento IPv4 ou IPv6 . Por padrão, o programa tentará resolver o nome fornecido e escolherá o protocolo apropriado automaticamente. Se a resolução de um nome de host retornar endereços IPv4 e IPv6, o traceroute usará o IPv4.
-EUUse o ICMP ECHO para análises.
-TUse TCP SYN para análises.
-dHabilite a depuração no nível do soquete (se o kernel suportar).
-FNão fragmente pacotes de análise. (Para o IPv4, também define o bit DF, que informa aos roteadores intermediários que não devem se fragmentar remotamente também).Variando o tamanho do pacote de análise pelo parâmetro da linha de comando packet_len , você pode obter manualmente informações sobre o MTU de saltos de rede individuais. A opção –mtu (veja abaixo) tenta fazer isso automaticamente.Observe que os recursos não fragmentados (como -F ou –mtu ) funcionam corretamente desde o kernel Linux 2.6.22 apenas. Antes dessa versão, o IPv6 era sempre fragmentado, o IPv4 podia usar apenas o mtu final descoberto (a partir do cache de rota ), que pode ser menor que o mtu real de um dispositivo.
-f first_ttlEspecifica com qual TTL iniciar. O padrão é 1.
-g gatewayDiz ao rastreador para adicionar uma opção de roteamento de origem IP ao pacote de saída que informa à rede para rotear o pacote através do gateway especificado (a maioria dos roteadores desativou o roteamento de origem por motivos de segurança). Em geral, a especificação de vários gateways é permitida (como uma lista separada por vírgula). Para IPv6, a forma de num addr addr … é permitida, onde num é um tipo de cabeçalho de rota (o padrão é o tipo 2). (Nota: o cabeçalho da rota do tipo 0 agora está obsoleto, de acordo com a rfc 5095).
interface -iEspecifica a interface através da qual o traceroute deve enviar pacotes. Por padrão, a interface é selecionada de acordo com a tabela de roteamento.
-m max_ttlEspecifica o número máximo de saltos (valor máximo de tempo de vida útil) que o traceroute analisará. O padrão é 30.
-N squeriesEspecifica o número de pacotes de análise enviados simultaneamente. O envio simultâneo de várias sondas pode acelerar consideravelmente o traceroute . O valor padrão é 16 . Observe que alguns roteadores e hosts podem usar a otimização da taxa ICMP. Em tal situação, especificar um número muito grande pode levar à perda de algumas respostas.
-nNão tente mapear endereços IP para nomes de host ao exibi-los.
porta -pPara o rastreamento UDP, especifica o traceroute da porta de destino que será usado (o número da porta de destino será incrementado por cada análise). Para rastreamento de ICMP, especifica o valor inicial da sequência de ICMP (incrementado por cada análise também). Para TCP e outros, especifica apenas a porta de destino (constante) a ser conectada. Ao usar o wrapper tcptraceroute , -p especifica a porta de origem.
-t tosPara IPv4, defina o valor do Tipo de serviço (TOS) e Precedência. Os valores úteis são 16 (baixo atraso) e 8 (alto rendimento). Observe que, para usar alguns valores de precedência do TOS, você precisa ser superusuário . Para IPv6, defina o valor do Controle de Tráfego.
-l flow_labelUse o flow_label especificado para pacotes IPv6.
-w waittimeDefina o tempo (em segundos) para aguardar uma resposta a uma análise (o padrão é 5.0 ).
-q nqueriesDefine o número de pacotes de análise por salto. O padrão é 3 .
-rIgnore as tabelas de roteamento normais e envie diretamente para um host em uma rede conectada. Se o host não estiver em uma rede conectada diretamente, um erro será retornado. Esta opção pode ser usada para executar ping em um host local por meio de uma interface que não possui rota.
-s source_addrEscolhe um endereço de origem alternativo. Observe que você deve selecionar o endereço de uma das interfaces. Por padrão, o endereço da interface de saída é usado.
-z sendwaitIntervalo de tempo mínimo entre análises (padrão 0). Se o valor for maior que 10, ele especificará um número em milissegundos , caso contrário, será um número de segundos ( valores de ponto flutuante também são permitidos). Útil quando alguns roteadores usam limite de taxa para mensagens ICMP.
-eMostrar extensões ICMP. A forma geral é CLASS / TYPE: seguida por um dump hexadecimal . Os dados MPLS (Multiprotocol Label Switching) são mostrados analisados , em uma forma: MPLS: L = rótulo , E = exp_use , S = stack_bottom , T = TTL (com quaisquer outros objetos separados por uma barra (” / “)).
-UMAExecute pesquisas de caminho AS nos registros de roteamento e imprima os resultados diretamente após os endereços correspondentes.
-VImprima as informações da versão e saia.

As seguintes opções destinam-se a um uso avançado (outros métodos de rastreamento, etc.):

–sport = portaEscolhe a porta de origem a ser usada. Implica -N 1 . Normalmente, as portas de origem (se aplicável) são escolhidas pelo sistema.
–fwmark = marcaDefina a marca de firewall para pacotes de saída (desde o kernel do Linux 2.6.25).
Método -MUse o método especificado para operações de traceroute. O método udp tradicional padrão é chamado padrão , e icmp ( -I ) e tcp ( -T ) têm os nomes icmp e tcp , respectivamente. Opções específicas do método podem ser passadas por -O . A maioria dos métodos possui atalhos simples ( -I significa -M icmp , etc).
-O opçãoEspecifica alguma opção específica do método. Várias opções são separadas por vírgula (ou use várias especificações -O na linha de comando). Cada método pode ter suas próprias opções específicas, ou muitos nem sequer as têm. Para imprimir informações sobre as opções disponíveis, use -O ajuda.
-VOCÊUse o UDP para uma porta de destino específica para rastreamento de rastreamento (em vez de aumentar a porta por cada análise). A porta padrão é 53 (dns).
-ULUse UDPLITE para rastreamento (a porta padrão é 53).
-DUse Solicitações DCCP para análises.
Protocolo -PUse pacote bruto do protocolo especificado para rastreamento. O protocolo padrão é 253 , conforme rfc3692.
–mtuDescubra o MTU ao longo do caminho que está sendo rastreado. Implica -F -N 1 . O novo mtu é impresso uma vez na forma de F = NUM na primeira sonda de um salto que exige que o mtu seja alcançado. (Na verdade, a mensagem icmp correspondente “frag needed” normalmente é enviada pelo salto anterior).Observe que alguns roteadores podem armazenar em cache uma vez as informações vistas em uma fragmentação. Assim, você pode receber o mtu final de um salto mais próximo. Tente especificar um número incomum de to -t , isso pode ajudar em uma tentativa (então também pode ser armazenado em cache lá). Veja a opção -F para mais informações.
–de voltaImprima o número de saltos para trás quando parecer diferente com a direção para frente. Esse número é calculado na suposição de que os saltos remotos enviam pacotes de resposta com ttl inicial definido como 64 , 128 ou 255 (o que é uma prática comum). É impresso como um valor negativo na forma de ‘ – NUM ‘.

Para agilizar , normalmente várias sondas são enviadas simultaneamente. A desvantagem disso é que isso cria uma “tempestade de pacotes” na rede loacal e até a de destino, especialmente na direção da resposta. Os roteadores podem limitar a taxa de respostas icmp, e algumas respostas podem ser perdidas. Para evitar isso, diminua o número de análises simultâneas ou defina-o como 1 (como na implementação inicial do traceroute ), ou seja, -N 1

O host final (alvo) pode eliminar algumas das análises simultâneas e pode até responder apenas as mais recentes. Isso pode levar a lúpulos extras “parecidos com expirados” perto do salto final. O traceroute usa um algoritmo inteligente para detectar automaticamente essa situação, mas se não puder ajudar no seu caso, basta usar -N 1 .

Para uma estabilidade ainda maior, você pode retardar o trabalho do programa com a opção -z . Por exemplo, use -z 0,5 para uma pausa de meio segundo entre as análises.

Se alguns saltos não reportarem nada para todos os métodos, a última chance de obter algo é usar o comando ping com a opção -R (IPv4 e apenas para os 8 saltos mais próximos).

Exemplos Práticos

Vamos rastrear uma rota e gerar uma sequência de saltos a té esse destino, o destino então será o clubedarede.com.

netstat – Imprime informações sobre conexões de rede, tabelas de roteamento, estatísticas de interface, conexões mascaradas e associações multicast.
ping – Envia pacotes do tipo ICMP ECHO_REQUEST a um determinado host na rede local ou fora dela.

Gostou? Curte e compartilha com geral!

EM ALTA

Sair da versão mobile