terça-feira, 18 de janeiro de 2011

VPN Site to Site, Fácil to Fácil - Linux

Para montar uma VPN (Virtual Private Network) Site to Site em Linux iremos utilizar o pacote openvpn

:: Cenário

Matriz:
    Rede.: 192.168.0.0/24
    GW...: 192.168.0.254

Filial:
    Rede.: 192.168.1.0/24
    GW...: 192.168.1.254

(192.168.0.254) Matriz (172.16.0.1) <----> Internet <----> (172.16.0.2) Filial (192.168.1.254)


:: Instalação
#  apt-get install openvpn openssl lzop

:: Configuração MATRIZ
Iremos criar os diretórios e arquivos necessários para a configuração da Matriz (Servidor)

--> Criando o diretório necessário
# mkdir /etc/vpn-server

--> copiando arquivo de Sample para Iniciar a VPN
# cp /usr/share/doc/openvpn/examples/sample-config-files/openvpn-startup.sh /etc/vpn-server

Obs.: Existem outros arquivos neste diretório que podem ser utilizados como base de configuração

--> Criando o arquivo secret.key (Chave Criptografia)
# openvpn --genkey --secret /etc/vpn-server/static.key

--> Criando arquivo de configuração para o server
# cd /etc/vpn-server
# vim server.conf

------ Conteúdo Arquivo server.conf ------
# nome do device
dev tun

# IPs do tunnel ifconfig <matriz> <filial>
ifconfig 172.16.0.1 172.16.0.2

# diretorio de configuracao
cd /etc/vpn-server

# Chave Criptografia
secret static.key

# Porta de Comunicacao - Padrão 1194
port 50321

# Comprensao
comp-lzo

# Usuario e grupo utilizado
user nobody
group nogroup

# Manter conexão com ping
ping 10

# Opcoes de Log
status /var/log/openvpn/status.log
log-append /var/log/openvpn/server.log
verb 3
mute 20
------ Final Arquivo server.conf ------

--> Alterando o arquivo openvpn-startup.sh
# vim openvpn-startup.sh

------ Conteúdo Arquivo openvpn-startup.sh ------
[...]
dir=/etc/vpn-server
[...]
modprobe tun
[...]
openvpn --cd $dir --daemon --config server.conf
[...]
route add 192.168.1.0/24 gw 172.16.0.2
------ Final Arquivo openvpn-startup.sh ------

--> Iniciando o Servidor
# /etc/vpn-server/openvpn-startup.sh

--> Verifique se a Interface tun está ok
# ifconfig
tun0      Link encap:Não Especificado  Endereço de HW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet end.: 172.16.0.1  P-a-P:172.16.0.2  Masc:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Métrica:1
          RX packets:59753 errors:0 dropped:0 overruns:0 frame:0
          TX packets:388188 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:100
          RX bytes:4770589 (4.5 MiB)  TX bytes:201431331 (192.0 MiB)


:: Configuração FILIAL
Iremos criar os diretórios e arquivos necessários para a configuração da Filial(Cliente)

--> Criando o diretório necessário
# mkdir /etc/vpn-client

--> copiando arquivo de Sample para Iniciar a VPN
# cp /usr/share/doc/openvpn/examples/sample-config-files/openvpn-startup.sh /etc/vpn-client

--> Copie o arquivo secret.key do Servidor para o Client
Obs.: Utilize o WinSCP ou FTP

--> Criando arquivo de configuração para o client
# cd /etc/vpn-client
# vim client.conf

------ Conteúdo Arquivo client.conf ------
# nome do device
dev tun

# IPs do tunnel ifconfig <filial> <matriz>
ifconfig 172.16.0.2 172.16.0.1

# IP Quente do Servidor para conexão
remote <ip-servidor>

# diretorio de configuracao
cd /etc/vpn-client

# Chave Criptografia
secret static.key

# Porta de Comunicacao - Padrão 1194
port 50321

# Comprensao
comp-lzo

# Usuario e grupo utilizado
user nobody
group nogroup

# Manter conexão e tunel
ping 10
persist-tun
persist-key

# Opcoes de Log
status /var/log/openvpn/status.log
log-append /var/log/openvpn/client.log
verb 3
------ Final Arquivo server.conf ------

--> Alterando o arquivo openvpn-startup.sh
# vim openvpn-startup.sh

------ Conteúdo Arquivo openvpn-startup.sh ------
[...]
dir=/etc/vpn-client
[...]
modprobe tun
[...]
openvpn --cd $dir --daemon --config client.conf
[...]
route add 192.168.0.0/24 gw 172.16.0.1
------ Final Arquivo openvpn-startup.sh ------

--> Iniciando o Client
# /etc/vpn-client/openvpn-startup.sh

--> Verifique se a Interface tun está ok
# ifconfig
tun0      Link encap:Não Especificado  Endereço de HW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet end.: 172.16.0.2  P-a-P:172.16.0.1  Masc:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Métrica:1
          RX packets:103429 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64598 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:100
          RX bytes:110207565 (105.1 MiB)  TX bytes:5053226 (4.8 MiB)


:: Testes
Server
    Ping na interface de roteamento do Client: ping 172.16.0.2
    Ping na interface de um Cliente Interno: ping 192.168.1.10


Client
    Ping na interface de roteamento do Server: ping 172.16.0.1
    Ping na interface de um client Interno: ping 192.168.0.10

Ok. Temos uma VPN Site to Site funfando legal. Não esqueça de configurar os Firewall através do iptables

Um comentário:

Unknown disse...

Boa tarde Robson,

tenho uma pergunta, para fazer essa conexão utilizando a ADSL eu preciso configurar no modo bridge?

obrigado.