Tutoriais - Nicbr - 2023
Tutoriais - Nicbr - 2023
Tutoriais - Nicbr - 2023
DE REDES
https://network.education/ [email protected]
INSTRUTOR:
ELIZANDRO
PACHECO
Profissional que atua exclusivamente no ramo de provedores regionais há mais de 21 anos.
Estudou Engenharia em Sistemas Digitais na Universidade Estadual do Rio Grande do Sul e possui
diversas certificações no ramo.
Nas raras horas vagas, se dedica aos carros e a programação, sempre buscando evoluir seus
conhecimentos.
Troubleshooting
Quando falamos em redes, talvez a dificuldade mais recorrente que vemos em nosso dia a dia é a
falta de entendimento acerca de procedimentos de troubleshooting aliados a falta de gestão de
gerência.
Não raramente redes inteiras ficam inacessíveis por descuidos com soluções simples, que por
muitas vezes, de tão simples, acabam sendo negligenciadas.
E é por isso, que neste tutorial traremos dicas e rotinas simples, mas extremamente importantes
para todos aqueles que administram redes.
Existem diversos tipos e códigos de mensagens que podem ser bastante úteis durante os
procedimentos de troubleshooting.
O ICMP
Conforme a própria RFC define: O Protocolo IP não foi projetado para ser absolutamente confiável,
e o propósito do ICMP é justamente fornecer "feedback" sobre alguns problemas que podem
acontecer no ambiente de comunicação.
O ICMP é humilde, ele não tem a intenção de tornar o IP confiável, deixando essa responsabilidade
para os demais protocolos que o utilizam.
O ICMP
É importante saber que dentro do ICMP existem mensagens de diversos tipos e esses tipos, por
sua vez, possuem códigos.
Lista completa:
https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-codes-0
Sniffing: Captura e Análise de Pacotes
Sniffing é a técnica de captura e análise de pacote que nos permite entender o que está
acontecendo "por dentro da rede".
Em geral, chamamos esse passo de "escovar bit", pois é um processo que faz uma imersão real em
tudo que é trafegado em uma rede.
https://tcpdump.org https://wireshark.org
Sniffing: Captura e Análise de Pacotes
Existem diversas formas de "sniffar" um ponto ou rede desejada, e essa técnica pode ser usada
para realizar troubleshooting em praticamente qualquer cenário.
Sniffer Local: Você pode realizar a análise de conexões diretamente do dispositivo onde você
instalou suas ferramentas. Ou ainda, gerar um arquivo com o dump das conexões que você filtrou e
então transferir o arquivo para análise em qualquer outro dispositivo ( muito utilizado em
servidores e roteadores ).
Sniffer Remoto: Existem diversas formas de você realizar análises de forma remota, até mesmo
em tempo real, um bom exemplo é do próprio RouterOS!
É muito comum, principalmente pro pessoal de N1, não ter clareza em como ele realmente
funciona ou então fazer interpretações erradas de seus resultados.
Em geral, o ping é utilizado para medir a latência entre um ponto e outro de uma rede, mas ele
pode te oferecer muito mais informações que isso…
Troubleshooting com ICMP
A primeira dica é: sempre utilize contagem de pacotes e nunca, absolutamente nunca, encerre o
comando com control + c.
Para ter proporções exatas, utilize números de pacotes que facilitem o cálculo…
Ao utilizar o control + c ou interromper o processo, você pode gerar valores não confiáveis.
Em geral, o parâmetro -c é o parâmetro que define a quantidade de pacotes a serem enviados nos
testes.
Troubleshooting com ICMP
Troubleshooting com ICMP
É importante saber que alguns dispositivos podem fazer rate-limit de pacotes icmp, então tenha
como base essa "perda" apenas como um norte, não acredite fielmente nele.
( Os gamers agradecem )
Troubleshooting com ICMP
O MTU ( Maximum transmission unit ) é o tamanho máximo que um quadro ou pacote pode ser
transmitido através de um link de dados.
Seja para o cliente final, ou até mesmo dentro do seu backhaul/backbone, sempre valide o MTU, e
use-o no máximo possível ( as cpus agradecem ).
O Throughput está diretamente ligado ao PPS ( Pacotes por Segundo ), quanto maiores os pacotes,
menor quantidade de pps… consequentemente maior Throughput.
Troubleshooting com ICMP
Para validar um caminho você deve utilizar o ping aumentando o tamanho do pacote e setando a
flag DF ( Don’t Fragment ), indicando para o dispositivo que ele deve enviar aquele pacote "sem
fragmentar".
Traceroute:
Comando que rastreia a rota que os pacotes IP seguem indo para um "host".
Muito utilizado para "descobrir" um caminho e até "medir perdas" nesse caminho, é útil em muitas
situações do dia a dia de um administrador de redes.
Mas, assim como o ping, é importante saber interpretar seus resultados e entender como ele
funciona.
TTL:
Quando um pacote de informações é criado e enviado pela internet, há o risco de que ele continue
a passar de um roteador para outro indefinidamente. Para mitigar essa possibilidade, os pacotes
são desenvolvidos com um prazo de validade chamado tempo de vida ou limite de salto. O TTL
também pode ser útil para determinar há quanto tempo um pacote está em circulação e permitir
que o remetente receba informações sobre o caminho percorrido por um pacote na internet.
Cada pacote tem um local no qual armazena um valor numérico que determina quanto tempo mais
ele deve continuar a se movimentar pela rede. A cada vez que um roteador recebe um pacote, ele
subtrai "um" da contagem do TTL e depois o transmite para o próximo local na rede. Se em um
determinado ponto a contagem do TTL for igual a zero depois da subtração, o roteador descartará
o pacote e enviará uma mensagem ICMP de volta ao host de origem.
Fonte: https://www.cloudflare.com/pt-br/learning/cdn/glossary/time-to-live-ttl/
Troubleshooting com ICMP
Voltando ao traceroute…
O comando traceroute tenta rastrear a rota que um pacote IP segue para um host, enviando os
pacotes de análise UDP com um ttl pequeno ( e incremental ).
Assim, quando o TTL estoura, ele recebe uma mensagem ICMP TIME_EXCEEDED.
Os pacotes que são chamados de "sondas" são enviados com destino à portas UDP que começam
em 33434 e são incrementadas uma a uma.
Se o destino tiver qualquer bloqueio para essas portas, o traceroute não obterá resposta, mas isso
não significa que o host está inacessível.
Você pode tentar outro conjunto de portas no comando ( o parâmetro varia de acordo com cada
sistema operacional ).
Quando você não obtiver respostas com o conjunto de portas padrão do traceroute você tem 2
alternativas…
Faça o teste:
traceroute nytimes.com
e depois
traceroute -I nyimes.com
Troubleshooting com ICMP
Bugs:
Há alguns bugs conhecidos, então atente-se a eles para não errar a interpretação.
Portanto, o traceroute é uma ótima ferramenta que nos auxilia na hora de troubleshootings, mas
em geral vemos análises equivocadas ou erros de interpretação dos resultados.
É importante ter esse conhecimento mais aprofundado para que você consiga identificar
problemas e "caminhos a seguir".
MTR:
GitHub: https://github.com/traviscross/mtr
A grande vantagem do MTR é que ele é sequencial, repete os testes por intervalos, facilitando a
visualização.
As combinações de possibilidades que o MTR oferece o torna uma das ferramentas mais
poderosas e produtivas no troubleshooting.
Troubleshooting com ICMP
MTR:
Mas não se preocupe, você pode selecionar a forma de "sondar" o caminho todo através de
parâmetros opcionais, tanto em TCP quanto UDP.
- Extensões mpls
- Resolução de AS do salto
- Possibilidade de definição de porta de destino
- Reports em diversos formatos ( json, xml, csv … )
Há muito o que se discutir em relação ao DNS, e também, muitas vezes, encontramos situações
onde o troubleshooting é equivocado, mas antes de entrarmos em detalhes precisamos começar
pelo começo:
NENHUM DNS EXTERNO A SUA REDE SERÁ MELHOR QUE UM DNS PRÓPRIO, DENTRO DELA.
Nota mental: A menos que você faça uma besteira MUITO grande.
Não, nem o do Google, nem o da CloudFlare, nem o OpenDNS e nem outro qualquer, fora da sua
rede, pode te oferecer maior segurança, desempenho e confiabilidade que seu próprio DNS.
Não se iluda.
Troubleshooting de DNS
Filtros de Captura:
Em geral, e quanto maior a banda do enlace e/ou interface que estamos sniffando, é praticamente
impossível realizar análises sem a utilização de filtros.
Algumas vezes é humanamente impossível fazer uma leitura em tempo real sem eles.
Tanto o wireshark quanto o tcpdump possuem um poderoso sistema de filtragem que torna nosso
trabalho mais "fácil".
https://wiki.wireshark.org/CaptureFilters
Troubleshooting de DNS
Filtros de Captura:
Os filtros podem ser dos mais simples ao mais complexo, incluindo ( inclusive ) encadeamento de
filtros. É importante estudar sobre eles.
Troubleshooting de DNS
Os filtros podem ser dos mais simples ao mais complexo, incluindo ( inclusive ) encadeamento de
filtros. É importante estudar sobre eles.
E muitos outros… uma busca rápida no google lhe traz muitas combinações, inclusive a
documentação oficial:
https://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSection.html
Troubleshooting de DNS
TCPDUMP:
Muitas vezes não temos, de forma rápida, como executar um sniffer em determinado enlace, mas
temos como utilizar o dispositivo final para realizar o mesmo procedimento.
Com o tcpdump você pode, tanto ver o tráfego em tempo real quanto gerar um arquivo para
análise posterior no wireshark.
Troubleshooting de DNS
Assim como no wireshark, você pode facilmente encontrar exemplos de filtragem. Eles também
permitem encadeamento.
Não raramente encontramos cenários onde a origem é dentro da rede e o servidor dns também
encontra-se dentro da rede, portanto alcançável via roteamento, JAMAIS use nat em direção ao
servidor.
E ainda que tenha exceção no firewall, se for CGNAT prefira exceção no PBR, não deixe esse
tráfego acessar sua caixa de CGNAT.
Troubleshooting de DNS
Não raramente encontramos cenários onde a origem é dentro da rede e o servidor dns também
encontra-se dentro da rede, portanto alcançável via roteamento, JAMAIS use nat em direção ao
servidor.
E ainda que tenha exceção no firewall, se for CGNAT prefira exceção no PBR, não deixe esse
tráfego acessar sua caixa de CGNAT.
Troubleshooting de DNS
Outro erro bastante comum é utilizar o ping para medir a qualidade de um DNS.
Esse procedimento até pode te dar um indicativo de velocidade até o IP do servidor, mas para
saber qual é o mais rápido você precisa se atentar a outros parâmetros, dentre eles o Query Time,
que pode ser obtido através do comando dig.
O Query Time é o resultado do tempo de envio e recebimento da resposta, ele não tem haver com a
latência.
E justamente por isso, pode acontecer de o servidor que tem uma latência mais alta, ter uma
resposta mais rápida.
Ou o servidor que tem latência melhor, ter uma resposta mais lenta.
E é por isso que você não deve levar em consideração apenas a latência para determinar se um
servidor DNS é melhor que outro.
Troubleshooting de DNS
Se você não especificar um dns no comando dig, ele utilizará o configurado no sistema. Mas,
mesmo sem alterar a configuração do dispositivo, você pode testar qualquer DNS recursivo
aberto.
Exemplo:
Determinado então o melhor DNS para sua rede, você certamente passará por situações onde o
cliente não consegue abrir determinado site.
E claro, que isso é genérico demais e pode estar ligado a diversos outros motivos, mas o DNS não
pode ser descartado…
Com o comando dig você obterá, dentre outras informações, o status da consulta:
Troubleshooting de DNS
Nem sempre apenas o código é suficiente… muitas vezes você terá de ir além.
Muitas vezes um servidor de DNS não consegue resolver um endereço por um problema de alcance
de roteamento que você ainda não identificou ou ainda por algum erro em servidores a frente do
seu ( inclusive o autoritativo do próprio domínio ).
Com a opção +trace o dig irá utilizar traçar todo o caminho fazendo as requisições de acordo com a
hierarquia.
Troubleshooting de DNS
E é justamente aqui, que você pode não ter alcance a algum servidor, por um problema de
roteamento ou outro problema qualquer.
Você ainda poderá descobrir em que "salto" ou qual servidor apresentou um problema, validando
todo o caminho.
Atente-se: Um recursivo não responder, ou retornar uma falha, não significa necessariamente que
o problema está nele.
Troubleshooting de DNS
Do lado servidor, o dnstop é uma delas. Com ela é possível fazer uma análise rápida sobre as
requisições que chegam no servidor e identificar anomalias rapidamente.
Recomendação de Leitura:
https://www.cyberciti.biz/faq/dnstop-monitor-bind-dns-server-dns-network-traffic-from-a-shell-prompt/
E o IPv6?
Já não é novidade que quem possui uma rede apenas IPv4 está no passado e possui uma rede
legada.
Em algumas versões você pode forçar e/ou escolher o protocolo desejado, como no caso do mtr…
Elizandro Pacheco
+55 51 99871-8111
@elizandropacheco