VPN no Linux com OpenVPN

Started by _Dr4k0_, 01 de October , 2006, 11:47:26 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

_Dr4k0_

VPN no Linux com OpenVPN

Antes de mais nada vamos vamos ver se o seu kernel está compilado com o driver TUN/TAP necessário para o funcionamento de nossa VPN.


[li] Network device support
ARCnet devices --->
< > Dummy net driver support
< > Bonding driver support
< > EQL (serial line load balancing) support
<*> Universal TUN/TAP device driver support
< > Ethertap network tap (OBSOLETE)
< > General Instruments Surfboard 1000
Ethernet (10 or 100Mbit) --->
Ethernet (1000 Mbit) --->
[ ] FDDI driver support
[ ] HIPPI driver support (EXPERIMENTAL)
<*> PPP (point-to-point protocol) support
< > SLIP (serial line) support
Wireless LAN (non-hamradio) --->
Token Ring devices --->
[ ] Fibre Channel driver support
< > Red Creek Hardware VPN (EXPERIMENTAL)
< > Traffic Shaper (EXPERIMENTAL)
Wan interfaces --->


Não irei falar sobre a compilação de um kernel aqui porque não está dentro do nosso conteudo.
Caso o driver esteja como modulo no kernel habilite ele com o seguinte comando:

# modprobe tun

Agora nos resta baixar os pacotes para a instalação.

http://openvpn.net/download.html - baixe aqui o seu OpenVPN
http://www.oberhumer.com/opensource/lzo/ - uma biblioteca para a compressão de dados em tempo real.

instale os pacotes como os seguintes comandos...


$ tar -vzxf lzo-1.08.tar.gz
$ cd lzo-1.08
$ ./configure
$ make
$ su
# make install


$ tar -vzxf openvpn-1.5.0.tar.gz
$ cd openvpn-1.5.0
$ ./configure
$ make
$ su
# make install


Caso você utilize gentoo você pode instalar esses pacotes com o portage (emerge) ;-)

Agora que ja temos o OpenVPN instalado no nosso sistema com a suporte a bibliote de compressão de dados vamos as configurações.

O openVPN suporta três tipos de criptografias. Criptografia com chaves estáticas e no modo TLS do qual as chaves são trocadas periodicamente. Criptografia com chaves estáticas, e por último Criptografia nenhuma, apenas o túnel . Nesse nosso exemplo vamos usar a criptografia de chaves estáticas.

Configuração do servidor:

1- vamos criar o diretório do openvpn onde ficarão todos os arquivos de configuração, isso é caso o diretório não exista.
# mkdir /etc/openvpn

2- VAmos criar uma chave de criptografia com o nome 'chave' (pode ser qualquer nome)
# openvpn --genkey --secret /etc/openvpn/chave
Você pode visualizar o conteudo da chave com o comando 'cat'

3- Vamos criar o arquivo de configuração do servidor. Utilize seu editor de texto de sua preferência.
# mcedit /etc/openvpn/server.conf
# Usar como interface o driver TUN
dev tun
# 10.0.0.1 ip que será assumido no servidor
# 10.0.0.2 ip remoto, ou seja, esse será o ip do cliente
ifconfig 10.0.0.1 10.0.0.2
# Entra no diretório onde se encontram os arquivos de configuração
cd /etc/openvpn
# Indica que esse túnel possui uma chave de criptografia
secret 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
port 5000
# Usuário que rodará o daemon do OpenVPN
user root
# Grupo que rodará o daemon do OpenVPN
group root
Usa a biblioteca lzo
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão de pé caso você esteja utilizando
# um firewall statefull.
ping 15
# Nível de log
verb 3

4- Agora vamos iniciar o daemon no servidor.
# openvpn --config /etc/openvpn/server.conf --daemon
Verifique se a conexão foi aberta.
# ifconfig

tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.1 P-t-P:10.0.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1255 Metric:1
RX packets:1383257 errors:0 dropped:0 overruns:0 frame:0
TX packets:1144968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (79.0 Mb) TX bytes:383951667 (366.1 Mb)

Se aparecer algo parecido na saida do ifconfig como o exemplo acima significa que o server está ok, faltando a configuração da conexão do cliente.

Configuração do cliente:

1- Crie o diretório openvpn caso não exista.
# mkdir/etc/openvpn

2- Copie a chave gerada no server de algum modo seguro para o computador client. exemplo
# scp /etc/openvpn/chave ip_client:/etc/openvpn

3- Crie o arquivo de configuração do cliente chamado de client.conf
# mcedit /etc/openvpn/client.conf
# Usar como interface o driver TUN
dev tun
# 10.0.0.1 ip que será assumido no servidor
# 10.0.0.2 ip remoto, ou seja, esse será o ip no cliente
ifconfig 10.0.0.2 10.0.0.1
# Indica onde está o ip do servidor (essa é a única linha que acrescentamos
# no arquivo de configuração do cliente), o resto é tudo igual.
remote 200.200.200.200
# Entra no diretório onde se encontram os arquivos de configuração
cd /etc/openvpn
# Indica que esse túnel possui uma chave de criptografia
secret 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
port 5000
# Usuário que rodará o daemon do OpenVPN
user root
# Grupo que rodará o daemon do OpenVPN
group root
# Usa a biblioteca lzo
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão de pé em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.
ping 15
# Nível de log
verb 3

Agora é só iniciar a conexão com o seguinte comando

# openvpn --config /etc/openvpn/client.conf --daemon
# ifconfig
tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.2 P-t-P:10.0.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1255 Metric:1
RX packets:1383257 errors:0 dropped:0 overruns:0 frame:0
TX packets:1144968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (79.0 Mb) TX bytes:383951667 (366.1 Mb)

Agora fassa um teste pingando de um host para o outro:

# ping -c 4 10.0.0.1
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

Se o ping for respondido e aparecer algo como aqui em cima é sinal que sua VPN já está em funcionamento faltando só adicionarmos as rotas para as redes internas se enxergarem (isso é caso você tenha uma rede em cada ponta)

Adicionando rotas:

NOTA: Antes de adicionarmos as rotas, é necessário ativar o roteamento no kernel em ambas as pontas (Server e Client). Execute os seguintes comandos no server e no client:

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

Para adicionar a rota com destino a rede do server, execute o seguinte comando dentro do client:

# route add -net 192.168.2.0/24 gw 10.0.0.2

Para adicionar a rota com destino a rede da Client, execute o seguinte comando dentro do server:

# route add -net 192.168.1.0/24 gw 10.0.0.1

Bem agora é só testar. tente píngar de dentro de uma máquina da LAN do server com destino a LAN do client.

Pronto agora se divirta!!!
qualquer dúvida é só postar e um abraço pra todos!!!

Autor:Ale-Spy
100% Livre!!!Livre para escolher o que há de melhor no Windows e Linux. Livre de preconceito direto ou inverso!
Adote essa filosofia e tenha mais chance de sucesso profissional.

insanity

Muito bom drako, parabens ;)


ate mais