PiVPN: Transforme sua Raspberry Pi em um servidor VPN 6

Nos últimos meses temos ouvido falar muito sobre VPN devido a pandemia. Com o aumento do número de pessoas realizando home office em seus trabalhos, a maioria das empresas foram obrigadas a disponibilizar acesso a VPN para os funcionários. Neste artigo veremos o que é uma VPN, para que serve e como fazer a nossa própria VPN utilizando uma Raspberry Pi como servidor e utilizando o PiVPN.

O que é uma VPN?

A VPN, ou Virtual Private Network, é um serviço de rede intermediário entre o usuário e a internet, que oferece ferramentas adicionais de criptografia e navegação sigilosa.

Normalmente utilizamos a abstração de um túnel entre o usuário e o servidor, mas para entendermos melhor esse funcionamento, é necessário primeiro entendemos como acessamos a internet.

Quando entramos em um site, primeiro nosso computador envia um pacote para o nosso roteador. O roteador encaminha essa pacote para um servidor de DNS que resolve o nome do site para o seu IP e encaminha o pacote para o servidor de destino.

Quando o servidor recebe esse pacote ele envia outro de volta pelo mesmo caminho:

explicações sobre VPN - PiVPN

Quando utilizamos uma VPN esse caminho é semelhante, porém nosso pacote de dados circula pela rede de forma criptografada até chegar ao servidor VPN que encaminhará nosso pacote até o servidor que queremos acessar.

Esse método garante maior segurança para os nossos dados, por isso utilizamos a representação de um túnel entre o usuário e o servidor VPN:

explicações sobre VPN - PiVPN

Neste artigo, iremos criar nosso servidor VPN em nossa rede interna (LAN) para que possamos acessar a nossa rede interna (LAN) através de uma rede externa (WAN) com segurança. Em meu exemplo acessarei a minha rede interna através da VPN utilizando meu celular que está conectado em uma rede externa:

explicações sobre VPN - PiVPN

Material necessário

Raspberry Pi 3 Model B+
Fonte Chaveada 5 V / 3A
Cartão SD

Além dos itens citados acima, iremos utilizar os seguintes softwares:

balenaEtcher
PuTTY

Instalando o Raspberry Pi OS na Raspberry Pi

Primeiro iremos fazer o download do Raspberry Pi OS Lite no site oficial do desenvolvedor.

Após o download, iremos instalar o sistema no SDCard. Utilizei o Balena Etcher para realizar esta operação, mas existem outras opções, como o Raspberry Pi Imager.

Após a instalação do sistema operacional no SDCard, abrimos a pasta boot e criamos o arquivo com o nome ssh sem extensão para podermos acessar a Raspberry via SSH através da rede.

Agora inserimos o SDCard na Raspberry, ligamos o cabo ethernet em nossa Raspberry e em nosso roteador, depois energizamos. 

Acessando a Raspberry Pi remotamente

A seguir iremos nos conectar nela através da rede pelo protocolo SSH. Para isso utilizaremos o software PuTTY. Sua operação é bem simples, basta abri-lo e digitar raspberrypi.local no campo Hostname.

Feita a conexão via SSH, será necessário fazer login. O usuário padrão é pi e a senha é raspberry.

Após o login, por motivos de segurança é aconselhável que alteremos a senha do nosso usuário. Para isso, usamos o seguinte comando:

passwd

Após digitar o comando, o sistema pede para que digitemos a atual senha, a nova senha e por último que repita a nova senha.

Instalando o PiVPN e configurando

Para Instalar o PiVPN é bem simples basta digitar apenas o seguinte comando:

curl -L https://install.pivpn.io | bash

Este comando já irá instalar tudo que é necessário e irá nos encaminhar para as telas de configurações.

Após o término da instalação, iremos começar as configurações de nossa VPN.

Na primeira tela, o PiVPN nos informa que o instalador irá transformar nossa Raspberry em um servidor VPN. Aperte enter e prossiga.

Na segunda tela, o PiVPN nos informa que é aconselhável configurar um IP estático para a nossa Raspberry e que nos encaminhará para as configurações de rede, apertamos enter em OK.

Na terceira tela, o PiVPN nos diz que estamos utilizando um IP dinâmico, nosso atual IP e gateway da rede interna. Ele também permite escolher entre manter o IP dinâmico ou configurar um estático. Como o Raspberry será um servidor, necessitamos de um IP estático, então iremos escolher a opção NO.

Na quarta tela, é mostrado as configurações de IP e gateway da nossa rede interna e nos pergunta se queremos fixar esse IP ou configurar um novo para a nossa Raspberry. Para facilitar o acesso, eu irei alterar esse IP clicando na opção NO. Lembre-se que esse IP tem que seguir a sua máscara de rede.

Na quinta tela o PiVPN pede para que digitemos nosso novo IP. Irei colocar um IP fácil de lembrar caso precise acessar mais vezes a Raspberry. Após digitado o novo IP clicamos em OK.

Na sexta tela temos a configuração do Gateway, nessa manteremos o valor e clicamos em Ok.

Na sétima tela o PiVPN mostra nossa nova configuração e confirmamos ela clicando em OK.

Na última tela o PiVPN nos informa que devemos escolher um usuário para deixar as configurações da VPN.

O PiVPN lista todo os usuários que temos para escolhermos qual queremos salvar as configurações. No meu caso, só tenho o usuário padrão pi, portanto iremos selecionar ele com a barra de espaço e depois apertamos enter no OK.

Em seguida, o PiVPN nos mostra duas opções de software de VPN para instalarmos:  o WireGuard e o OpenVPN. Aqui, é por sua escolha; ambos fazem o mesmo trabalho. Irei instalar o OpenVPN, selecionamos ele com a barra de espaço e depois selecionamos OK.

Na terceira tela, o PiVPN nos deixa escolher entre uma configuração padrão ou uma customizada. Para a nossa aplicação, as configurações padrões atendem, porém caso queira alterar basta selecionar YES. Irei manter as padrões selecionando No.

Na quarta tela o PiVPN nos pede para escolhermos o número da porta de acesso. Por padrão, o OpenVPN utiliza a porta 1194, porém por motivos de segurança devemos alterar essa porta. Para facilitar, eu escolhi a porta número 11940, mas sugiro colocar um número totalmente diferente. Altere ao digitar um novo valor e clicar em Ok.

Na quinta tela ele pede para confirmamos o valor da porta, clicamos em YES para confirmar.

Na sexta tela o PiVPN pede para selecionarmos um DNS para a nossa VPN. Caso você tenha um DNS na sua rede interna, você pode utilizar a opção Custom para inserir ele. Como não tenho, irei utilizar o DNS do Google. Selecionamos ele com o barra de espaço e clicamos em OK.

Na última tela, o PiVPN pede para selecionarmos se iremos utilizar o nosso IP externo ou um DNS. Irei utilizar um DNS, porém você pode escolher pelo IP externo também.

Como a maioria dos provedores alteram nosso IP externo, caso você selecione pelo IP e após alguns dias seu provedor altere seu IP, você terá que reconfigurar toda a VPN.

Para evitar isso selecionamos a opção DNS Entry e utilizaremos os serviços online gratuitos de DNS. Irei utilizar o no-ip pela simplicidade, porém existem milhares na internet, você pode escolher o de sua preferência

Iremos acessar o site no-ip e criar uma conta. Com a conta criada, somos direcionados para essa tela:

Iremos para o campo nome do host e adicionamos um nome para o nosso DNS. Também podemos selecionar um domínio na lista. Vou deixar o padrão; em seguida, clique em Adicionar nome de Host.

Agora que geramos nosso DNS, iremos inseri-lo na primeira tela do PiVPN.

Na segunda tela o PiVPN pede para confirmamos nosso DNS.

Na terceira tela o PiVPN irá gerar as chaves da nossa VPN. Após gerar as chaves, o PiVPN nos pergunta se queremos habilitar upgrades de segurança, iremos selecionar e YES.

Na última tela de configuração o PiVPN nos recomenda reiniciarmos a Raspberry Pi para concluir as configurações. Vamos selecionar YES e aguardar o reboot.

Configurando nosso Roteador

Para que os nossos clients consigam se conectar com a nossa Raspberry Pi, é necessário configurar o redirecionamento de porta de nosso roteador, e como existem diversas marcas seria impossível de fazer um tutorial explicando sobre todas, já que para cada fabricante a configuração é feita de uma forma diferente.

Entretanto, irei deixar esse site onde explica como configurar o redirecionamento de porta para diversas marcas e modelos de roteadores.

Gerando nossos Clients

Agora iremos gerar nossas chaves para inserirmos em nossos clients. Neste post irei gerar duas, um para o meu computador e um para o meu celular.

Após acessarmos o terminal iremos digitar o comando:

pivpn add

O comando irá pedir para inserirmos o nome do client na primeira linha. Na segunda linha colocamos por quanto tempo essa chave será válida, na terceira linha inserimos uma senha e na quarta linha repetimos a senha:

Repetimos o processo para gerar uma chave para o computador.

Após esse processo, podemos ver que o PiVPN criou uma pasta em nosso diretório Home.

Podemos ver a pasta com o comando ls. Para acessá-la, usaremos o comando cd e o nome da pasta. Quando estivermos dentro da pasta, executamos o comando ls para podermos ver as 2 chaves que geramos para os nossos clients:

Agora devemos enviar esses arquivos para os nossos clients para realizarmos a conexão. Irei enviar o android.ovpn para o meu celular e o windows.ovpn para o meu computador.

Configurando nossos clients

Após enviarmos os arquivos, abriremos o aplicativo do OpenVPN em nosso client e importaremos o arquivo. Irei demonstrar no meu celular Android, porém existe a mesma versão para IOS e Windows e a configuração é exatamente igual.

Mas antes de demonstrar o seu funcionamento, irei ver o IP externo do meu celular que está conectado na internet através do 4G. Podemos ver nosso ip nesse site.

Meu atual IP externo termina com o número 90. Agora podemos continuar com a configuração.

Abrimos o app e clicamos na aba file. Em seguida selecionamos o nosso arquivo e clicamos em import.

Na próxima tela, marcamos a caixa Save private key password e clicamos em Add.

importando profile pivpn

Nesta tela ficará o nosso acesso. Basta clicar em cima dele para realizarmos a conexão com a vpn. Note que estou conectado com o meu 4G na barra de notificações.

dns desconectado pivpn

Após ativarmos a conexão, o app nos mostra informações de nossa conexão e mantém uma chave em nossa barra de notificações para nos lembrarmos que estamos nos conectando através da vpn.

pivpn no android

Agora que estamos conectados podemos ver novamente nosso IP externo e confirmar que estamos acessando a internet através da VPN.

Meu novo IP externo através da VPN termina com o número 251.

Conclusão

Neste artigo, aprendemos o que é uma VPN, para que serve e como configurá-la de forma simples utilizando o PiVPN. Percebe-se que a maior vantagem de sua utilização é prover uma camada de segurança para acessarmos a internet.

As aplicações que acredito serem mais interessantes para esse sistema são para acessar sua rede interna com segurança, para buscar arquivos caso você tenha um servidor de compartilhamento de arquivos como foi ensinado neste artigo.

Caso você tenha uma impressora 3D e utilize o OctoPrint como neste artigo, poderá controlar sua impressora de qualquer lugar e para jogar com seus amigos jogos antigos que não possuem mais servidores online.

Faça seu comentário

Acesse sua conta e participe

6 Comentários

  1. Viktor,

    Muito obrigado, foi de primeira. Tudo funcionando, agora é só testar as portas.

    Parabéns!

  2. Viktor tentei aqui porém no final de tudo não conectou com a vpn estou com duvida se o erro vai ser no roteador ou no dns que eu coloquei o hostname que coloquei termina com .hop.org, será que foi isso?

  3. Viktor, excelente tutorial. Muito obrigado. Aqui deu tudo certo, exatamente como voce instruiu. Mas ficou uma questão: caso eu queira acessar um servidor de arquivos que possui um outro ip, ou utilizar uma impressora de redes, como fazer? A minha LAN possui os ips na forma 192.168.0.x, sendo um destes o raspberry pi. Através do OpenVPN, somente consigo acessar o raspberry, e mesmo assim com o ip 10.0.8.1. Os demais pontos de rede, não consegui. Existe alguma configuração que eu não tenha feito que possa mudar isso?

    Grato

    Marcelo

  4. Olá. E como eu acesso algo que está em casa? Tenho um servidor de automação com Raspberry em casa, que cuida dos alarmes, etc. Penso em comprar outro Raspberry para ser o VPN Server. Configurando um cliente para o meu celular Android e um cliente para o Raspberry “automação”, como se daria o acesso? Via o IP da rede VPN? O celular seria IP 10.8.0.2 (na VPN). E o Raspberry “automação” IP 10.8.0.5. Seria só digitar o IP e a porta?

  5. Quero agradecer ao excelente tutorial. Apesar de ser um newbe no raspberry pi e linux, consegui fazer da primeira vez e funcionou perfeitamente, atendendo minhas necessidades. Muito obrigado e parabens pela iniciativa Viktor.

  6. Algume pode me explicar como faço para usar a rede wifi junto com a rede cabeada? sempre que coloco o cabo a rede wifi para de funcionar.