Site menu OpenVPN - parte 5

OpenVPN - parte 5

Configurando a filial.

A configuração da filial, é bastante parecida com a da matriz. Você deve criar os certificados com os comandos

openssl req -nodes -new -keyout filial.key -out filial.csr
openssl ca -out filial.crt -in filial.csr

Após os certificados criados, copie os arquivos filial.key filial.crt dh.pem my-ca.crt para o diretorio /etc/openvpn do servidor da filial. Com os arquivos copiados, crie o filial.conf.

# Exemplo de configuração do OpenVPN
# para a Filial, usando o modo SSL/TLS e
# chaves RSA.
#
# '#' ou ';' são comentarios.
#
# Obs: Tradução livre do arquivo
# sample-config-files/tls-office.conf
# no diretorio de sources do OpenVPN.

# Usar como interface o driver tun.
dev tun

# Ip da parte remota.
remote vpn.empresa.com.br

# 10.10.0.2 é o nosso IP local (filial).
# 10.10.0.1 é o IP remoto (matriz).
ifconfig 10.10.0.2 10.10.0.1

# Diretorio onde estão todas as configurações
cd /etc/openvpn

# O OpenVPN irá executar esse script
# quando o tunel estiver carregado.
# Ideal para setar as rotas
up ./filial.up

# No modo SSL/TLS a matriz irá
# assumir a parte do servidor,
# e a filial será o cliente.
tls-client

# Certificado da CA
ca my-ca.crt

# Certificado publico da Filial
cert filial.crt

# Certificado privado da Filial
key filial.key

# OpenVPN usa a porta 5000/UDP por padrão.
# Cada tunel 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 exta.
; user nobody
; group nobody

# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a coneção em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.
 ping 15

# Nivel dos logs.
# 0 -- silencioso, exeto 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

É necessário criar o arquivo filial.up no diretório /etc/openvpn

#!/bin/bash
route add -net 10.0.0.0 netmask 255.0.0.0 gw $5

Com os arquivos criados, podemos rodar a nossa VPN.

[root@filial root]# /usr/local/sbin/openvpn \
	--config /etc/openvpn/filial.conf --daemon
[root@filial root]#

Novamente nenhuma saída. Como já sabemos, isso é bastante bom! Vamos ver nos logs do sistema.

Nov  1 01:30:09 filial openvpn[3285]: OpenVPN 1.4.3
	i686-pc-linux-gnu [SSL] built on Oct 29 2003
Nov  1 01:30:10 filial openvpn[3285]: UDP link local (bound):
	[undef]:5000
Nov  1 01:30:10 filial openvpn[3285]: UDP link remote: 200.0.0.1:5000
Nov  1 01:30:10 filial openvpn[3285]: Data Channel MTU parms [ CORTA ]
Nov  1 01:30:10 filial openvpn[3285]: Control Channel MTU parms
	[ CORTA ]
Nov  1 01:30:10 filial openvpn[3285]: TUN/TAP device tun0 opened
Nov  1 01:30:10 filial openvpn[3285]: /sbin/ifconfig tun0 10.1.0.2
	pointopoint 10.1.0.1 mtu 1259
Nov  1 01:30:10 filial openvpn[3285]: ./filial.up tun0 1259 1300
	10.1.0.2 10.1.0.1
Nov  1 01:30:10 filial openvpn[3289]: TLS: tls_pre_decrypt: first
	response to initial packet sid=072edd8a 30748136
Nov  1 01:30:10 filial openvpn[3289]: Data Channel Encrypt: Cipher
	'BF-CBC' initialized with 128 bit key
Nov  1 01:30:10 filial openvpn[3289]: Data Channel Encrypt: Using
	160 bit message digest 'SHA1' for HMAC authentication
Nov  1 01:30:10 filial openvpn[3289]: VERIFY OK: depth=1, [ CORTA ]
Nov  1 01:30:10 filial openvpn[3289]: VERIFY OK: depth=0, [ CORTA ]
Nov  1 01:30:11 filial openvpn[3289]: Data Channel Decrypt: Cipher
	'BF-CBC' initialized with 128 bit key
Nov  1 01:30:11 filial openvpn[3289]: Data Channel Decrypt: Using
	160 bit message digest 'SHA1' for HMAC authentication
Nov  1 01:30:11 filial openvpn[3289]: Control Channel: TLSv1, cipher
	TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA
Nov  1 01:30:11 filial openvpn[3289]: Peer Connection Initiated
	with 200.0.0.1:5000


Nossa VPN está rodando! Vamos testar, pingando a outra ponta da vpn.

[root@filial root]# ping -c5 10.10.0.1
PING 10.10.0.1 (10.10.0.1): 56 data bytes
64 bytes from 10.10.0.1: icmp_seq=0 ttl=64 time=151.9 ms
64 bytes from 10.10.0.1: icmp_seq=1 ttl=64 time=127.3 ms
64 bytes from 10.10.0.1: icmp_seq=2 ttl=64 time=155.3 ms
64 bytes from 10.10.0.1: icmp_seq=3 ttl=64 time=69.2 ms
64 bytes from 10.10.0.1: icmp_seq=4 ttl=64 time=57.7 ms

--- 10.10.0.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 57.7/112.2/155.3 ms
[root@filial root]#


Testando mais uma vez, agora pingando um servidor dentro da rede da matriz. (Note que o servidor já está configurado para fazer o roteamento)

[root@filial root]# ping -c5 10.0.1.3
PING 10.0.1.3 (10.0.1.3): 56 data bytes
64 bytes from 10.0.1.3: icmp_seq=0 ttl=63 time=57.2 ms
64 bytes from 10.0.1.3: icmp_seq=1 ttl=63 time=64.2 ms
64 bytes from 10.0.1.3: icmp_seq=2 ttl=63 time=101.1 ms
64 bytes from 10.0.1.3: icmp_seq=3 ttl=63 time=151.3 ms
64 bytes from 10.0.1.3: icmp_seq=4 ttl=63 time=46.4 ms

--- 10.0.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 46.4/84.0/151.3 ms
[root@filial root]#

Novamente o ping teve sucesso. Nossa VPN está funcionando. Note que o Linux enxerga a interface da VPN como uma interface qualquer, e também aplica as regras de firewall nelas. Talvez você tenha que mexer no seu iptables ;)

Parte 6: Configurando o cliente windows -->