Olá pessoal!
Em nosso último artigo, aprendemos a instalar e configurar o PFSense, para ser utilizado como o Gateway de sua rede, permitindo-o atuar com diversas funcionalidades para a rede. Hoje, apresentaremos a criação de uma VPN com OpenVPN, para que possa acessar toda a sua infra-estrutura interna, de qualquer local que seja necessário.
O que é uma VPN?
Basicamente, VPN significa Rede Virtual Privada (ou, Virtual Private Network), e serve como um túnel entre dois pontos de conexão.
Ao estabelecer uma VPN entre um computador em sua residência e um PFSense em sua empresa, por exemplo, o túnel criado faz com que seu computador possa atuar como se estivesse ‘dentro’ da rede local de sua empresa, permitindo acesso à servidores e equipamentos, isso, se o PFSense for alcançável através de sua máquina residencial.
Agora que entendemos do que se trata a VPN, vamos aprender a configurar utilizando o PFSense para estabelecer a conexão entre suas redes distintas.

Configurando a VPN
Vamos utilizar o ‘Wizard’ do próprio PFSense para essa configuração. Para isso, vamos no menu VPN > OpenVPN. Então, clique na Aba Wizards:

Ao acessar o Wizard, vamos selecionar o ‘Type of Server‘, como ‘Local User Access‘, e podemos clicar em ‘Next‘.

Na tela seguinte, é necessário criar um novo Certificado de Autoridade (Cerfificate Authority, ou CA), para isso, basta preencher os seguintes campos:

Utilizaremos o nome: VPN_CA, indicando que essa CA é utilizada para a VPN. Após isso, estamos informando o tamanho da chave de criptografia que será gerada. Um valor de 2048 bits é suficiente.
O restante pode ser preenchido de acordo com seus dados de País, Estado, Cidade e Organização (ou empresa).

Finalizando o Server Certificate, vamos fazer as configurações de acesso à VPN em si. Para isso, escolhemos a interface de acesso, no nosso caso a WAN. Então, preenchemos o restante dos dados. Irei utilizar o protocolo apenas UDP, na porta 1194 e com a descrição ‘VPN‘.

Seguindo na mesma tela, temos as configurações de criptografia. Nessas opção, deixaremos habilitado a autenticação TLS e a criação automática de uma chave TLS compartilhada para autenticação.
Podemos definir o ‘DH‘ com o valor de 2048, como o padrão, e alterar o Algorítmo de Criptografia para AES-256-CBC. Vamos optar pelo Algorítmo de Autenticação ‘SHA1 (160bit)’. É importante que essa opção esteja igual do lado do Server (PFSense) e do Client (sua máquina).
Temos nossas configurações da seguinte forma:

Na próxima parte, temos as configurações do Túnel.
O primeiro campo se refere à pool de IPs que o PFSense utilizará em seus Clients, ou seja, quais IPs os PCs que se conectarem na VPN vão receber para a rede Virtual. Em nosso caso, selecionamos um bloco /24 (256 IPs, sendo 254 hosts), que estará de bom tamanho. Pegamos o bloco 10.20.50.0/24.
Vamos preencher a opção ‘Local Network‘, para indicar a rede LAN que estamos buscando acessar, para que o PFSense possa criar uma rota automaticamente para essa rede. Em nosso exemplo, a rede é a 192.168.1.0/24.
Utilizamos a compressão ‘Omit Preference‘, e habilitamos a opção ‘Inter-Client Communication‘, caso queira que as máquinas conectadas na VPN tenham comunicação entre si.
No momento, nossas configurações estão da seguinte forma:

Para finalizar a configuração, no campo ‘Client Settings‘, temos a opção Dynamic IP habilitada, para termos dinamicidade nos IPs conectados. Em Topology, marcamos a opção Subnet, para ter um /24 com os IPs distribuidos dentro do bloco. Caso queira isolar a subrede de cada Client, temos a opção net30, o qual cada Client vai ter um /30 separado. Algumas versões de Clients mais antigas, necessitam que esteja marcado em net30, enquanto outros, que seja em Subnet. É importante adaptar sua configuração para o Client que será utilizado.
Após isso, temos a opção de escolher o servidor DNS dessa conexão VPN. Vamos deixar o padrão quad-8 da Google e o próprio PFSense como DNS Servers.
As configurações finais estão conforme a imagem:

Na tela seguinte, temos a opção de definir uma regra de Firewall para permitir conexões de qualquer lugar na VPN, que podemos habilitar, pois, OpenVPN utiliza certificados para a conexão, sendo que, sem o certificado (que deve passado direto para a pessoa que vai se conectar) e usuário/senha, é impossível obter acesso à essa rede.
Logo abaixo, a opção ‘OpenVPN rule‘, podemos habilitar, para permitir que todo o tráfego de clientes conectados passe por dentro do Túnel VPN.

Por fim, encerramos a configuração e temos a VPN pronta.
Agora precisamos criar os usuários que terão acesso ao túnel.
Criando usuário com certificado para VPN
Para criar nossos usuários, vamos em System > User Manager, e então vamos em ‘+ Add‘, logo abaixo do painel com seus usuários do PFSense.

Na criação de usuário, adicionamos Usuário, Senha e preenchemos o restante com os dados referentes ao usuário. No caso, irei criar um usuário ‘made4it‘ que utilizaremos para conectar à rede.
Abaixo da seleção de grupo temos um botão ‘Certificate‘. É necessário dar um ‘check‘ nele, para criarmos os certificados de usuário.

Abaixo das configurações do usuário, iremos criar o certificado para nosso usuário. Para isso, criamos uma descrição. Vamos utilizar ‘made4it_cert‘ em nosso exemplo. Selecionamos a CA criada anteriormente e especificamos os mesmos 2048 bits que utilizamos na criação da mesma.

Feito isso, podemos salvar nosso usuário.
Para acessar a VPN, precisamos exportar o nosso certificado, utilizando o pacote ‘OpenVPN Client Export‘.
Instalação do Client Export
Vamos em System > Package Manager > Available Packages e então, pesquisar o pacote ‘openvpn-client-export‘ e dar um ‘+ Install‘ nele, então, aguardar a instalação finalizar:



Após finalizada a instalação, basta acessar VPN > OpenVPN > Client Export Utility, para iniciarmos a exportação do certificado.
Nessa Tela, iremos deixar a opção ‘Host Name Resolution‘ como ‘Interface IP Address‘. Em ‘Verify Server CN‘, podemos deixar em ‘Automatic‘.
O restante pode ficar desmarcado, então, clicamos em ‘Save as Default‘ para que as alterações sejam aplicadas.


Com as alterações aplicadas, vamos até a parte inferior da tela, no usuário que criamos, e selecionamos o certificado/client que iremos exportar.
No meu caso específico, irei baixar o ‘Most Clients‘ dentro de ‘Inline Configurations‘, por já ter um client pronto. Caso vá utilizar um client Windows, o Viscosity (Windows ou MacOS), ou outro Client, basta escolher o arquivo de acordo.

No meu caso, utilizarei o Client ‘Tunnelblick‘ no MacOS, para realizar a conexão na VPN. Para realizar a conexão, basta adicionar os arquivos de configuração no seu Client, então, ao conectar será solicitado usuário e senha da VPN, que será do usuário criado anteriormente, no nosso caso, o user ‘made4it‘:



Configurando a VPN no Windows
Para conectar em nossa VPN já configurada no Windows, precisamos de um Client. Podemos fazer a instalação do OpenVPN Client, usando os arquivos que o próprio PFSense disponibiliza para nós.
Para isso, vamos em VPN > OpenVPN > Client Export, e fazemos o download do arquivo mais adequado. No caso, como irei utilizar o OpenVPN Client, podemos selecionar a versão em Current Windows Installer (Para Windows 7/8 ou Windows 10).

Finalizando o download do arquivo, podemos executá-lo e seguir com a instalação normal. O Arquivo que baixamos irá iniciar a configuração do OpenVPN e instalar nossa conexão com a VPN diretamente, sem necessidade de outras configurações.
Ao encerrar os instaladores, podemos abrir o OpenVPN clicando no atalho criado na área de trabalho, então com o botão direito no ícone na Barra de Ferramentas (Próximo ao Relógio), e por fim, clicar em Conectar e fornecer os dados de usuário/senha criados no PFSense.



Então, é isso pessoal, esse foi o nosso guia de configuração de OpenVPN utilizando PFSense e configuração para conectar nela, utilizando o OpenVPN Client, com os arquivos providenciados pelo próprio PFSense.
Caso precise de ajuda ou suporte para a manutenção do PFSense, entre em contato que podemos lhe ajudar!
Obrigado e até a próxima!
Boa noite! Segui o tutorial certinho e consegui me conectar com sucesso com um ping extra baixo no meu notebook via 4G. Porém, não consigo acessar de jeito nenhum a minha rede local mesmo usando a opção customizada pra rotear pra rede interna. O que eu poderia fazer para ter o acesso normal a minha rede local, podendo assim fazer RDP e acesso de armazenamento em rede? Tentei até modificar pelo firewall mas não obtive sucesso. Grato.