
Apresentação:
Apresento a vocês um tutorial de como configurar uma vpn roteada. Não tende a ser uma documentação extensa e abrangente sobre o assunto, mas espero que ajude alguém que procura esta solução. Não abordarei detalhes de como configurar as interfaces de rede e a configuração do firewall é apenas uma sugestão básica. Utilizei o servidor OpenVPN em Debian e Ubuntu, mas se adaptado servirá para qualquer distribuição LINUX.
Passo 1 – Instalação por pacote pré-compilado (APT).
Após instalado o sistema operacional no servidor, prossiga instalando o pacote openvpn através do apt-get. Não abordarei aqui a instalação por código fonte já que os pacotes oficiais me atenderam a contento. A instalação por código fonte poderá ser feita seguindo a documentação oficial conforme sua necessidade.
1 |
# apt-get install openvpn |
Passo 2 – Criando as chaves
Localize (no exemplo abaixo, foi encontrado em /usr/share/doc/openvpn/examples/easy-rsa ) e copie os scripts (versão 2) easy-rsa para o diretório /etc/openvpn/easy-rsa:
# find / -iname easy-rsa
/usr/share/doc/openvpn/examples/easy-rsa
# mkdir /etc/openvpn/easy-rsa
# cp -rv /usr/share/doc/openvpn/examples/easy-rsa/2.0/*.* /etc/openvpn/easy-rsa/
No final do arquivo “vars” , você encontra um conjunto de parâmetros usados para gerar as chaves (país, estado, cidade, empresa, etc.), que devem ser editados:
1 |
# vi /etc/openvpn/easy-rsa/vars |
Exemplo:
export KEY_EMAIL=” geowany@hostqueeuquiser.com“
Em seguida, usar o comando “source” para carregar as variáveis do arquivo “vars”:
1 |
# cd /etc/openvpn/easy-rsa/ |
E logo após, limpar vestígios de configurações antigas (caso tenham existido):
Gerar o certificado raiz:
Gerar os parâmetros Diffie Hellman para reforçar segurança durante trocas de chaves entre servidor e clientes:
Criar chave estática:
1 |
# openvpn --genkey --secret static.key |
Criar a chave do servidor (pode ser o nome que você quiser ao invés de “servidor”):
1 |
# ./build-key-server servidor |
Criar a chave dos clientes (pode ser o nome que você quiser ao invés de cliente1, cliente2):
1 |
# ./build-key cliente-01 |
2 |
# ./build-key cliente-02 |
Remover as requisições para a assinatura das chaves, esses arquivos são desnecessários após a criação das chaves:
Para “bloquear” um cliente, impedindo que ele se conecte na vpn use:
Passo 3 – Configurando o servidor
Crie o arquivo /etc/openvpn/servidor.conf (no caso, o sugerido é servidor), e adicione o conteúdo conforme indicado abaixo:
04 |
server 192.168.2.0 255.255.255.0 |
05 |
push "route 192.168.1.0 255.255.255.0" |
12 |
ifconfig-pool-persist /etc/openvpn/ipp.list |
18 |
cert keys/servidor.crt |
20 |
tls-auth keys/static.key |
21 |
status /var/log/openvpn-status.log |
23 |
log /var/log/openvpn.log |
24 |
log-append /var/log/openvpn.log |
Depois copie os arquivos dh1024.pem, ca.crt, servidor.crt e servidor.key gerados de /etc/openvpn/easy-rsa/keys para /etc/openvpn/keys, além do arquivo static.key.
Passo 4 – Exemplo de configuração do firewall
Segue abaixo o script de firewall utilizado:
02 |
#Interface de rede interna |
05 |
NET_LOCAL="192.168.1.0/24" |
06 |
#Interface de rede externa |
09 |
NET_VPN="192.168.2.0/24" |
11 |
echo "Starting firewall..." |
12 |
echo 1 > /proc/sys/net/ipv4/ip_forward |
14 |
iptables -P INPUT DROP |
15 |
iptables -P OUTPUT ACCEPT |
16 |
iptables -P FORWARD ACCEPT |
18 |
# libera conexão ssh (alterado para 20001) |
19 |
iptables -A INPUT -p tcp --dport 20001 -j ACCEPT |
21 |
iptables -A INPUT -p udp --dport 10000 -j ACCEPT |
22 |
# libera a entrada de conexões da rede local |
23 |
iptables -A INPUT -i $I_LOCAL -s $NET_LOCAL -j ACCEPT |
24 |
# liberando acesso a interface lo |
25 |
iptables -A INPUT -i lo -j ACCEPT |
26 |
# roteando pacotes da rede vpn para a rede local |
27 |
iptables -t nat -s $NET_VPN -A POSTROUTING -o $I_LOCAL -j MASQUERADE |
28 |
echo "Firewall started!" |
31 |
echo "Stopping firewall..." |
35 |
echo "Firewall stoped!" |
40 |
"restart") stop ; start ;; |
41 |
*) echo "Parameters: [ start | stop | restart ]" |
Passo 5 – Configurando o cliente (Windows e Linux)
No Windows:
Instale o OpenVPN GUI disponível no site http://www.openvpn.se, e depois crie o arquivo “C:\Arquivos de programas\OpenVPN\config\.ovpn” com as seguintes configurações:
17 |
tls-auth keys/static.key |
Logo após, dentro do diretório config, crie um diretório chamado keys. Dentro deste diretório, copie os arquivos correspondentes: dh1024.pem, ca.crt, .crt, .key e static.key.
Feito isso, configure o serviço OpenVPN para automático.
Problema no Windows Vista/Seven
Se você tiver recebendo um erro referente as rotas nos logs, faça o seguinte:
Adicione essas 2 linhas no seu arquivo .ovpn
route-method exe
route-delay 2
NO LINUX:
Seguir o mesmo exemplo da configuração para Windows, a diferença que a extensão do arquivo deve mudar de *.ovpn para *.conf e colocada no diretório /etc/openvpn/, além das chaves que devem ser colocadas em /etc/openvpn/keys (ou o diretório de sua escolha).
Espero que este artigo seja útil e recomendo a leitura da documentação oficial para maior entendimento sobre as opções.
Fonte: Software Livre AC
-15.325912
-49.117288