VPN com openVPN no Slackware 11
Este artigo tem como objetivo configurar uma VPN site-to-site em 2 servidores Slackware e mostrar como uma VPN não é um bicho de sete cabeças.
Parte 2: Configuração
Precisamos criar a pasta das confs, pois ela não é criada por automático:
# mkdir /etc/openvpn
Depois de criada a pasta devemos gerar uma chave que será usada na criptografia para abrir o túnel:
# openvpn --genkey-secret /etc/openvpn/chave
Agora devemos criar o arquivo de configuração, dentro da pasta /etc/openvpn crie um arquivo chamado servidor1.conf, edite ele e dentro você irá colocar as linhas abaixo:
# mkdir /etc/openvpn
Depois de criada a pasta devemos gerar uma chave que será usada na criptografia para abrir o túnel:
# openvpn --genkey-secret /etc/openvpn/chave
Agora devemos criar o arquivo de configuração, dentro da pasta /etc/openvpn crie um arquivo chamado servidor1.conf, edite ele e dentro você irá colocar as linhas abaixo:
dev tun # irá usar a interface tun ( ex: tun0, tun1, tun2, ...)
ifconfig 1.0.0.1 1.0.0.2 # irá setar o IP do túnel com o do servidor1 de 1.0.0.1 e do servidor2 1.0.0.2
cd /etc/openvpn # irá definir a pasta de configuração do OpenVPN
secret chave # chave de criptografia
port 5000 # porta utilizada para a comunicação do túnel
comp-lzo # Usa a biblioteca lzo
ping 15 # pinga a cada 15 segundos para manter a conexão
verb 3 # nível de log
ifconfig 1.0.0.1 1.0.0.2 # irá setar o IP do túnel com o do servidor1 de 1.0.0.1 e do servidor2 1.0.0.2
cd /etc/openvpn # irá definir a pasta de configuração do OpenVPN
secret chave # chave de criptografia
port 5000 # porta utilizada para a comunicação do túnel
comp-lzo # Usa a biblioteca lzo
ping 15 # pinga a cada 15 segundos para manter a conexão
verb 3 # nível de log
Pronto, salve o arquivo.
Para facilitar a vida de muitos utilizaremos um script para não ter de subir o daemon do openVPN na mão toda hora.
Crie um arquivo dentro de /etc/rc.d/ chamado rc.vpn:
# cd /etc/rc.d
# touch rc.vpn
Depois deixe ele executável:
# chmod +x rc.vpn
#!/bin/bash
IP_REMOTO="200.x.x.x" # IP válido do servidor2
IP_VPN_REMOTO="1.0.0.2"
IP_REDE_REMOTA="192.168.0.0"
MASQ_REDE_REMOTA="255.255.255.0"
iptables -I INPUT -j ACCEPT -p udp -s $IP_REMOTO --dport 5000
openvpn --config /etc/openvpn/server.conf --daemon
# Permitir trafego pela VPN
iptables -I FORWARD -j ACCEPT -i tun0
iptables -I FORWARD -j ACCEPT -o tun0
# Adicionando as rotas da VPN
route add -net $IP_REDE_REMOTA netmask $MASQ_REDE_REMOTA gw $IP_VPN_REMOTO.
IP_REMOTO="200.x.x.x" # IP válido do servidor2
IP_VPN_REMOTO="1.0.0.2"
IP_REDE_REMOTA="192.168.0.0"
MASQ_REDE_REMOTA="255.255.255.0"
iptables -I INPUT -j ACCEPT -p udp -s $IP_REMOTO --dport 5000
openvpn --config /etc/openvpn/server.conf --daemon
# Permitir trafego pela VPN
iptables -I FORWARD -j ACCEPT -i tun0
iptables -I FORWARD -j ACCEPT -o tun0
# Adicionando as rotas da VPN
route add -net $IP_REDE_REMOTA netmask $MASQ_REDE_REMOTA gw $IP_VPN_REMOTO.
Agora vamos configurar a filial.
Faça o mesmo procedimento no servidor da filial, se preferir pode até copiar as confs para lá, pois mudarão apenas algumas linhas. A chave que foi gerada deve ser a mesma, portanto copie do servidor da Matriz para o da Filial.
Crie o arquivo /etc/openvpn/servidor2.conf, para quem copiou a conf apenas renomeie:
dev tun
ifconfig 1.0.0.2 1.0.0.1 # Aqui fica IP do servidor2 e o IP do servidor1
cd /etc/openvpn
remote 200.x.x.x # Devemos colocar aqui o IP válido aonde fica o servidor1
secret chave # chave de criptografia deve ser a mesma que no servidor1
port 5000
comp-lzo
ping 15
verb 3
ifconfig 1.0.0.2 1.0.0.1 # Aqui fica IP do servidor2 e o IP do servidor1
cd /etc/openvpn
remote 200.x.x.x # Devemos colocar aqui o IP válido aonde fica o servidor1
secret chave # chave de criptografia deve ser a mesma que no servidor1
port 5000
comp-lzo
ping 15
verb 3
Vamos ao script:
#!/bin/bash
IP_REMOTO="200.x.x.x" # ip válido do Servidor1
IP_VPN_REMOTO="1.0.0.1"
IP_REDE_REMOTA="192.168.1.0"
MASQ_REDE_REMOTA="255.255.255.0"
iptables -I INPUT -j ACCEPT -p udp -s $IP_REMOTO --dport 5000
openvpn --config /etc/openvpn/server.conf --daemon
# Permitir trafego pela VPN
iptables -I FORWARD -j ACCEPT -i tun0
iptables -I FORWARD -j ACCEPT -o tun0
# Adicionando as rotas da VPN
route add -net $IP_REDE_REMOTA netmask $MASQ_REDE_REMOTA gw $IP_VPN_REMOTO.
IP_REMOTO="200.x.x.x" # ip válido do Servidor1
IP_VPN_REMOTO="1.0.0.1"
IP_REDE_REMOTA="192.168.1.0"
MASQ_REDE_REMOTA="255.255.255.0"
iptables -I INPUT -j ACCEPT -p udp -s $IP_REMOTO --dport 5000
openvpn --config /etc/openvpn/server.conf --daemon
# Permitir trafego pela VPN
iptables -I FORWARD -j ACCEPT -i tun0
iptables -I FORWARD -j ACCEPT -o tun0
# Adicionando as rotas da VPN
route add -net $IP_REDE_REMOTA netmask $MASQ_REDE_REMOTA gw $IP_VPN_REMOTO.
Agora é só rodar os scripts nos servidores e pronto, está criada a VPN.