VPN com OpenVPN

Para começar a fazer a VPN necessitamos fazer configurações de rede e levantar as redes que teremos na VPN.

Levantar as redes

Rede interna: 172.16.22.0/24, 10.0.0.0/8

Rede VPN: 172.16.23.0/24

Habilitar o ip_forward, para que os pacotes possam passar pelas interfaces

$ echo 1 > /proc/sys/net/ipv4/ip_forward # Isso habilita o forward, mas se rebootar volta para 0

Vamos deixar o ip_forward automático no boot

$ vi /etc/sysctl.conf
..
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Agora que ambiente esta preparado vamos para instalação do OpenVPN
$ aptitude install openvpn

Copiando os scripts que vão facilitar nossa vidas e muito
$ cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Configurando as variáveis para criação das chaves
$ cd /etc/openvpn/easy-rsa

No arquivo vars vamos apenas trocas essas variáveis, use de acordo queira, se a cidade for São Paulo use SaoPaulo
$ vi vars

# These are the default values for fields
# which will be placed in the certificate.
# Don’t leave any of these fields blank.
export KEY_COUNTRY=”BR”
export KEY_PROVINCE=”SP”
export KEY_CITY=”Cerquilho”
export KEY_ORG=”Laner”
export KEY_EMAIL=”alex@laner.net.br”

Criando diretórios onde vamos colocar as chaves
$ mkdir /etc/openvpn/easy-rsa/keys

Agora vamos criar as chaves do servidor
$ cd /etc/openvpn/easy-rsa
$ . /vars
$ ./clean-all
$ mv clean-all naousar.clean-all  # Esse comando apaga todas as chaves, então não vamos usar ele novamente e fazendo isso evita problemas
$ ./build-ca
$ ./build-key-server server
$ ./build-dh

Criando as chaves dos usuários
$ cd /etc/openvpn/easy-rsa
$ . ./vars
$ ./build-key alexlaner
$ ./buid-key rootsh

Configurando IPs para cada usuário da VPN
$ mkdir /etc/openvpn/ccd
$ vi /etc/openvpn/ccd/alexlaner
ifconfig-push 172.16.23.2 255.255.255.0
$ vi /etc/openvpn/ccd/rootsh
ifconfig-push 172.16.23.3 255.255.255.0
Agora vamos configurar o servidor
$ vi /etc/openvpn/server.conf

#
#======================================================================
# CONFIGURACAO OPENVPN – 20110219 – alex@laner.net.br
#======================================================================
#
# Ip do Servidor
#local
# Porta que iremos escutar
port 1194
# Protocolo que iremos usar
;proto tcp
proto udp
# Dispositivo, para usar maquinas windows e necessario usar tap.
dev tap
# Chaves CA e do servidor.
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key  # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
# Rede que iremos disponibilizar
server 172.16.23.0 255.255.255.0
# Arquivo que armazena o ip e o cliente
ifconfig-pool-persist ipp.txt
# Rotas que vamos passar
push “route 172.16.22.0 255.255.255.0”
push “route 10.0.0.0 255.0.0.0”
# Diretorio onde abriga as configuracoes dos clientes, como rotas, ips.
client-config-dir ccd
;learn-address ./script
;push “redirect-gateway”
;push “dhcp-option DNS 10.8.0.1”
;push “dhcp-option WINS 10.8.0.1”
# Essa tag libera comunicacao entre os clientes
client-to-client
# Essa tag indica se os clientes podem usar a mesma chave
;duplicate-cn
# Checa a vida do cliente
keepalive 10 120
# TLS
;tls-auth ta.key 0 # This file is secret
# Criptografia, estamos usando AES-256
cipher AES-256-CBC   # AES
# Compressao LZO
comp-lzo
# Numero maximo de clientes, nao vamos setar isso.
;max-clients 100
# Usuario e grupo que vao rodar o OpenVPN.
user nobody
group nogroup
# Manter a persistencia do tunel e da chave.
persist-key
persist-tun
# Status do servidor.
status /var/log/openvpn-status.log
# Logs do OpenVPN.
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 3
;mute 20
# Plugin para autenticacao local
# http://auth-passwd.sourceforge.net/
#plugin  /etc/openvpn/plugins/openvpn-auth-passwd.so vpn

Agora mais alguns detalhes antes de iniciar o servidor
$ mkdir /var/log/openvpn
$ ln -s /etc/openvpn/easy-rsa/keys /etc/openvpn/keys

Pronto, vamos colocar o servidono ar
$ /etc/init.d/openvpn restart

Checando se a interface tap0 esta no ar
$ ifconfig tap0

tap0      Link encap:Ethernet  Endereço de HW 86:82:4f:a4:2e:25
inet end.: 172.16.23.1  Bcast:172.16.23.255  Masc:255.255.255.0
endereço inet6: fe80::8482:4fff:fea4:2e25/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:100
RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

Servidor funcionando, agora vamos configurar o cliente
Para configurar o cliente necessitamos dos certificados e chave do usuário, para usarmos na máquina cliente
/etc/openvpn/keys/ca.crt
/etc/openvpn/keys/alexlaner.crt
/etc/openvpn/keys/alexlaner.key

Criando o arquivo de configuração do cliente
$ mkdir vpn
$ cd vpn
$ scp root@vpn.noisemakers.org:/etc/openvpn/keys/ca.crt .
$ scp root@vpn.noisemakers.org:/etc/openvpn/keys/alexlaner.crt .
$ scp root@vpn.noisemakers.org:/etc/openvpn/keys/alexlaner.key .
$ vi noisemakers.conf

client
dev tap
;dev-node VPN
proto udp
remote vpn.noisemakers.org 1194
;remote-random
resolv-retry infinite
nobind
persist-key
persist-tun
;mute-replay-warnings
ca ca.crt
cert alexlaner.crt
key alexlaner.key
;auth-user-pass
remote-cert-tls server
;ns-cert-type server
;tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3
;mute 20
;status openvpn-status-idev.log

Vamos fechar a VPN
$ cd vpn
$ sudo openvpn noisemakers.conf

VPN no cliente no ar, vamos verificar se esta tudo ok
$ /sbin/ifconfig tap0

tap0      Link encap:Ethernet  Endereço de HW e2:41:5b:f7:48:f4
inet end.: 172.16.23.2  Bcast:172.16.23.255  Masc:255.255.255.0
endereço inet6: fe80::e041:5bff:fef7:48f4/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:100
RX bytes:0 (0.0 B)  TX bytes:7141 (6.9 KiB)

$ ping -c 3 172.16.22.2
PING 172.16.22.2 (172.16.22.2) 56(84) bytes of data.
64 bytes from 172.16.22.2: icmp_req=1 ttl=64 time=225 ms
64 bytes from 172.16.22.2: icmp_req=2 ttl=64 time=225 ms
64 bytes from 172.16.22.2: icmp_req=3 ttl=64 time=225 ms

Referência: http://everlinux.com/artigos/openvpn.html

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *