quinta-feira, 9 de fevereiro de 2012

Configurando uma VPN entre duas máquinas Linux


A configuração da VPN entre duas máquinas Linux é extrememante simples, com apenas algumas configurações que são praticamente iguais no servidor da Filial quanto no servidor da Matriz.

Essa conexão que faremos aqui, será feita através do OpenVPN, um software que, na minha opnião, simplifica muito a instalação e configuração de uma VPN.

Para um melhor entendimento, consulte estes posts:


Conectando a uma rede VPN pelo Windows 7

Criar um servidor de VPN no Windows 7 ou Windows Server 2008


Configurando a VPN na Matriz

No exemplo, estou utilizando criptografia, é possível não utilizá-la, mas fica um pouco sem sentido pois a principal função da VPN é criar um túnel seguro.
Para não utilizar a criptografia, basta comentar as linhas que pussuem configurações de criptografia.

para começão execute os seguintes comandos no servidor da matriz:

# apt-get install openvpn

Instalado o OpenVPN, vamos gerar a chave de criptografia.
# openvpn --genkey --secret /etc/openvpn/chave

Foi gerada uma chave de criptografia com o nome de "chave" (pode ser qualquer nome de arquivo) dentro do diretório /etc/openvpn.

# cat /etc/openvpn/chave


Só para visualizarmos o conteúdo da chave que geramos.
Agora crie o arquivo de configuração da matriz:

# touch /etc/openvpn/matriz.conf
Crie esse arquivo adicione o seguinte conteúdo:



dev tun

# 10.0.1.1 ip da matriz
# 10.0.1.2 ip remoto, ou seja, o ip da filial

ifconfig 10.0.1.1 10.0.1.2

# Indica que esse túnel possui uma chave de criptografia

secret /etc/openvpn/chave

# 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
# Se omitido, será criada a conexão na porta 5000

port 5000


# Usuário que rodará o daemon do OpenVPN


user nobody


# Usa a biblioteca lzo


comp-lzo

# Mantem a conexão enviando pings


# de 15 em 15 segundos.

ping 15


# Nível de log


verb 3

Em seguida, vamos iniciar a conexão no servidor, faltando apenas configurar a filial. Execute o seguinte comando no servidor da Matriz:

# openvpn --config /etc/openvpn/matriz.conf --daemon
 
# ifconfig tun0
tun0      Link encap: Não Especificado
             inet ind:10.0.1.1  P-a-P:10.0.1.2  Mask:255.255.255.255
             UP POINTOPOINT RUNNING NOARP MULTICAST   MTU:1500  Métrica:1
             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:100
             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


Se aparecer algo assim ou parecido, o túnel na Matriz já está pronto e a espera da conexão da filial.


Configurando a VPN na Filial

A parte da instalação na filial é exatamente igual a da Matriz, já na parte de configuração, não muda muita coisa também, pois o maior trabalho é simplesmente copiar a chave que geramos na Matriz por um canal seguro até a filial.

Execute os seguintes comandos no servidor da filial:

# apt-get install openvpn
Copie a chave gerada na matriz para a filial, e em seguida crie o arquivo de configuração chamado filial.conf:


# touch /etc/openvpn/filial.conf

Crie esse arquivo com o seguinte conteúdo:

dev tun

# 10.0.1.1 ip da matriz

# 10.0.1.2 ip remoto, ou seja, o ip da filial

ifconfig 10.0.1.1 10.0.1.2

# Aqui vai o ip da filial na rede ou internet

remote 200.207.59.175

# Indica que esse túnel possui uma chave de criptografia

secret /etc/openvpn/chave

# 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
# Se omitido, será criada a conexão na porta 5000

port 5000

# Usuário que rodará o daemon do OpenVPN

user nobody

# Usa a biblioteca lzo

comp-lzo

# Mantem a conexão enviando pings
# de 15 em 15 segundos.

ping 15

# Nível de log

verb 3



Inicie a conexão na filial com o seguinte comando:

# openvpn --config /etc/openvpn/filial.conf --daemon

# ifconfig tun0

tun0      Link encap:Não Especificado
             inet addr:10.0.1.2  P-a-P:10.0.1.1  Mask:255.255.255.255
             UP POINTOPOINT RUNNING NOARP MULTICAST    MTU:1255  Métrica:1
             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:100
             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Ok! Se aparecer algo assim, sua VPN já está rodando. Teste pingando de uma ponta a outra:

# ping 10.0.0.1

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=63 time=11.9 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=63 time=6.09 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=63 time=5.93 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=63 time=8.15 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=63 time=6.19 ms

Se aparecer algo assim, sua VPN já esta funcionando. Agora só falta adicionarmos as rotas para as redes internas se enxergarem. 


Adicionando as rotas

NOTA: Antes de adicionarmos as rotas, é necessário ativar o roteamento no kernel em ambas as pontas (Matriz e Filial). Execute os seguintes comandos na matriz e filial:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Para adicionar a rota com destino a rede da Filial, execute de dentro do servidor da Matriz o seguinte comando:

# route add -net 192.168.2.0/24 gw 10.0.1.2

Para adicionar a rota com destino a rede da Matriz, execute de dentro do servidor da Filial o seguinte comando:

# route add -net 192.168.1.0/24 gw 10.0.1.1

Bom, agora é só testar. Tente pingar de dentro de uma máquina da LAN da Matriz com destino a LAN da Filial. Vale lembrar também que temos que colocar toda a seqüência de comandos acima no "rc.local" de sua distro, para que a mesma carregue as configurações ao iniciar o sistema operacional.


Baseado no artigo de Guilherme Rezende de Almeida

Nenhum comentário:

Postar um comentário

DropBox