Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalando_e_configurando_o_openvpn_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== ​ Instalando e Configurando o OpenVPN no Debian Squeeze ======
  
 +
 +Primeiramente vamos definir alguns valores que serão utilizados no decorrer deste artigo:
 +
 +  - IP Externo da matriz: 200.200.200.1 IP Externo da filial: 200.200.200.2
 +  - Rede interna da Matriz: 192.168.10.0/​24
 +  - Rede interna da filial: 192.168.11.0/​24
 +  - Rede da vpn 10.254.0.0/​24
 +  - Interface da vpn: tun0
 +  - Liberar o roteamento caso precise acessar outra maquina fora as pontas da vpn echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
 +  - Não esquecer de mascarar as redes se necessário. iptables -t nat -A POSTROUTING -s 10.254.0.0/​24 -j MASQUERADE
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +====== Matriz ======
 +Vamos instalar o openvpn na Matriz primeiramente.
 +
 +Vamos fazer um update dos repositórios e um upgrade do sistema e depois instalar o nosso openvpn.
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && aptitude install openvpn -y
 +</​sxh>​
 +Vamos copiar alguns arquivo que precisamos para o /​etc/​openvpn
 +<sxh bash>
 +
 +cp -Rfa /​usr/​share/​doc/​openvpn/​examples/​easy-rsa/​2.0 /​etc/​openvpn/​easy-rsa
 +</​sxh>​
 +Agora vamos editar o arquivo /​etc/​openvpn/​easy-rsa/​vars que contem as variáveis globais que vamos utilizar para todas as chaves.
 +<sxh bash>
 +
 +vim /​etc/​openvpn/​easy-rsa/​vars
 +[...]
 +export KEY_SIZE=2048
 +
 +# In how many days should the root CA key expire?
 +export CA_EXPIRE=3650
 +
 +# In how many days should certificates expire?
 +export KEY_EXPIRE=3650
 +
 +# 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="​PR"​
 +export KEY_CITY="​Curitiba"​
 +export KEY_ORG="​Douglas"​
 +export KEY_EMAIL="​douglas.q.santos@gmail.com"​
 +</​sxh>​
 +Agora temos que carregar as variáveis no ambiente
 +<sxh bash>
 +
 +cd /​etc/​openvpn/​easy-rsa
 +. ./vars
 +./clean-all
 +</​sxh>​
 +Agora vamos gerar os certificados e chaves
 +
 +Certificado de autoridade (CA). Você irá verificar que os valores estão pré-estabelecidos,​ faltando apenas o Organizational Unit Name e Common Name
 +<sxh bash>
 +
 +./build-ca
 +Generating a 2048 bit RSA private key
 +....+++
 +......+++
 +writing new private key to '​ca.key'​
 +-----
 +You are about to be asked to enter information that will be incorporated
 +into your certificate request.
 +What you are about to enter is what is called a Distinguished Name or a DN.
 +There are quite a few fields but you can leave some blank
 +For some fields there will be a default value,
 +If you enter '​.',​ the field will be left blank.
 +-----
 +Country Name (2 letter code) [BR]: ENTER
 +State or Province Name (full name) [PR]: ENTER
 +Locality Name (eg, city) [Curitiba]: ENTER
 +Organization Name (eg, company) [Douglas]: ENTER
 +Organizational Unit Name (eg, section) []:IT
 +Common Name (eg, your name or your server'​s hostname) [douglas]:​server
 +Name []:server
 +Email Address [douglas.q.santos@gmail.com]:​ ENTER
 +</​sxh>​
 +
 +Vamos agora gerar as chaves e os certificados do servidor
 +<sxh bash>
 +
 +./​build-key-server server
 +Generating a 2048 bit RSA private key
 +..................+++
 +..........................+++
 +writing new private key to '​server.key'​
 +-----
 +You are about to be asked to enter information that will be incorporated
 +into your certificate request.
 +What you are about to enter is what is called a Distinguished Name or a DN.
 +There are quite a few fields but you can leave some blank
 +For some fields there will be a default value,
 +If you enter '​.',​ the field will be left blank.
 +-----
 +Country Name (2 letter code) [BR]: ENTER
 +State or Province Name (full name) [PR]: ENTER
 +Locality Name (eg, city) [Curitiba]: ENTER
 +Organization Name (eg, company) [Douglas]: ENTER
 +Organizational Unit Name (eg, section) []:IT
 +Common Name (eg, your name or your server'​s hostname) [server]: ENTER
 +Name []:server
 +Email Address [douglas.q.santos@gmail.com]:​ ENTER
 +
 +Please enter the following '​extra'​ attributes
 +to be sent with your certificate request
 +A challenge password []: ENTER
 +An optional company name []:Douglas
 +Using configuration from /​etc/​openvpn/​easy-rsa/​openssl.cnf
 +Check that the request matches the signature
 +Signature ok
 +The Subject'​s Distinguished Name is as follows
 +countryName ​          :​PRINTABLE:'​BR'​
 +stateOrProvinceName ​  :​PRINTABLE:'​PR'​
 +localityName ​         :​PRINTABLE:'​Curitiba'​
 +organizationName ​     :​PRINTABLE:'​Douglas'​
 +organizationalUnitName:​PRINTABLE:'​IT'​
 +commonName ​           :​PRINTABLE:'​server'​
 +name                  :​PRINTABLE:'​server'​
 +emailAddress ​         :​IA5STRING:'​douglas.q.santos@gmail.com'​
 +Certificate is to be certified until Jun 19 11:56:33 2021 GMT (3650 days)
 +Sign the certificate?​ [y/n]:y
 +
 +
 +1 out of 1 certificate requests certified, commit? [y/n]y
 +Write out database with 1 new entries
 +Data Base Updated
 +</​sxh>​
 +Parâmetros Diffie Hellman são utilizados para a troca encriptada de informações ​
 +<sxh bash>
 +
 +./build-dh
 +Generating DH parameters, 2048 bit long safe prime, generator 2
 +This is going to take a long time
 +...+.................+...................................................................................................................................
 +.+..................+....................................................................................................................................
 +...........................................................+.............................................+...................................+...........
 +......................+.....................................................+..........+................................................................
 +...........................................+...............................................................................................................
 +...................+.......................................................................................................................................
 +................................................................................................................+...............+.........................
 +.............+................+....+..................................+........................................................................+.......
 +...........................+.................................................................+.........................................+................
 +.........................................................................................................................................+................
 +.....................+...................+...............................................................................................................
 +.............................................................................+...+.......................................................................
 +..........................................................................+.....................................+............+..........................
 +............................................................................................+...........................++*++*
 +</​sxh>​
 +
 +Agora vamos criar uma chave compartilhada.
 +
 +Criando uma chave compartilhada para servir de tls.
 +<sxh bash>
 +
 +openvpn --genkey --secret keys/​shared.key
 +</​sxh>​
 +
 +Arquivo de configuração da matriz arquivo /​etc/​openvpn/​server.conf ​
 +<sxh bash>
 +
 +vim /​etc/​openvpn/​server.conf
 +# porta usada para os clientes conectarem no servidor
 +port    1194
 +
 +# protocolo usado na conexao
 +proto   tcp
 +
 +#Melhorar aplicações remotas
 +mssfix 1400
 +
 +# device usado pelo openvpn
 +dev tun
 +
 +# Habilita conexoes tls
 +# Ajuda a bloquear ataques DoS e flooding na porta usada pelo openvpn
 +tls-server
 +
 +# arquivo de chave compartilhada usado pelo tls-server
 +# O mesmo adiciona uma camada a mais de seguranca, habilitando controle de conexoes tls
 +tls-auth ​   keys/​shared.key 0
 +
 +# Certificado de autoridade
 +# Tem que ser o mesmo em todos os hosts
 +# que conectarem a sua vpn
 +ca  certs/​ca.crt
 +
 +# Certificado e chave privada do servidor
 +# Cada maquina tem que ter seu certificado e chave
 +cert    certs/​server.crt
 +key keys/​server.key
 +
 +# Parametros Diffie-Hellman
 +dh  keys/​dh2048.pem
 +
 +# Rede usada pelo tunel openvpn
 +server ​ 10.254.0.0 255.255.255.0
 +
 +# define o arquivo onde sera guardados os ips que os clientes
 +# obtiverem na conexao, assim os mesmos sempre irao pegar os
 +# mesmos ips
 +ifconfig-pool-persist ​  ​ipp.txt
 +
 +# define o diretorio onde irao ficar as configuracoes individuais para cada
 +# cliente, assim você podera habilitar as duas redes se comunicarem.
 +client-config-dir ​  ccd
 +
 +# Define a rota para a rede da matriz poder enxergar a rede da filial
 +route 192.168.11.0 255.255.255.0
 +
 +# Define a rota para a rede da filial poder enxergar a rede da matriz
 +push "​route-delay 2 600"
 +push "route 192.168.10.0 255.255.255.0"​
 +
 +# Redireciona todo o trafego pela vpn utilizando a vpn como default gw do cliente
 +#push "​redirect-gateway def1"
 +
 +# Podemos definir quais servidor dns e qual servidor wins o cliente vai ter que utilizar
 +#push "​dhcp-option DNS 192.168.10.248"​
 +#push "​dhcp-option DNS 192.168.10.249"​
 +#push "​dhcp-option WINS 192.168.10.248"​
 +
 +# Aceita os clientes se comunicarem entre si sem a necessidade de um outro tunnel
 +client-to-client
 +
 +# Habilita ping de 10 em 10 segundos para dizer ao lado da filial que a matriz
 +# esta no ar, usado para manter a conexao ativa
 +ping-timer-rem
 +keepalive 10 120
 +
 +# Tipo de criptografia usada
 +cipher ​ DES-EDE3-CBC
 +
 +# habilita compressão no link VPN
 +comp-lzo
 +
 +# Numero maximo de clientes (filiais)
 +max-clients 10
 +
 +# usuário e grupo sob o qual o openvpn ira rodar
 +user    nobody
 +group   ​nogroup
 +
 +# Permite um restart sem fechar a conexão e re-ler as chaves
 +persist-key
 +persist-tun
 +
 +# Log de status das conexoes
 +status ​ /​var/​log/​openvpn/​status.log
 +
 +# define um arquivo de log, pois o default é o /​var/​log/​syslog
 +log /​var/​log/​openvpn/​openvpn.log
 +log-append ​ /​var/​log/​openvpn/​openvpn.log
 +
 +# Nivel de log
 +# 0 silencioso, exceto para erros fatais
 +# 4 razoavel para uso geral
 +# 5 e 6 podem ajudar a debugar problemas de conexoes
 +# 9 maximo debug, muito util para tentar descobrir erros caso a vpn nao suba
 +verb    3
 +
 +# desabilita mensagens repetitivas,​ ou seja, erros ou conexoes em sequencia
 +# acima de 20, ele dropa.
 +mute    20
 +</​sxh>​
 +
 +Agora vamos configurar as chaves e certificados para a nossa filial ​
 +<sxh bash>
 +
 +cd /​etc/​openvpn/​easy-rsa
 +./build-key filial1
 +Generating a 2048 bit RSA private key
 +.........................................................................................+++
 +.............................................................................................+++
 +writing new private key to '​filial1.key'​
 +-----
 +You are about to be asked to enter information that will be incorporated
 +into your certificate request.
 +What you are about to enter is what is called a Distinguished Name or a DN.
 +There are quite a few fields but you can leave some blank
 +For some fields there will be a default value,
 +If you enter '​.',​ the field will be left blank.
 +-----
 +Country Name (2 letter code) [BR]: ENTER
 +State or Province Name (full name) [PR]: ENTER
 +Locality Name (eg, city) [Curitiba]: ENTER
 +Organization Name (eg, company) [Douglas]: ENTER
 +Organizational Unit Name (eg, section) []:IT
 +Common Name (eg, your name or your server'​s hostname) [filial1]: ENTER
 +Name []:filial1
 +Email Address [douglas.q.santos@gmail.com]:​ ENTER
 +
 +Please enter the following '​extra'​ attributes
 +to be sent with your certificate request
 +A challenge password []: ENTER
 +An optional company name []:filial1
 +Using configuration from /​etc/​openvpn/​easy-rsa/​openssl.cnf
 +Check that the request matches the signature
 +Signature ok
 +The Subject'​s Distinguished Name is as follows
 +countryName ​          :​PRINTABLE:'​BR'​
 +stateOrProvinceName ​  :​PRINTABLE:'​PR'​
 +localityName ​         :​PRINTABLE:'​Curitiba'​
 +organizationName ​     :​PRINTABLE:'​Douglas'​
 +organizationalUnitName:​PRINTABLE:'​IT'​
 +commonName ​           :​PRINTABLE:'​filial1'​
 +name                  :​PRINTABLE:'​filial1'​
 +emailAddress ​         :​IA5STRING:'​douglas.q.santos@gmail.com'​
 +Certificate is to be certified until Jun 19 12:08:46 2021 GMT (3650 days)
 +Sign the certificate?​ [y/n]:y
 +
 +
 +1 out of 1 certificate requests certified, commit? [y/n]y
 +Write out database with 1 new entries
 +Data Base Updated
 +</​sxh>​
 +
 +Vamos criar alguns diretórios que são necessários e copiar alguns arquivos.
 +<sxh bash>
 +
 +mkdir /​etc/​openvpn/​{certs,​ccd,​keys}
 +cp /​etc/​openvpn/​easy-rsa/​keys/​*.crt /​etc/​openvpn/​certs/​
 +cp /​etc/​openvpn/​easy-rsa/​keys/​*.key /​etc/​openvpn/​easy-rsa/​keys/​dh2048.pem /​etc/​openvpn/​keys/​
 +</​sxh>​
 +
 +Agora vamos criar o arquivo de rotas
 +
 +O arquivo /​etc/​openvpn/​ccd/​filial1 é responsável por definir rotas individuais para os clientes, ou seja, sem ele, o servidor não vai saber que as maquinas de ambos os lados querem se comunicar e com isso a comunicação fica restrita apenas aos servidores. ​
 +<sxh bash>
 +
 +echo "​iroute 192.168.11.0 255.255.255.0"​ > /​etc/​openvpn/​ccd/​filial1
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões de arquivos e diretórios
 +<sxh bash>
 +
 +cd /​etc/​openvpn
 +chown -R nobody:​nogroup keys certs ccd
 +chmod 0400 keys/* certs/* ccd/*
 +</​sxh>​
 +Criando o diretório de log
 +
 +Precisamos criar o diretório de log, pois nossa configuração salva estas informações em arquivos específicos.
 +<sxh bash>
 +
 +mkdir /​var/​log/​openvpn
 +</​sxh>​
 +Vamos iniciar o nosso servidor openvpn
 +<sxh bash>
 +
 +/​etc/​init.d/​openvpn restart
 +Stopping virtual private network daemon:.
 +Starting virtual private network daemon: server.
 +</​sxh>​
 +Agora vamos analisar os logs.
 +<sxh bash>
 +
 +tail -f /​var/​log/​openvpn/​openvpn.log ​
 +Wed Jun 22 09:14:26 2011 /sbin/route add -net 10.254.0.0 netmask 255.255.255.0 gw 10.254.0.2
 +Wed Jun 22 09:14:26 2011 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
 +Wed Jun 22 09:14:26 2011 GID set to nogroup
 +Wed Jun 22 09:14:26 2011 UID set to nobody
 +Wed Jun 22 09:14:26 2011 TCPv4 link local (bound): [undef]
 +Wed Jun 22 09:14:26 2011 TCPv4 link remote: [undef]
 +Wed Jun 22 09:14:26 2011 MULTI: multi_init called, r=256 v=256
 +Wed Jun 22 09:14:26 2011 IFCONFIG POOL: base=10.254.0.4 size=62
 +Wed Jun 22 09:14:26 2011 IFCONFIG POOL LIST
 +Wed Jun 22 09:14:26 2011 Initialization Sequence Completed
 +</​sxh>​
 +
 +O Lado servidor já está ok.
 +
 +Agora vamos configurar o lado da filial1, ainda no servidor, pois vamos mover as configurações para a filial via scp ou rsync.
 +<sxh bash>
 +
 +cd /​etc/​openvpn
 +mkdir -p filial1/​{certs,​keys}
 +cp certs/​{ca.crt,​filial1.crt} filial1/​certs/​
 +cp keys/​{filial1.key,​shared.key} filial1/​keys/​
 +</​sxh>​
 +
 +Agora vamos criar o arquivo de configuração da filial /​etc/​openvpn/​filial1/​filial1.conf ​
 +<sxh bash>
 +
 +vim /​etc/​openvpn/​filial1/​filial1.conf
 +# Especifica que este certificado eh de um cliente
 +client
 +
 +# Define o ip do servidor para o cliente conectar
 +remote ​ 200.200.200.1
 +
 +# porta usada para os clientes conectarem no servidor
 +port    1194
 +
 +# protocolo usado na conexao
 +proto   tcp
 +
 +#Melhorar aplicações remotas
 +mssfix 1400
 +
 +# device usado pelo openvpn
 +dev tun
 +
 +# Diz que o certificado foi assinado pelo servidor
 +ns-cert-type ​   server
 +
 +# Habilita conexoes tls
 +# Ajuda a bloquear ataques DoS e flooding na porta usada pelo openvpn
 +tls-client
 +
 +# arquivo de chave compartilhada usado pelo tls-server
 +# O mesmo adiciona uma camada a mais de seguranca, habilitando controle de conexoes tls
 +tls-auth ​   keys/​shared.key 1
 +
 +# Certificado de autoridade
 +# Tem que ser o mesmo em todos os hosts
 +# que conectarem a sua vpn
 +ca  certs/​ca.crt
 +
 +# Certificado e chave privada do servidor
 +# Cada maquina tem que ter seu certificado e chave
 +cert    certs/​filial1.crt
 +key keys/​filial1.key
 +
 +# Habilita ping de 10 em 10 segundos para dizer ao lado da filial que a matriz
 +# esta no ar, usado para manter a conexao ativa
 +ping-timer-rem
 +keepalive 10 120
 +
 +# Tipo de criptografia usada
 +cipher ​ DES-EDE3-CBC
 +
 +# habilita compressão no link VPN
 +comp-lzo
 +
 +# Ativa a opcao de se conectar, caso o cliente nao esteja na internet, ou
 +# o mesmo tenha perdido a conexao.
 +resolv-retry ​   infinite
 +
 +# Nao especifica uma porta local para o cliente ouvir.
 +nobind
 +
 +# usuário e grupo sob o qual o openvpn ira rodar
 +user    nobody
 +group   ​nogroup
 +
 +# Permite um restart sem fechar a conexão e re-ler as chaves
 +persist-key
 +persist-tun
 +
 +# Log de status das conexoes
 +status ​ /​var/​log/​openvpn/​openvpn-status.log
 +
 +# define um arquivo de log, pois o default é o /​var/​log/​syslog
 +log /​var/​log/​openvpn/​openvpn.log
 +log-append ​ /​var/​log/​openvpn/​openvpn.log
 +
 +# Nivel de log
 +# 0 silencioso, exceto para erros fatais
 +# 4 razoavel para uso geral
 +# 5 e 6 podem ajudar a debugar problemas de conexoes
 +# 9 maximo debug, muito util para tentar descobrir erros caso a vpn nao suba
 +verb    3
 +
 +# desabilita mensagens repetitivas,​ ou seja, erros ou conexoes em sequencia
 +# acima de 20, ele dropa.
 +mute    20
 +</​sxh>​
 +Agora vamos empacotar a nossa configuração da filial e enviar para ela as configurações
 +<sxh bash>
 +
 +tar -czvf filial1.tar.gz filial1/
 +filial1/
 +filial1/​filial1.conf
 +filial1/​keys/​
 +filial1/​keys/​filial1.key
 +filial1/​keys/​shared.key
 +filial1/​certs/​
 +filial1/​certs/​ca.crt
 +filial1/​certs/​filial1.crt
 +</​sxh>​
 +Agora vamos enviar essa configuração para a nossa filial
 +<sxh bash>
 +
 +scp filial1.tar.gz 200.200.200.2:/​tmp
 +</​sxh>​
 +
 +====== Filial ======
 +Agora na filial
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && aptitude install openvpn -y
 +cd /tmp
 +tar -xzvf filial1.tar.gz
 +mv filial1/* /​etc/​openvpn/​
 +rm -rf /​tmp/​filial1*
 +</​sxh>​
 +Agora vamos criar o diretório que vai armazenas os logs
 +<sxh bash>
 +
 +mkdir /​var/​log/​openvpn
 +</​sxh>​
 +Agora vamos reiniciar a nossa openvpn
 +<sxh bash>
 +
 +/​etc/​init.d/​openvpn restart
 +Stopping virtual private network daemon:.
 +Starting virtual private network daemon: filial1.
 +</​sxh>​
 +Agora vamos analisar os logs.
 +<sxh bash>
 +
 +tail -f /​var/​log/​openvpn/​openvpn.log ​
 +Wed Jun 22 09:25:19 2011 OPTIONS IMPORT: route-related options modified
 +Wed Jun 22 09:25:19 2011 ROUTE default_gateway=10.0.0.254
 +Wed Jun 22 09:25:19 2011 TUN/TAP device tun0 opened
 +Wed Jun 22 09:25:19 2011 TUN/TAP TX queue length set to 100
 +Wed Jun 22 09:25:19 2011 /​sbin/​ifconfig tun0 10.254.0.6 pointopoint 10.254.0.5 mtu 1500
 +Wed Jun 22 09:25:22 2011 /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 gw 10.254.0.5
 +Wed Jun 22 09:25:22 2011 /sbin/route add -net 10.254.0.0 netmask 255.255.255.0 gw 10.254.0.5
 +Wed Jun 22 09:25:22 2011 GID set to nogroup
 +Wed Jun 22 09:25:22 2011 UID set to nobody
 +Wed Jun 22 09:25:22 2011 Initialization Sequence Completed
 +</​sxh>​
 +Vamos efetuar testes
 +
 +Da filial vamos tentar pingar o ip interno da matriz 192.168.10.1
 +<sxh bash>
 +
 +ping 192.168.10.1 -c 3
 +PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
 +64 bytes from 192.168.10.1:​ icmp_req=1 ttl=64 time=1.42 ms
 +64 bytes from 192.168.10.1:​ icmp_req=2 ttl=64 time=1.01 ms
 +64 bytes from 192.168.10.1:​ icmp_req=3 ttl=64 time=1.05 ms
 +
 +--- 192.168.10.1 ping statistics ---
 +3 packets transmitted,​ 3 received, 0% packet loss, time 2002ms
 +rtt min/​avg/​max/​mdev = 1.015/​1.166/​1.428/​0.187 ms
 +</​sxh>​
 +Tabela de rotas da nossa filial
 +<sxh bash>
 +
 +route -n
 +Tabela de Roteamento IP do Kernel
 +Destino ​        ​Roteador ​       MáscaraGen. ​   Opções Métrica Ref   Uso Iface
 +10.254.0.5 ​     0.0.0.0 ​        ​255.255.255.255 UH    0      0        0 tun0
 +10.254.0.0 ​     10.254.0.5 ​     255.255.255.0 ​  ​UG ​   0      0        0 tun0
 +192.168.11.0 ​   0.0.0.0 ​        ​255.255.255.0 ​  ​U ​    ​0 ​     0        0 eth1
 +192.168.10.0 ​   10.254.0.5 ​     255.255.255.0 ​  ​UG ​   0      0        0 tun0
 +10.0.0.0 ​       0.0.0.0 ​        ​255.255.254.0 ​  ​U ​    ​0 ​     0        0 eth0
 +0.0.0.0 ​        ​10.0.0.254 ​     0.0.0.0 ​        ​UG ​   0      0        0 eth0
 +</​sxh>​
 +Agora na matriz vamos tentar pingar a rede interna da filial 192.168.11.1
 +<sxh bash>
 +
 +ping 192.168.11.1 -c 3
 +PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data.
 +64 bytes from 192.168.11.1:​ icmp_req=1 ttl=64 time=0.454 ms
 +64 bytes from 192.168.11.1:​ icmp_req=2 ttl=64 time=0.853 ms
 +64 bytes from 192.168.11.1:​ icmp_req=3 ttl=64 time=0.804 ms
 +
 +--- 192.168.11.1 ping statistics ---
 +3 packets transmitted,​ 3 received, 0% packet loss, time 1999ms
 +rtt min/​avg/​max/​mdev = 0.454/​0.703/​0.853/​0.180 ms
 +</​sxh>​
 +
 +Tabela de rotas da nossa matriz
 +<sxh bash>
 +
 +route -n
 +Tabela de Roteamento IP do Kernel
 +Destino ​        ​Roteador ​       MáscaraGen. ​   Opções Métrica Ref   Uso Iface
 +10.254.0.2 ​     0.0.0.0 ​        ​255.255.255.255 UH    0      0        0 tun0
 +10.254.0.0 ​     10.254.0.2 ​     255.255.255.0 ​  ​UG ​   0      0        0 tun0
 +192.168.11.0 ​   10.254.0.2 ​     255.255.255.0 ​  ​UG ​   0      0        0 tun0
 +192.168.10.0 ​   0.0.0.0 ​        ​255.255.255.0 ​  ​U ​    ​0 ​     0        0 eth1
 +10.0.0.0 ​       0.0.0.0 ​        ​255.255.254.0 ​  ​U ​    ​0 ​     0        0 eth0
 +0.0.0.0 ​        ​10.0.0.254 ​     0.0.0.0 ​        ​UG ​   0      0        0 eth0
 +</​sxh>​
 +
 +**NÃO ESQUEÇA DE LIBERAR ROTAMENTO NOS SERVIDORES SE VOCÊ PRECISAR ACESSAR OUTRA MAQUINA FORA AS DUAS PONTAS DA VPN.**
 +
 +<sxh bash>
 +
 +echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
 +</​sxh>​
 +
 +**E CASO ACHE NECESSÁRIO MASCARE AS REDES**
 +
 +<sxh bash>
 +
 +iptables -t nat -A POSTROUTING -s 10.254.0.0/​24 -j MASQUERADE
 +</​sxh>​
 +Pronto, seu openvpn esta instalado e matriz/​filial estao se comunicando. Não esqueça de liberar no fw da matriz a porta 1194 tcp de sua interface externa e tudo na interface da vpn que é tun0.
 +
 +Caso necessite configurar mais uma filial, basta seguir os passos da criação das configurações para a filial, alterando é claro o nome de filial1 para filial2 e mais os passos abaixo.
 +
 +Também não esqueça de inserir mais uma entrada como abaixo no arquivo server.conf.
 +<sxh bash>
 +
 +route 192.168.11.0 255.255.255.0 -> filial1
 +route 192.168.12.0 255.255.255.0 -> filial2
 +</​sxh>​
 +E precisamos tambem criar mais uma entrada no diretório ccd com a rota para a nova filial
 +<sxh bash>
 +
 +echo "​iroute 192.168.12.0 255.255.255.0"​ > /​etc/​openvpn/​ccd/​filial2
 +</​sxh>​
 +Caso precise passar mais rotas para as filiais faça como abaixo.
 +<sxh bash>
 +
 +push "route 192.168.10.0 255.255.255.0"​
 +push "route 192.168.9.0 255.255.255.0"​
 +</​sxh>​
 +
 +Caso uma filial precise acessar a outra podemos fazer da seguinte forma. ​
 +
 +  - Filial 3 192.168.3.0/​24
 +  - Filial 4 192.168.3.0/​24
 +
 +A filial 3 precisa chegar na 4, então vamos inserir a seguinte linha no arquivo de configuração da VPN da filial 3 
 +<sxh bash>
 +
 +vim /​etc/​openvpn/​filial3.conf
 +[...]
 +route 192.168.4.0 255.255.255.0
 +</​sxh>​
 +
 +E agora no arquivo de configuração da filial4 precisamos fazer o mesmo procedimento
 +<sxh bash>
 +
 +vim /​etc/​openvpn/​filial4.conf
 +[...]
 +route 192.168.3.0 ​ 255.255.255.0
 +</​sxh>​
 +
 +Com isso as filiais já tem rotas uma para a outra por causa do parâmetro client-to-client na configuração do servidor.
 +
 +Aqui não podemos de incluir as outras configuração padrões no servidor principal de openvpn, caso precise acessar os servidores das filiais não podemos esquecer de habilitar o repasse de pacotes com o seguinte comando
 +
 +<sxh bash>
 +
 +echo "​net.ipv4.ip_forward = 1" >> /​etc/​sysctl.conf
 +sysctl -p
 +</​sxh>​
 +
 +Também precisamos mascarar a rede da vpn que em nosso caso é 10.254.0.0/​24 nas filiais com o seguinte comando.
 +<sxh bash>
 +
 +iptables -t nat -A POSTROUTING -s 10.254.0.0/​24 -j MASQUERADE
 +</​sxh>​
 +
 +
 +====== Referências ======
 +  - http://​openvpn.net/​index.php/​open-source/​documentation/​howto.html
 +  - http://​openvpn.net/​index.php/​open-source/​documentation/​examples.html
 +  - http://​openvpn.net/​index.php/​open-source/​documentation/​manuals.html
 +  - https://​community.openvpn.net/​openvpn/​wiki/​Openvpn23ManPage