Pular para o conteúdo principal

2 publicações com a etiqueta "Linux"

Ver todas as etiquetas

5 comandos básicos úteis para troubleshooting de redes

· 8 min para ler
Ludmila Silva
Cloud & DevOps Engineer

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 mtr para 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):

  1. 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;
  2. 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;
  3. 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;
  4. Teste a(s) hipótese(s) formuladas sobre o problema, ou seja, coloque suas ideias a prova;
  5. Se testou e resolveu, ótimo! Se não resolveu, volte a análise das informações reunidas;
  6. Por fim, documente o processo de solução - isso facilita a resolução quando o mesmo problema ocorrer novamente.
Ler artigo

Criando sua própria VPN gratuita na nuvem

· 9 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Nos dias atuais temos uma preocupação (muito válida, por sinal) sobre a privacidade em relação ao tráfego na rede. Além das questões de privacidade e segurança, há também serviços e conteúdos que somente são disponibilizados em determinadas localizações ou redes.

Para contornar isso, geralmente recorremos à serviços de VPN, sejam eles pagos ou gratuitos. Mas mesmo assim, incorremos no risco de retenção de logs e dados, "espionagem", e por aí vai...

Imagem meramente educativa

Então, que tal criar sua prória VPN? Nesse artigo, vou apresentar um passo a passo para criar uma VPN na nuvem gratuitamente.

Vamos lá?

Passo a Passo

De início, precisamos criar um servidor - que será nosso VPN server. Existem inúmeras formas de criaá-lo: seja utilizando um Raspberry Pi, usando um servidor local, contratando uma VPS, etc.

Como não há o intuito de armazenar logs, então os serviços de computação em nuvem vão atender muito bem. Nesse caso, vamos criar uma conta gratuita na Oracle Cloud Infraestructure (OCI).

O legal da Oracle Cloud é que você pode criar até duas VMs (AMD com 1/8 OCPU e 1 GB de RAM) no nível gratuito para sempre (Always Free Services) - isso mesmo, 100% grátis! Como o projeto não vai precisar de configurações tão robustas, então é o suficiente para começarmos.

1) Crie sua conta na Oracle Cloud

Se você não tem uma conta na Oracle Cloud, é a hora de criar uma. Será necessário fornecer um cartão de crédito, mas não se preocupe, pois você não será cobrado.

Só se atente que nos primeiros 30 dias a Oracle fornece $ 300 em créditos para serem utilizados nos serviços. Caso você opte por serviços que não fazem parte do nível gratuito, fique de olho para que não ocorram cobranças indesejadas. Dê uma olhada nos serviços que fazem parte do Always Free para não ter nenhuma surpresa indesejada.

Enfim, para criar o seu cadastro, clique aqui. E em seguida clique em "Teste a OCI gratuitamente":

Ao criar a sua conta, você deverá escolher uma região onde seus serviços serão provisionados. Após escolher, você não pode alterar mais:

💡

Levando em consideração a criação de uma VPN, escolha a região que melhor lhe atenda.

Se tudo ocorrer bem, você vai receber um e-mail de confirmação. Basta efetuar o login.

2) Gere um par de chaves SSH

Antes de correr para o abraço na Oracle Cloud, vamos gerar uma chave SSH localmente. Portanto, abra o terminal caso use o Linux ou Mac, ou o cmd caso esteja no Windows. E digite o comando:

ssh-keygen

Deve aparecer a seguinte saída no terminal:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

Nesse momento, você pode nomear a sua chave digitando um nome de sua preferência e depois clicando em enter. Caso você deixa em branco e pressione o enter, será gerada uma chave padrão (default). Fica à seu critério.

Em seguida, você será solicitado a digitar uma senha para a sua chave. Recomendo pular essa parte no momento, para evitar problemas de esquecimento rsrs... Então, apenas pressione o enter duas vezes.

Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Após isso, sua chave será gerada e também será indicado o caminho dos arquivos id_rsa (chave privada) e id_rsa.pub (chave pública).

🚨

Em alguns casos, do OpenSSH não estar habilitado no Windows.

Caso o OpenSSH não esteja habilitado, pesquise por Configurações, selecione Aplicativos -> Aplicativos e Recursos -> Recursos Opcionais

Veja se o OpenSSH está habilitado.

Caso não esteja instalado, clique em "Adicionar um Recurso". Procure pelo Cliente do OpenSSH e clique em "Instalar":

Depois, proceda com a criação da sua chave SSH, conforme descrito anteriormente.

3) Crie uma nova instância

Agora que criou sua chave, faça login no Console da Oracle Cloud. Na página inicial, role para baixo até encontrar a aba "Iniciar Recursos" e clique em "Criar uma instância de VM".

Você será redirecionado para a página "Criar instância de computação", que apresenta o workflow de criação da instância. Esse workflow vai permitir fazer diversas coisas, como:

  • Criar e instalar a instância Ubuntu;
  • Criar uma VCN (virtual cloud network) com sub-rede, com os compenentes necessários para acessar a internet;
  • Criar ou colar um par de chaves ssh.

4) Nomeie a instância e escolha a imagem Ubuntu

Nas opções iniciais, insira um nome para a sua instância e escolha um compartimento onde ela será criada.

Em Posicionamento, mantenha a opção Always Free Elegível para o domínio de disponibilidade. E em Segurança, matenha o padrão.

Já na aba Imagem e Forma, clique em "Editar":

Clique em “Alterar Imagem” e selecione Ubuntu (eu escolhi a Canonical Ubuntu 22.04) e clique em "Selecionar imagem".

Após selecionar, a imagem e forma terão essas características:

Nas Configurações de Rede, faça as seguintes alterações:

  • Clique em "Editar".
  • Em Rede Principal, selecione "Criar nova rede virtual na nuvem".
  • Em Novo nome da rede virtual na nuvem, crie o nome da VCN.
  • Criar no compartimento: escolha o compartimento onde a VCN será criada.
  • Em Sub-rede, selecione "Criar nova sub-rede pública".
  • Em Novo nome de sub-rede, insira o nome da sub-rede.
  • Criar no compartimento: escolha o compartimento.
  • Bloco CIDR: Use o valor padrão (10.0.0.0/24).
  • Endereço IPv4 público, selecione "Designar um endereço IPv4 público".

Agora, é a hora de Adicionar as chaves SSH. Selecione a opção "Colar chaves públicas".

  • Lembra que criamos uma chave SSH no começo desse tutorial, certo? Você vai abrir o local do arquivo em que sua chave foi salva, e abrir o arquivo id_rsa.pub com um editor de texto ou o bloco de notas.
  • Você vai copiar a chave e colar no campo "Chaves SSH":

Por fim, na aba Volume de inicialização:

  • Desmarque a opção "Especificar um tamanho de volume de inicialização do cliente".
  • Marque a opção "Usar criptografia em trânsito".
  • Desmarque a opção "Criptografar este volume com uma chave gerenciada por você".

Clique em Criar. Em alguns minutos, sua instância Ubuntu estará provisionada com sucesso.

Nas informações da instância, você vai encontra o Endereço IP Público. Copie e salve esse endereço, vamos precisar dele para fazer o acesso a instância pelo SSH.

5) Ativar o acesso à internet - liberar a porta UDP 1194

Com o workflow do passo anterior, nós criamos uma VCN. Agora, é necessário adicionar uma regra para permitir a conexão com a porta 1194 (padrão da VPN).

Para isso, abra o menu e clique em "Rede" -> "Redes Virtuais na nuvem":

Selecione sua VNC → clique na sua Subnet → e em seguida clique na Lista de Segurança.

Clique no botão "Adicionar Lista de Segurança":

Agora, adicione as seguintes informações:

  • Sem monitoramento de estado: Marcado
  • Tipo de Origem: CIDR
  • CIDR de Origem: 0.0.0.0/0
  • Protocolo IP: UDP
  • Intervalo de portas de origem: deixe vazio
  • Intervalo de Portas de Destino: 1194
  • Descrição: OpenVPN

E clique em "Adicionar regras de entrada".

6) Conecte-se a VM via SSH

Agora, vamos nos conectar à nossa instância via SSH. Se tudo ocorreu certo com a sua chave, basta usar o comando:

ssh -i nome_da_chave ubuntu@ip_da_vm

## Exemplo
ssh -i oracle ubuntu@ip_da_vm

Em seguida, digite:

sudo su

apt-get update && upgrade -y

7) Instale o OpenVPN

Para facilitar o processo, vamos utilizar um script para instalar o OpenVPN

## Instalar o wget - caso não venha por padrão na máquina
apt install -y wget

## Instalar e configurar o OpenVPN

wget -O openvpn.sh https://get.vpnsetup.net/ovpn && bash openvpn.sh

Alguns pontos durante a instalação e configuração do OpenVPN:

  • Protocolo (protocol): Selecione UDP (1)
  • Porta do servidor (What port?): 1194
  • Servidor DNS (DNS server): Google Public DNS (2)
  • Nome do cliente (Enter a name for the first client): crie um nome
  • Digite "y"

Pronto! Ao finalizar a instalação do OpenVPN, será informado onde o arquivo client foi criado. Copie o caminho do arquivo, pois será necessário para baixá-lo.

8) Baixe o arquivo client

O próximo passo é baixar o arquivo client na sua máquina local. Existem várias formas de fazer isso, seja com FTP, SFTP, entre outros. Nesse caso, vamos usar o protocolo SCP.

A sintaxe do comando é:

scp [other options] [source username@IP]:/[directory and file name] [destination username@IP]:/[destination directory]

Abra um terminal e siga o exemplo (o caminho da pasta destino vai depender caso esteja usando o Windows ou Linux):

scp -i nome_da_chave ubuntu@ip_da_VM:/home/ubuntu/client.ovpn D:/Downloads

O arquivo .ovpn será copiado para a sua pasta de destino. No meu caso, ele ficou na pasta "Downloads" padrão do Windows.

9) Testando a conexão

Para testar, é necessário ter o OpenVPN client instalado no seu computador. Você pode baixá-lo por este link.

Após instalado, clique no arquivo .ovpn (caso esteja no Windows), ou importe esse arquivo caso esteja usando o Linux.

Considerações finais

Nesse tutorial, criamos de forma bem básica a nossa VPN gratuita. Não abordamos questões de segurança e proteção de porta, mas isso pode ficar para outros tutoriais.

💡

Ah, existe uma forma bem mais "simples" de criar sua VPN na Oracle - com poucos cliques. Mas nada melhor do que aprender primeiro e depois buscar formas mais práticas 😆... Fica para um outro artigo também.

Bons estudos!

Referências

Ler artigo