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 -->