OpenVPN em Linux
Neste artigo procurarei mostrar como se monta uma VPN - Virtual Private Network - no Linux, independente de distribuição, de uma maneira simples e didática usando o OpenVPN.
Parte 5: Configurar OpenVPN - parte 2
Acesse o diretório /etc/openvpn e dê o comando "ls", você vai notar que já existe um link simbólico que nós mesmos criamos anteriormente com o nome de "certificados", então ótimo, agora vamos criar o arquivo de configuração com o comando:
# vi pilao51.conf
NOTA: O nome aqui será o mesmo que você usou para criar os certificados e chaves anteriormente. Com o arquivo aberto, digite como abaixo:
# vi pilao51.conf
NOTA: O nome aqui será o mesmo que você usou para criar os certificados e chaves anteriormente. Com o arquivo aberto, digite como abaixo:
# Exemplo de configuração do OpenVPN
# para o servidor usando o modo SSL/TLS e chaves RSA.
#
# '#' ou ';' são comentários.
#
# OBS: Tradução livre do arquivo
# sample-config-files/tls-office.conf
# no diretório de sources do OpenVPN.
# Usar como interface o driver tun.
dev tun
# 10.10.0.1 é o nosso IP local (Servidor).
# 10.10.0.2 é o IP remoto (Cliente).
ifconfig 10.10.0.1 10.10.0.2
# Esses IPs não precisam ser exatamente os mesmos da rede
# interna como 192.198.0.1.ou 192.168.1.10
# É até melhor manter-se esses mesmos
# Diretório onde estão todas as configurações
cd /etc/openvpn
# O OpenVPN irá executar esse script
# quando o túnel estiver carregado.
# Ideal para setar as rotas
up ./pilao51.up
# No modo SSL/TLS a matriz irá
# assumir a parte do servidor,
# e a filial será o cliente.
tls-server
# Parâmetros Diffie-Hellman (apenas no servidor)
dh dh.pem
# Certificado da CA
ca my-ca.crt
# Certificado público da Matriz
cert pilao51.crt
# Certificado privado da Matriz
key pilao51.key
# OpenVPN usa a porta 5000/UDP por padrão.
# Cada túnel do OpenVPN deve usar
# uma porta diferente.
# O padrão é a porta 5000
; port 5000
# Mudar UID e GID para
# "nobody" depois de iniciado
# para uma segurança extra.
; user nobody
; group nobody
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.
ping 15
# Nível dos logs.
# 0 -- silencioso, exceto por erros fatais.
# 1 -- quase silencioso, mas mostra erros não fatais da rede.
# 3 -- médio, ideal para uso no dia-a-dia
# 9 -- barulhento, ideal para solução de problemas
verb 3
# para o servidor usando o modo SSL/TLS e chaves RSA.
#
# '#' ou ';' são comentários.
#
# OBS: Tradução livre do arquivo
# sample-config-files/tls-office.conf
# no diretório de sources do OpenVPN.
# Usar como interface o driver tun.
dev tun
# 10.10.0.1 é o nosso IP local (Servidor).
# 10.10.0.2 é o IP remoto (Cliente).
ifconfig 10.10.0.1 10.10.0.2
# Esses IPs não precisam ser exatamente os mesmos da rede
# interna como 192.198.0.1.ou 192.168.1.10
# É até melhor manter-se esses mesmos
# Diretório onde estão todas as configurações
cd /etc/openvpn
# O OpenVPN irá executar esse script
# quando o túnel estiver carregado.
# Ideal para setar as rotas
up ./pilao51.up
# No modo SSL/TLS a matriz irá
# assumir a parte do servidor,
# e a filial será o cliente.
tls-server
# Parâmetros Diffie-Hellman (apenas no servidor)
dh dh.pem
# Certificado da CA
ca my-ca.crt
# Certificado público da Matriz
cert pilao51.crt
# Certificado privado da Matriz
key pilao51.key
# OpenVPN usa a porta 5000/UDP por padrão.
# Cada túnel do OpenVPN deve usar
# uma porta diferente.
# O padrão é a porta 5000
; port 5000
# Mudar UID e GID para
# "nobody" depois de iniciado
# para uma segurança extra.
; user nobody
; group nobody
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.
ping 15
# Nível dos logs.
# 0 -- silencioso, exceto por erros fatais.
# 1 -- quase silencioso, mas mostra erros não fatais da rede.
# 3 -- médio, ideal para uso no dia-a-dia
# 9 -- barulhento, ideal para solução de problemas
verb 3
Salve o mesmo com o comando :wq - Note como explicado acima que os IPs 10.10.0.1 e 10.10.0.2 são virtuais, específicos para a VPN.
Agora crie o arquivo "pilao51.up", ele está constando no nosso arquivo de configuração e serve para especificar as rotas do IP. Claro, crie ele dentro de /etc/openvpn.
# vi pilao51.up
E digite os comandos abaixo:
#!/bin/bash
route add -net 192.168.0.0 netmask 255.255.255.0 gw $5
route add -net 192.168.0.0 netmask 255.255.255.0 gw $5
Salve-o com o comando :wq - Note que esse contém o IP da rede interna com a classe aqui definida como 192.168.0.0 para IPs de 192.168.0.1 a 192.168.0.254. Depois de salvo, execute o comando:
# chmod +x pilao51.up
Isso vai torná-lo executável.
Ótimo, já temos os arquivo para o servidor pronto, é servidor pois é ele que vai ceder o número IP WAN ou da internet, que pode ser ADSL speedy, A cabo, etc.
Agora então executamos o openVPN. Quando o compilamos ele não cria um daemon de inicialização, como aqueles com {start:stop:restart:status}, então vamos iniciá-lo com o comando abaixo:
OBS: No final deste tutorial passarei um script que contém as instruções para se tentar iniciar o openVPN da maneira start e stop.
# /usr/local/sbin/openvpn --config /etc/openvpn/pilao51.conf --daemon
Se correr tudo bem e voltar para o prompt sem nenhuma mensagem, daí então executamos um "tail /var/log/messages" para ver o que aconteceu, é para aparecer mais ou menos isto:
OpenVPN 1.4.3 i686-pc-linux-gnu [SSL] built on Oct 13 2003
UDP link local (bound): [undef]:5000
UDP link remote: [undef]
Diffie-Hellman initialized with 1024 bit key
Data Channel MTU parms [ MUITOS PARAMETROS ]
Control Channel MTU parms [ MUITOS PARAMETROS ]
TUN/TAP device tun0 opened
/sbin/ifconfig tun0 10.1.0.1 pointopoint 10.1.0.2 mtu 1259
/pilao51.up tun0 1259 1300 10.10.0.1 10.10.0.2
Com isto o servidor já está pronto para receber o cliente.
Para parar o serviço, execute "ps ax" e procure pela linha:
/usr/local/sbin/openvpn --config /etc/openvpn/pilao51.conf --daemon
veja seu pid e execute:
# kill [número do pid]
Jul 3 10:36:34 ADES openvpn[2647]: OpenVPN 2.0.7 i686-pc-linux [SSL] [LZO] built on Jul 3 2006
Jul 3 10:36:34 ADES openvpn[2647]: IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Jul 3 10:36:34 ADES openvpn[2647]: WARNING: --ping should normally be used with --ping-restart or --ping-exit
Jul 3 10:36:34 ADES openvpn[2647]: Cannot open dh.pem for DH parameters: error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file
Jul 3 10:36:34 ADES openvpn[2647]: Exiting
Obrigado
Rafael