Como diagnosticar problemas de rede no Linux com Traceroute

Como diagnosticar problemas de rede no Linux com Traceroute
Traceroute Linux em destaque

Traceroute é um utilitário de rede simples que pode rastrear a rota que um pacote de Internet percorre da origem até o host de destino. Este artigo mostrará como você pode usar o Traceroute para verificar a integridade da rede do Linux e diagnosticar problemas emergentes.

Como funciona o Traceroute?

Traceroute funciona enviando pacotes UDP com comprimentos TTL curtos para cada gateway da Internet ao longo do caminho para um host remoto. Esses comprimentos curtos de TTL forçam esses gateways a relatar uma resposta ICMP “TIME_EXCEEDED” junto com o endereço IP de sua interface.

Esses dois fatores combinados permitem que o traceroute crie uma lista detalhada de máquinas pelas quais seu pacote passará ao se conectar a um servidor externo. Por exemplo, executar um traceroute para “google.com” na minha rede listará entre 9 a 10 gateways antes de chegar aos servidores do Google.

Um terminal mostrando um traceroute básico para google.com.

Quais problemas de rede o Traceroute pode corrigir?

Traceroute é apenas uma ferramenta de investigação de rede e não otimiza nem corrige nenhum problema pendente em sua rede. Traceroute só pode descrever como as redes e os pacotes que trafegam nelas se comportam.

Apesar disso, ainda é uma ferramenta importante para diagnosticar potenciais problemas de rede. Um bom exemplo é quando um gateway local falha ao encaminhar um pacote para o próximo salto. O Traceroute pode resolver isso destacando qualquer roteador dentro da sua rede principal que não envie uma resposta “TIME_EXCEEDED”.

Um terminal mostrando um traceroute básico onde os gateways falham constantemente em responder ao programa.

Além disso, você também pode usar o traceroute para verificar problemas de latência entre hosts. Isso pode ser útil se você quiser verificar se sua rede local precisa de uma VPN para garantir baixa latência consistente ao se conectar a uma máquina remota.

Usando Traceroute no Linux

Abra um novo terminal e digite traceroute seguido do endereço da máquina à qual você deseja que sua máquina se conecte. Pode ser um nome de domínio ou um endereço IP. Por exemplo:

Pressione Enter para começar a mapear o caminho para seu host remoto.

Um terminal mostrando um traceroute básico para um pequeno VPS.

Envio de pacotes com TTL personalizado no Traceroute

Embora o uso do traceroute por si só seja suficiente para o uso básico, você também pode ajustar o funcionamento do programa usando sinalizadores. Isso pode ser útil especialmente se você estiver fazendo uma triagem em sua rede.

Um dos ajustes mais comuns no traceroute é alterar a quantidade de pacotes que ele envia para um gateway. Para fazer isso, use o sinalizador -q seguido da quantidade de pacotes que você deseja enviar por solicitação:

Você também pode usar o sinalizador -N seguido de “1” para desabilitar explicitamente solicitações simultâneas de pacotes. Isso é útil se você tiver gateways que limitam a taxa de pacotes UDP com TTL curto.

Um terminal mostrando um traceroute com pacotes simultâneos desabilitados.

Por último, você também pode modificar o valor TTL padrão para traceroute. Para fazer isso, adicione o sinalizador -f seguido do TTL que você deseja para seu primeiro pacote de teste.

Um terminal mostrando um traceroute onde o programa ignora os dois primeiros gateways.

Alterando o protocolo Traceroute no Linux

Por padrão, o traceroute no Linux usa UDP para enviar pacotes de investigação para gateways de rede. Isso pode ser um problema se você estiver testando um gateway que bloqueia ativamente pacotes de traceroute.

Para corrigir isso, você pode usar o sinalizador -T para executar o traceroute usando pacotes TCP SYN simples.

Um terminal mostrando um traceroute onde o programa usa o pacote TCP SYN em vez de UDP.

Por outro lado, você também pode forçar o traceroute a usar um pacote ICMP ECHO se o gateway de destino restringir apenas o UDP:

Traceroute também oferece suporte a interfaces de rede personalizadas. É aqui que o traceroute usará uma placa de rede diferente em sua máquina para investigar o caminho de um pacote.

Para fazer isso, execute o programa com o sinalizador -i seguido do nome do dispositivo da sua interface.

Além disso, você pode usar o sinalizador -p para especificar o número da porta inicial que o traceroute usará para sondagem UDP:

Por último, o sinalizador -p também muda seu comportamento dependendo do protocolo que você está usando. Emparelhar com -I definirá o valor -p como o número de sequência ICMP inicial em vez da porta de destino.

Um terminal mostrando um traceroute usando ICMP ECHO com um número de sequência ICMP personalizado.

Aprender a usar o traceroute é apenas o primeiro passo para entender como os computadores se comunicam entre si em uma rede. Saiba mais sobre redes de computadores analisando o conteúdo de um pacote TCP usando tcpdump.

Enquanto isso, você também pode aprender mais sobre as camadas OSI superiores, como DNS, usando a ferramenta dig no Linux.

Todas as alterações e capturas de tela de Ramces Red.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *