OpenVPN no Linux CentOS 5

Tutorial passo-a-passo de como configurar uma VPN usando OpenVPN com CentOS 5.1 - servidor para servidor.

[ Hits: 70.457 ]

Por: Marco Antonio Varanda em 13/10/2008


Chave de criptografia e arquivos de configuração



4. Criação da chave de criptografia

# cd /etc/openvpn
# openvpn --genkey --secret vpnkey


5. Arquivos de configuração

No servidor da MATRIZ, crie o arquivo /etc/filial.conf com o seguinte conteúdo:

#Módulo de interface tun
dev tun
#IP remoto (da Filial)
Remote 189.aaa.bbb.ccc
#Túnel criado com IP Matriz Filial (nesta ordem)
ifconfig 10.0.0.1 10.0.0.2
push "route 192.168.1.0 255.255.255.0"
# Chave de criptografia
secret /etc/openvpn/vpnkey
#Porta UDP que será usada na VPN
#Usar portas diferentes se tiver mais de uma VPN
#a porta fica a mesma na matriz e na filial
port 5003
#Testa a conexão VPN
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
#Tipos de retorno de erros
#0 - Reporta somente erros fatais
#1 - Poucos erros, mostra erros não fatais de rede
#3 - Mostra erros, bom para operação normal
#9 - Mostra tudo, bom para resolver problemas
verb 3
#Scripts a serem executados para iniciar e parar a VPN
up /etc/openvpn/filial.up
down /etc/openvpn/filial.down

Crie o arquivo /etc/openvpn/filial.up:

#!/bin/sh
echo
echo -n "Criando rotas da rede VPN para a Filial ... "
ip route add 192.168.1.0/24 via 10.0.0.2
echo "OK"

Crie o arquivo /etc/openvpn/filial.down:

#!/bin/sh
echo
echo -n "Removendo rotas da rede VPN para a Filial ... "
ip route del 192.168.1.0/24 via 10.0.0.2
echo "OK"

# chmod 755 /etc/openvpn/filial*
# chmod 644 /etc/openvpn/filial.conf


Edite o arquivo /etc/rc.d/rc.local:

/sbin/sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

No servidor da FILIAL, instale todos os pacotes do item 2 e crie o arquivo /etc/openvpn/matriz.conf similar ao feito no servidor da Matriz.

#Módulo de interface tun
dev tun
#IP remoto (da Matriz)
Remote 201.xxx.yyy.zzz
#Túnel criado com IP Filial Matriz (nesta ordem)
ifconfig 10.0.0.2 10.0.0.1
push "route 192.168.0.0 255.255.255.0"
# Chave de criptografia
secret /etc/openvpn/vpnkey
#Porta UDP que será usada na VPN
#Usar portas diferentes se tiver mais de uma VPN
#a porta fica a mesma na matriz e na filial
port 5003
#Testa a conexão VPN
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
#Tipos de retorno de erros
#0 - Reporta somente erros fatais
#1 - Poucos erros, mostra erros não fatais de rede
#3 - Mostra erros, bom para operação normal
#9 - Mostra tudo, bom para resolver problemas
verb 3
#Scripts a serem executados para iniciar e parar a VPN
up /etc/openvpn/matriz.up
down /etc/openvpn/matriz.down

Crie o arquivo /etc/openvpn/matriz.up:

#!/bin/sh
echo
echo -n "Criando rotas da rede VPN para a Matriz ... "
ip route add 192.168.0.0/24 via 10.0.0.1
echo "OK"

Crie o arquivo /etc/openvpn/matriz.down:

#!/bin/sh
echo
echo -n "Removendo rotas da rede VPN para a Matriz ..."
ip route del 192.168.0.0/24 via 10.0.0.1
echo "OK"

# chmod 755 /etc/openvpn/matriz*
# chmod 644 /etc/openvpn/matriz.conf


Edite o arquivo /etc/rc.d/rc.local:

/sbin/sysctl -w net.ipv4.ip_forward=1
Iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Copie o arquivo de chave de criptografia vpnkey para o servidor da filial em /etc/openvpn.

Se você tem um servidor de arquivos em pelo menos uma das pontas, seria interessante ter o serviço de WINS, que ajuda a localizar nomes netbios na rede. O serviço WINS pode ser instalado em Windows Server ou Samba Server. Também existe o arquivo C:\windows\system32\drivers\etc\hosts que podem ser associados IPs a nomes netbios.

Para que uma estação de um lado "pingue" a estação do outro lado é necessário que os gateways estejam configurados de acordo, ou seja, as estações da Matriz deverão ter como gateway o IP do servidor Linux Matriz 192.168.0.254 e as estações da Filial deverão ter como gateway o IP do servidor Linux Filial 192.168.1.254 - se estiverem usando outro gateway, o pacote de dados vai por um caminho e tenta voltar por outro, e dessa forma não funcionará.

As redes locais da Matriz e da Filial tem que ter IPs de faixas diferentes. Se elas estiverem com IPs na mesma faixa de rede, o roteamento não funcionará, se você quiser acessar um IP fora da sua rede, mas ele está na mesma faixa de IP dela, ele não usará o gateway (não saberá que tem que procurar fora), tenta procurar na sua própria rede e dará erro. Por outro lado, se o IP que você está tentando acessar não pertencer a faixa de IP da sua rede, ele vai tentar "perguntar" ao gateway, que conhecerá o caminho para atingí-lo.

Para iniciar o serviço de VPN execute o seguinte script:

# /etc/init.d/openvpn start

Página anterior    

Páginas do artigo
   1. VPN: Pacotes necessários e instalação
   2. Chave de criptografia e arquivos de configuração
Outros artigos deste autor

VPN PPTP - Instalação entre estações Windows, Dispositivos com Android e CentOS 5.x Server

Leitura recomendada

Cacti - O melhor monitor de link (FreeBSD 6.1)

Softmodem em Linux com dois kernels

VirtualBox no Arch Linux

Asterisk 14.3 + Biblioteca PJSIP

Usando aMSN com plugin Music com suporte ao Juk e Amarok

  
Comentários
[1] Comentário enviado por comfaa em 14/10/2008 - 08:40h

bom artigo ....

no debian, seria do mesmo jeito ??

abraços

[2] Comentário enviado por marco.varanda em 14/10/2008 - 10:13h

Eu não uso o Debian, porém tente instalar os mesmos pacotes com o aptget

Os arquivos de configuração são os mesmos, e a idéia é a mesma.

O que muda realmente é a forma de instalar os pacotes.


[3] Comentário enviado por flaviocc em 14/10/2008 - 13:24h

Olá marco.varanda,
muito bom o artigo!
mas estou tendo um problema.
depois de um certo tempo de funcionamento do túnel (umas 3 ou 4 horas, talvez um pouco mais), eu perco a conexão do tunel vpn.
e não basta reiniciar o servidor e o cliente, eu tenho que trocar as portas e reiniciar o cliente e o servidor, daí volta a funcionar.
Sabe o que pode estar ocasionando isso?

[4] Comentário enviado por marco.varanda em 14/10/2008 - 15:28h

Olá Flavio


Muito estranho esse problema.


Qual tipo de conexão você tem contratado, residencial ou corporativo ?

Pergunto isso pois aqui em São Paulo a NET/Virtua faz bloqueios de portas para links residenciais,
as portas abaixo de 1024 (para conexões de entrada) estão todas bloqueadas pelo firewall deles.

Isso existe para que empresas contratem um plano bem mais caro e que tem velocidades menores

Aconteceu comigo, com um link de 8MB e o serviço SSH, eu coloquei para rodar na porta 2222 e
depois de uma semana eles bloquearam essa porta também

Tornei a mudar, e eles não bloquearam até agora (quase um ano)

Como existem 65535 portas possíveis, acho difícil eles bloquearem todas, mesmo porque você
simplesmente perderia o link (nada mais funcionaria).

Use também o "nmap seu_IP_remoto" para visualizar as portas abertas/filtradas antes e depois
de sua VPN funcionar.

A ferramenta OpenVPN funciona e estou usando em meu dia-a-dia mas com link corporativo e IP fixo

Marco Varanda



[5] Comentário enviado por masrl em 10/03/2010 - 13:03h

Como faço pra configurar o servidor em mais de uma filial?

[6] Comentário enviado por mvaranda em 10/03/2010 - 16:37h

Olá MASRL

você pode usar outro conjunto de chaves (vpnkey2)

mudar a porta de conexão

montar outro tunel com IPs diferentes do 10.0.0.x (por exemplo 11.0.0.1)
mudar os IPs das redes (já usamos o 192.168.0.x e 192.168.1.x) então use 192.168.2.x para a filial2

replicar os arquivos de configurações, com as alterações acima e outro nome (exemplo filial2)

é bem similar, mas tem que mudar os IPs e portas para não darem conflito

[7] Comentário enviado por Neo_X em 06/11/2012 - 14:49h

Olá Marcos,

Tem como monitorar as VPN através de gráficos?


[9] Comentário enviado por Neo_X em 14/11/2012 - 11:11h

Not Found

The requested URL /redhat/el5/en/i386/rpmforge/RPMS/lzo2-2.02-3.el5.rf.i386.rpm was not found on this server.
Apache/2.2.14 Server at apt.sw.be Port 80

[10] Comentário enviado por bruno_veiga em 12/12/2012 - 15:56h

fiz certinho deu tudo ok, conectei 3 clientes tranquilo
porem não consigo fazer que os clientes se comuniquem entre eles


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts