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:
Boa tarde Robson,
tenho uma pergunta, para fazer essa conexão utilizando a ADSL eu preciso configurar no modo bridge?
obrigado.
Postar um comentário