5 comandos básicos úteis para troubleshooting de redes
Na rotina profissional das diversas funções de T.I. que estão relacionadas diretamente ou não à infraestrutura, lidamos com uma série de problemas relacionados as redes. Seja desde um site ou aplicação fora do ar até a falta de comunicação entre dispositivos, esses "pequenos" inconvenientes podem se tornar uma dor de cabeça caso não sejam contornados e solucionados (principalmente se você lida com usuários).
Por isso, é sempre bom ter algumas cartas na manga para detectar, isolar e resolver problemas de maneira mais efetiva. A ideia aqui não é que você seja um analista de redes, mas que possa usar ferramentas simples para ajudar na solução ou para que você possa solucionar o problema. Muitas vezes o "feijão com arroz" nos salva bastante.
Para ajudar, reuni aqui alguns comandos básicos que são extremamente úteis no dia-a-dia:
1. Ping
O reizinho dos comandos, o ping permite testar a conectividade de rede entre dispositivos. Ele utiliza uma e_cho r_eques_t_ do protocolo ICMP, inserida em um datagrama IP, para testar essa conectividade.
Seja com um nome de domínio ou um endereço IP, o comando envia pacotes ICMP para o endereço IP do destino. Se o destino estiver acessível, serão mostradas respostas com os bytes, tempo de resposta e a medição do TTL (o tempo de vida do pacote dentro da rede). Além disso, ele informa os pacotes enviados, recebidos e perdidos.

Ping no Windows
Se o destino não estiver acessível, será mostrada na tela a mensagem "Host de destino inacessível."
Aqui estão alguns exemplos de uso do ping:
## Consulta básica do ping - com domínio de um site
ping google.com
## Consulta com IP (exemplo com DNS do Google)
ping 8.8.8.8
## No Windows: quantidade de pacotes enviados (no caso, para 6)
ping -n 6 google.com
## No Windows: tempo de espera da resposta (timeout)
ping -w 10 google.com
## Pings contínuos - sem interrupção
ping -t google.com
Para interromper o processo do ping, você deve usar o comando Ctrl+C.

Ping no Linux
Caso de uso:
- Você pode usar o ping para identificar se uma máquina ou dispositivo na rede local, como uma impressora ou notebook, por exemplo, está conectada e respondendo. Se "pingou", isso já oferece um bom ponto de partida.
2. Traceroute
Outro comando simples e bastante útil é o traceroute no Linux, ou tracert no Windows. Ele permite validar os "saltos" (hops) até o destino - ou seja, por cada roteador que o pacote passa para chegar ao seu destino.

Exemplos do comando:
### Traceroute
traceroute google.com
### Esconder os nomes de dispositivos na tela
traceroute -n google.com
### Especificar o número de saltos
traceroute -m 10 google.com
Em alguns casos, você pode não obter a resposta mesmo sabendo que o dispostivo final está ativo. Isso pode ocorrer por causa de regras de firewall ou outros bloqueios dos equipamentos que estão no caminho.
Casos de uso:
- Quando pessoas alegam lentidão ao acessar determinado site ou servidor, seja interno ou externo. Você pode usar o traceroute para identificar em qual trecho está ocorrendo uma alta latência ou perda de pacotes;
- Com os resultados, você pode demonstrar que os problemas de conexão não são sua culpa ou da empresa - principalmente se o serviço acessado está fora da rede interna. É o famoso "não foi possível resolver seu problema, mas podemos fazer com que ele não seja nosso problema" =)
3. MTR
O My Traceroute, ou MTR, é um comando que funciona como uma combinação do ping e do traceroute. Ele apresenta os saltos até o destino e outras informações como latência e perda de pacotes. Isso permite ter uma ideia do que ocorre em tempo real.

Com isso, o MTR possibilita identificar conexões ruins ou a perda de pacotes com mais clareza. No Linux, ele é executado via terminal. No Windows, usa-se uma aplicação chamada WinMTR, que pode ser baixada aqui.
Sintaxe do mtr no Linux:
## Uso padrão
mtr google.com
## Limitar para endereços IPv4
mtr -4 google.com
## Usar em modo relatório
mtr -r google.com
Pode acontecer de não obter a resposta pelo fato de existir algum firewall ou regra de segurança que não permite esse acesso. Isso pode aparecer como uma omissão no tempo de resposta também.
Casos de uso:
- Se você estiver experimentando latência ou desconexões ao jogar online ou usar um serviço na internet, pode usar o
mtrpara verificar a qualidade da conexão com o servidor do jogo ou serviço. - Em situações que poderia usar o ping e o traceroute junto, com objetivo de ter análises com mais detalhes de latência e perda de pacotes até chegar ao destino.
4. Nslookup
O nslookup permite consultas para servidores DNS. Com ele, é possível consultar qual IP responde por um domínio. Além disso, ele possibilita consultar um registro DNS (tipo A, MX, txt, entre outros) do domínio em questão.
## Consultar o IP de um domínio
nslookup google.com
## Consultar um registro DNS específico
nslookup -q=MX google.com
nslookup -q=A google.com
nslookup -q=ns google.com
nslookup -q=txt google.com
nslookup -type=mx google.com
## Pesquisa reversa
nslookup `<IP_do_servidor>`
## Consultar todos os registros
nslookup -type=any google.com
## Modo interativo - abre um prompt
nslookup
> google.com
> exit
5. Dig
Já o dig faz praticamente as mesmas funções do nslookup, mas fornece um relatório com mais detalhes.
## Retornar o registro A (IP)
dig google.com
## Retornar os registros MX, txt, e outros
dig google.com MX
dig google.com txt
dig google.com cname
dig google.com NS
dig google.com A
## Obter o máximo de informações
dig google.com any
## Respostas curtas
dig google.com +short
## Respostas detalhadas
dig google.com +noall +answer
## Pesquisa reversa
dig `<IP_do_servidor>`

Para utilizar o dig no Windows, é necessário instalar o BIND, o qual você pode encontrar aqui.
Caso de uso:
- Quando quiser saber 0 nome de domínio associado a um endereço IP, você pode usar a pesquisa reversa (resolução de DNS reverso);
- Em alguns casos, pode ocorrer de um site ser acessado pelo IP do servidor, mas não estar acessível pelo nome de domínio. Uma das possibilidades é que haja um problema com a resolução de nomes de domínio. Por isso, o nslookup e o dig podem ser usados para identificar quais servidores DNS respondem por determinado domínio e auxiliar na resolução do problema;
- Uma empresa migrou seus e-mails para um serviço de hospedagem diferente do qual utilizavam. No entanto, os emails não estavam funcionando após a alteração dos registros DNS e propagação dos mesmos. Com o nslookup e o dig você pode verificar se o usuário manteve os registros DNS de email (MX) do provedor antigo e inseriu os novos, resultando em um conflito, por exemplo (e acredite, isso é bem comum).
Menção honrosa: ipconfig
Ficou na dúvida sobre qual endereço IP está atribuído a sua máquina? Então, use o ipconfig (Windows) ou ifconfig (Linux e MacOS)! Esse comando exibe as configurações de rede
No Windows:
## Apresentar as informações de rede
ipconfig
## Apresentar mais detalhes das configurações de rede
ipconfig /all
## Limpar o cache de resolução DNS
ipconfig /flushdns
No Linux:
## Apresentar as informações de rede
ifconfig
## Apresentar todas as informações
ifconfig -a
No Linux, o ifconfig também permite configurar, ativar ou desativar as interfaces de rede, por exemplo. No final do texto, há um link com a documentação do comando para que você possa explorar mais.
Caso de uso:
- Para saber o IP da sua máquina, basta um ipconfig ou ifconfig
- Caso necessite saber o endereço MAC de um pc, o ipconfig /all fornecerá as informações necessárias.
- Você está acessando um site e recebe uma página de erro como retorno. Pelo 4G, o site abre normalmente. Você já limpou o cache do navegador, mas o problema persiste. O que fazer? Bem, rodar o ipconfig /flushdns pode ser uma mão na roda.
Dicas para troubleshooting
Para finalizar, nada melhor que algumas dicas rápidas para organizar o pensamento na hora da resolução de problemas (sejam de rede ou quaisquer outros):
- Defina qual é o problema real - geralmente, quando um usuário ou nós mesmos relatamos o problema, na verdade está falando dos sintomas causados pelo problema real;
- Junte todas as informações relevantes: relatos, testes, prints. Aqui, por exemplo, cabe saber os IPs envolvidos, URLs e outras informações iniciais. O ping e o tracert podem ser muito importantes nesse momento;
- Analise cuidadosamente as informações runidas, de forma a eliminar opções que não se adequam ao problema, e proponha hipóteses sobre a causa e formas de solução. As hipóteses seriam os caminhos que você vai percorrer para a solução do problema;
- Teste a(s) hipótese(s) formuladas sobre o problema, ou seja, coloque suas ideias a prova;
- Se testou e resolveu, ótimo! Se não resolveu, volte a análise das informações reunidas;
- Por fim, documente o processo de solução - isso facilita a resolução quando o mesmo problema ocorrer novamente.
Links úteis:
- O que é o ICMP
- Ping
- MTR e Traceroute
- NSlookup
- Dig
- Ifconfig (Linux) e Ipconfig (Windows)
