Implementação de VPN com OpenVPN
As VPNs, ou Virtual Private Networks, são túneis virtuais que podem ser estabelecidos sob a internet, onde dois servidores são interligados de forma segura formando, dessa forma, uma rede única.
Parte 2: Configuração
Inicialmente vamos criar um usuário e um grupo chamados openvpn:
# groupadd openvpn
# useradd -g openvpn -s /dev/null openvpn >/dev/null 2>&1
# passwd -l
Em seguida vamos criar o diretório onde iremos armazenar os arquivos de configuração da VPN na matriz:
# mkdir /etc/openvpn-matriz
O próximo passo é gerar a chave criptográfica estática:
# openvpn --genkey -secret /etc/openvpn-matriz/chave
Agora vamos criar o script matriz.conf com o seguinte conteúdo:
# vi /etc/openvpn/matriz.conf
# groupadd openvpn
# useradd -g openvpn -s /dev/null openvpn >/dev/null 2>&1
# passwd -l
Em seguida vamos criar o diretório onde iremos armazenar os arquivos de configuração da VPN na matriz:
# mkdir /etc/openvpn-matriz
O próximo passo é gerar a chave criptográfica estática:
# openvpn --genkey -secret /etc/openvpn-matriz/chave
Agora vamos criar o script matriz.conf com o seguinte conteúdo:
# vi /etc/openvpn/matriz.conf
# Usar como interface o driver TUN
dev tun
# 10.0.0.1 IP da matriz
# 10.0.0.2 IP remoto, da filial
ifconfig 10.0.0.1 10.0.0.2
# Entra no diretório onde se encontram
# os arquivos de configuração
cd /etc/openvpn-matriz
# Indica que esse túnel possui uma
# chave criptográfica
secret chave
# OpenVPN usa a porta 5000/UDP por
# padrão. Cada túnel do OpenVPN deve
# usar uma porta diferente.
port 5000
# Usuário e grupo que irão executar o
# daemon do OpenVPN
user openvpn
group openvpn
# Especifica uma MTU comum entre as
# partes - MATRIZ e FILIAL
tun-mtu 1500
tun-mtu-extra 32
# Usa a biblioteca lzo para
# compactação dos dados que irão
# trafegar no túnel
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para
# manter a conexão de pé em firewall
# statefull.
ping 15
# Nível de log
verb 3
dev tun
# 10.0.0.1 IP da matriz
# 10.0.0.2 IP remoto, da filial
ifconfig 10.0.0.1 10.0.0.2
# Entra no diretório onde se encontram
# os arquivos de configuração
cd /etc/openvpn-matriz
# Indica que esse túnel possui uma
# chave criptográfica
secret chave
# OpenVPN usa a porta 5000/UDP por
# padrão. Cada túnel do OpenVPN deve
# usar uma porta diferente.
port 5000
# Usuário e grupo que irão executar o
# daemon do OpenVPN
user openvpn
group openvpn
# Especifica uma MTU comum entre as
# partes - MATRIZ e FILIAL
tun-mtu 1500
tun-mtu-extra 32
# Usa a biblioteca lzo para
# compactação dos dados que irão
# trafegar no túnel
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para
# manter a conexão de pé em firewall
# statefull.
ping 15
# Nível de log
verb 3
Agora vamos iniciar a conexão no servidor da matriz executando o comando abaixo:
# openvpn --config /etc/openvpn/matriz.conf -daemon
Para verificar se a interface tun0 foi inicializada com sucesso:
# ifconfig tun0
Para configurar o servidor da filial, repita o processo de download, instalação e configuração exatamente da mesma forma como foi feito na matriz. Em seguida copie a chave criptográfica da matriz para a filial com o seguinte comando:
# scp /etc/openvpn-matriz/chave ip_filial:/etc/openvpn-filial
Por fim, crie o script filial.conf com o conteúdo idêntico ao do arquivo matriz.conf, alterando somente as seguintes linhas:
ifconfig 10.0.0.2 10.0.0.1
# ESCOLHA UMA DAS POSSIBILIDADES ABAIXO NUNCA AS DUAS!!!!
remote 201.43.56.5 (se for IP fixo)
remote domain.com.br (IP dinâmico)
# Entra no diretório onde se encontram
# os arquivos de configuração
cd /etc/openvpn-filial
# ESCOLHA UMA DAS POSSIBILIDADES ABAIXO NUNCA AS DUAS!!!!
remote 201.43.56.5 (se for IP fixo)
remote domain.com.br (IP dinâmico)
# Entra no diretório onde se encontram
# os arquivos de configuração
cd /etc/openvpn-filial
Iniciar a conexão no servidor da filial executando o comando abaixo:
# openvpn --config /etc/openvpn-filial/filial.conf -daemon
Para verificar se a interface tun0 foi carregada com sucesso:
# ifconfig tun0
Na filial, faça o teste com um ping:
$ ping 10.0.0.1