Como usar a raspberry pi como gateway vpn

by bruno

A ideia aqui é que todo o tráfego de uma rede seja criptografado e direcionado para um servidor vpn. A principal proteção nesse caso é contra países e empresas provedoras que vigiem os usuários – seus pacotes de dados saem do outro lado com o ip obfuscados e longe da vigilância local.

Nesse exemplo, usamos a RaspberryPi 3 model B, que já tem wifi. Em primeiro lugar, baixe a última versão do Raspbian, e copie a imagem para o cartão SD com o Etcher.

Serão criadas duas partições: uma pequena, chamada boot, e outra maior. Se você não quiser usar teclado e mouse, pode habilitar o acesso SSH e fazer todo o procedimento pela rede. Para isso, basta criar um arquivo chamado ssh, sem conteúdo nem terminação, na pasta raíz da particão boot.

Além disso, você vai ter que definir um ip fixo para sua raspi: esse vai ser o endereço do gateway que vai encriptar a navegação da sua rede. Descubra os ips usados pelo provedor de DHCP e veja quais estão disponíveis (geralmente os ip distribuídos estão em um escopo de 192.168.1.100 a 192.168.1.200. Isso quer dizer que os endereços de 192.168.1.2 até 192.168.1.99 podem ser usados como ips fixos).

Feito isso, vamos editar o arquivo chamado /etc/network/interfaces que está na outra partição. Se estiver usando linux, o arquivo só pode ser editado como super user, portanto use sudo ou o que achar melhor.

Caso vá usar a conexão por ethernet, use essas configurações:

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2 #aqui é o ip fixo que vc escolheu
netmask 255.255.255.0
gateway 192.168.1.1 #aqui é o ip do teu roteador
dns-nameservers 8.8.8.8 8.8.4.4

ou por wifi:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
wpa-ssid "nome_da_rede"
wpa-psk "senha_da_rede"
address 192.168.1.2 #aqui é o ip fixo que vc escolheu
netmask 255.255.255.0
gateway 192.168.1.1 #aqui é o ip do teu roteador
dns-nameservers 8.8.8.8 8.8.4.4

Agora vocêjá pode botar o cartão na raspberry e dar boot. Faça login usando teclado e monitor, ou pelo ssh –

ssh pi@ip_da_raspi

A senha é raspberry

Agora instale o openvpn:

sudo apt install openvpn

São necessários arquivos de chaves e certificados do servidor VPN ao qual você vai conectar. Isso vai depender da configuração do seu servidor. No meu caso eu precisei da chave e certificado do client (client1.key e client1.crt), o certficado do servidor (ca.crt) e da chave tls (ta.key). Copie para algum diretório da raspi. No caso abaixo, eu usei o /home/pi/openvpn.

Agora o arquivo de configuração de cliente tem que ser criado, com o nome client.conf, no diretório /etc/openvpn

Você pode baixar esse arquivo aqui e usar como referência. Os detalhes importantes são o endereço do servidor VPN e os diretórios dos arquivos acima dentro da raspi. Você pode testar a conexão vpn com o comando:

sudo openvpn /etc/openvpn/client.conf

Para que o cliente rode a cada boot, use o comando abaixo:

sudo systemctl enable openvpn@client

Agora vamos às configurações de tráfego de ip.  Edite o arquivo /etc/sysctl.conf para permitir forward de IP (basta descomentar a linha net.ipv4.ip_forward=1)

Acrescente as seguintes regras de firewall para repassar pacotes. Atente caso se esteja usando ethernet (eth0) ou wifi (wlan0)

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

Instale o iptables-persistent para fazer as mudanças serem permanentes. E faça as regras serem carregadas no boot:

sudo apt-get install iptables-persistent
sudo systemctl enable netfilter-persistent

Dê reboot e confira se o cliente está rodando
sudo systemctl status openvpn@client
sudo journalctl -u openvpn@client

Agora mude as configurações de rede seu pc/celular para usar a raspi como gateway. Use o ip da raspi (gateway 192.168.1.2 no nosso exemplo) e um dns público como o do google (8.8.8.8).

Para fazer esse processo transparente para o usuário, você pode definir esse endereço de gateway no seu roteador. Assim todos os dispositivos que conectem já serão roteados através da raspi. Se você usa um roteador com OpenWrt, pode fazer isso simplestmente editando o arquivo /etc/config/dhcp . Arcescente a seguinte linha na seção config dhcp ‘lan‘:

option dhcp_option "3,192.168.1.2"

Onde o endereço ip é o endereço da raspi na sua rede.

Teste o seu endereço ip externo pra ver se deu tudo certo, visitando http://ipinfo.io/ O endereço mostrado deve ser o do seu servidor VPN, ao invés do seu provedor de internet.