Differences

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

Link to this comparison view

instalando_e_configurando_o_openvpn_no_centos6_pt_br [2019/08/08 15:24] (current)
Line 1: Line 1:
 +====== Instalando e Configurando o OpenVPN no CentOS 6 ======
  
 +
 +Vou abordar nesse how to a instalação e configuração da <nowiki>OpenVPN</nowiki> no Centos 6
 +
 +Primeiramente vamos definir alguns valores que serão utilizados no decorrer deste how to:
 +
 +  - 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/confinicialcentos6_en para que não falte nenhum pacote ou configuração.
 +
 +Vamos fazer um update dos repositórios e um upgrade do sistema e depois instalar o nosso openvpn e deixar ele habilitado para subir na inicialização.
 +
 +====== Matriz ======
 +
 +Vamos mandar atualizar os repositórios e atualizar o sistema.
 +<sxh bash>
 +yum check-update ; yum update -y 
 +</sxh>
 +
 +Agora precisamos mandar instalar o pacote da openvpn e do git 
 +<sxh bash>
 +yum install openvpn git -y
 +</sxh>
 +
 +Agora vamos inserir o openvpn na inicialização do sistema
 +<sxh bash>
 +chkconfig openvpn on
 +</sxh>
 +
 +Nas últimas versões do Openvpn já não temos mais o easy-rsa com isso temos que obter 
 +
 +<sxh bash>
 +cd /etc/openvpn && git clone https://github.com/OpenVPN/easy-rsa
 +</sxh>
 +
 +Agora vamos ajustar a localização dos arquivos que precisamos
 +<sxh bash>
 +mv /etc/openvpn/easy-rsa/easyrsa3/ /etc/openvpn/easy-rsa3
 +</sxh>
 +
 +Agora vamos remover o diretório que não precisamos mais
 +<sxh bash>
 +rm -rf /etc/openvpn/easy-rsa
 +</sxh>
 +
 +Agora vamos ajustar o nome do nosso diretório
 +<sxh bash>
 +mv /etc/openvpn/easy-rsa3 /etc/openvpn/easy-rsa
 +</sxh>
 +
 +Vamos editar o arquivo que vai ser base para as nossas chaves o arquivo /etc/openvpn/easy-rsa/vars.
 +
 +Primeiro vamos fazer uma copia do arquivo de exemplo para o nosso arquivo real
 +<sxh bash>
 +cp /etc/openvpn/easy-rsa/vars.example /etc/openvpn/easy-rsa/vars
 +</sxh>
 +
 +<sxh bash>
 +vim /etc/openvpn/easy-rsa/vars
 +[...]
 +# Organizational fields (used with 'org' mode and ignored in 'cn_only' mode.)
 +# These are the default values for fields which will be placed in the
 +# certificate.  Don't leave any of these fields blank, although interactively
 +# you may omit any specific field by typing the "." symbol (not valid for
 +# email.)
 +
 +set_var EASYRSA_REQ_COUNTRY     "BR"
 +set_var EASYRSA_REQ_PROVINCE    "Parana"
 +set_var EASYRSA_REQ_CITY        "Curitiba"
 +set_var EASYRSA_REQ_ORG         "Douglas"
 +set_var EASYRSA_REQ_EMAIL       "douglas.q.santos@gmail.com"
 +set_var EASYRSA_REQ_OU          "IT"
 +
 +# Choose a size in bits for your keypairs. The recommended value is 2048.  Using
 +# 2048-bit keys is considered more than sufficient for many years into the
 +# future. Larger keysizes will slow down TLS negotiation and make key/DH param
 +# generation take much longer. Values up to 4096 should be accepted by most
 +# software. Only used when the crypto alg is rsa (see below.)
 +
 +set_var EASYRSA_KEY_SIZE        2048
 +
 +[...]
 +# In how many days should the root CA key expire?
 +
 +set_var EASYRSA_CA_EXPIRE       3650
 +
 +# In how many days should certificates expire?
 +
 +set_var EASYRSA_CERT_EXPIRE     3650
 +
 +[...]
 +</sxh>
 +
 +Agora temos que carregar as variáveis no ambiente
 +
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && ./easyrsa init-pki
 +
 +Note: using Easy-RSA configuration from: ./vars
 +
 +init-pki complete; you may now create a CA or requests.
 +Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
 +</sxh>
 +
 +Agora vamos gerar os certificados e chaves
 +
 +Certificado de autoridade (CA). Os valores já estão pré-estabelecidos, faltando apenas o Common Name e informar a senha.
 +
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && ./easyrsa build-ca
 +
 +Note: using Easy-RSA configuration from: ./vars
 +Generating a 2048 bit RSA private key
 +....................................................................................................................................+++
 +..........................................................................................+++
 +writing new private key to '/etc/openvpn/easy-rsa/pki/private/ca.key'
 +Enter PEM pass phrase: #SENHA
 +Verifying - Enter PEM pass phrase: #SENHA
 +-----
 +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.
 +-----
 +Common Name (eg: your user, host, or server name) [Easy-RSA CA]:OpenVPN CA
 +
 +CA creation complete and you may now import and sign cert requests.
 +Your new CA certificate file for publishing is at:
 +/etc/openvpn/easy-rsa/pki/ca.crt
 +
 +</sxh>
 +
 +Agora vamos gerar as chaves e os certificados do servidor
 +
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && ./easyrsa gen-req server nopass
 +
 +Note: using Easy-RSA configuration from: ./vars
 +Generating a 2048 bit RSA private key
 +......................+++
 +..................................+++
 +writing new private key to '/etc/openvpn/easy-rsa/pki/private/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.
 +-----
 +Common Name (eg: your user, host, or server name) [server]: #ENTER
 +
 +Keypair and certificate request completed. Your files are:
 +req: /etc/openvpn/easy-rsa/pki/reqs/server.req
 +key: /etc/openvpn/easy-rsa/pki/private/server.key
 +</sxh>
 +
 +Agora nós precisamos assinar a chave para o nosso servidor, aqui precisamos confirmar a assinatura e informar a senha do CA que geramos a pouco.
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && ./easyrsa sign server server
 +
 +Note: using Easy-RSA configuration from: ./vars
 +
 +
 +You are about to sign the following certificate.
 +Please check over the details shown below for accuracy. Note that this request
 +has not been cryptographically verified. Please be sure it came from a trusted
 +source or that you have verified the request checksum with the sender.
 +
 +Request subject, to be signed as a server certificate for 3650 days:
 +
 +subject=
 +    commonName                = server
 +
 +
 +Type the word 'yes' to continue, or any other input to abort.
 +  Confirm request details: yes
 +Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf
 +Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: #SENHA
 +Check that the request matches the signature
 +Signature ok
 +The Subject's Distinguished Name is as follows
 +commonName            :PRINTABLE:'server'
 +Certificate is to be certified until Jan 23 19:35:55 2025 GMT (3650 days)
 +
 +Write out database with 1 new entries
 +Data Base Updated
 +
 +Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt
 +</sxh>
 +
 +Parâmetros Diffie Hellman são utilizados para a troca encriptada de informações
 +
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && ./easyrsa gen-dh
 +Note: using Easy-RSA configuration from: ./vars
 +Generating DH parameters, 2048 bit long safe prime, generator 2
 +This is going to take a long time
 +[...]
 +DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem
 +</sxh>
 +
 +Agora vamos criar uma chave compartilhada.
 +
 +Criando uma chave compartilhada para servir de tls.
 +
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && openvpn --genkey --secret pki/shared.key
 +</sxh>
 +
 +Arquivo de configuração da matriz /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/dh.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/ips.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   nobody
 +
 +# 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 && ./easyrsa gen-req filial1 nopass
 +
 +Note: using Easy-RSA configuration from: ./vars
 +Generating a 2048 bit RSA private key
 +..................................................+++
 +.......................+++
 +writing new private key to '/etc/openvpn/easy-rsa/pki/private/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.
 +-----
 +Common Name (eg: your user, host, or server name) [filial1]:
 +
 +Keypair and certificate request completed. Your files are:
 +req: /etc/openvpn/easy-rsa/pki/reqs/filial1.req
 +key: /etc/openvpn/easy-rsa/pki/private/filial1.key
 +</sxh>
 +
 +Agora nós precisamos assinar a chave para o nosso cliente, aqui precisamos confirmar a assinatura e informar a senha do CA
 +<sxh bash>
 +cd /etc/openvpn/easy-rsa && ./easyrsa sign client filial1
 +
 +Note: using Easy-RSA configuration from: ./vars
 +
 +
 +You are about to sign the following certificate.
 +Please check over the details shown below for accuracy. Note that this request
 +has not been cryptographically verified. Please be sure it came from a trusted
 +source or that you have verified the request checksum with the sender.
 +
 +Request subject, to be signed as a client certificate for 3650 days:
 +
 +subject=
 +    commonName                = filial1
 +
 +
 +Type the word 'yes' to continue, or any other input to abort.
 +  Confirm request details: yes
 +Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf
 +Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: #SENHA
 +Check that the request matches the signature
 +Signature ok
 +The Subject's Distinguished Name is as follows
 +commonName            :PRINTABLE:'filial1'
 +Certificate is to be certified until Jan 23 19:42:48 2025 GMT (3650 days)
 +
 +Write out database with 1 new entries
 +Data Base Updated
 +
 +Certificate created at: /etc/openvpn/easy-rsa/pki/issued/filial1.crt
 +</sxh>
 +
 +Vamos criar alguns diretórios que são necessários e copiar alguns arquivos.
 +
 +<sxh bash>
 +mkdir /etc/openvpn/{certs,ccd,keys,ipp}
 +cd /etc/openvpn/easy-rsa/pki
 +cp ca.crt issued/* /etc/openvpn/certs/
 +cp dh.pem shared.key private/* /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 premissões de arquivos e diretórios
 +
 +<sxh bash>
 +cd /etc/openvpn
 +chown -R nobody:nobody keys certs ccd
 +chmod 0400 keys/* certs/* ccd/* ipp
 +</sxh>
 +
 +Precisamos criar o diretório de log, pois nossa configuração salva estas informações em arquivos especificos.
 +
 +<sxh bash>
 +mkdir /var/log/openvpn
 +</sxh>
 +
 +Vamos iniciar o nosso servidor openvpn
 +
 +<sxh bash>
 +/etc/init.d/openvpn restart
 +Desligando o openvpn:                                      [  OK  ]
 +Iniciando o openvpn:                                        OK  ]
 +</sxh>
 +
 +Vamos verificar os logs
 +
 +<sxh bash>
 +tail -f /var/log/openvpn/openvpn.log
 +Mon Jan 26 17:45:34 2015 GID set to nobody
 +Mon Jan 26 17:45:34 2015 UID set to nobody
 +Mon Jan 26 17:45:34 2015 Listening for incoming TCP connection on [undef]
 +Mon Jan 26 17:45:34 2015 TCPv4_SERVER link local (bound): [undef]
 +Mon Jan 26 17:45:34 2015 TCPv4_SERVER link remote: [undef]
 +Mon Jan 26 17:45:34 2015 MULTI: multi_init called, r=256 v=256
 +Mon Jan 26 17:45:34 2015 IFCONFIG POOL: base=10.254.0.4 size=62, ipv6=0
 +Mon Jan 26 17:45:34 2015 IFCONFIG POOL LIST
 +Mon Jan 26 17:45:34 2015 MULTI: TCP INIT maxclients=10 maxevents=14
 +Mon Jan 26 17:45:34 2015 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
 +remote-cert-tls 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   nobody
 +
 +# 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>
 +
 +====== Filial ======
 +
 +Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialcentos6_en para que não falte nenhum pacote ou configuração.
 +
 +Vamos fazer uma atualização dos repositórios e vamos fazer uma atualização do sistema.
 +<sxh bash>
 +yum check-update ; yum update
 +</sxh>
 +
 +Agora precisamos instalar a openvpn
 +<sxh bash>
 +yum install openvpn -y
 +</sxh>
 +
 +Agora precisamos inserir ele na inicialização do sistema
 +<sxh bash>
 +chkconfig openvpn on
 +</sxh>
 +
 +**Agora na matriz**
 +
 +Agora vamos enviar essa configuração para a nossa filial
 +
 +<sxh bash>
 +scp filial1.tar.gz 200.200.200.2:/tmp
 +</sxh>
 +
 +**Na filial novamente**
 +
 +Agora vamos descompactar e mover a configuração da nossa openvpn para o lugar certo.
 +
 +<sxh bash>
 +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
 +Desligando openvpn:                                        [  OK  ]
 +Iniciando openvpn:                                          OK  ]
 +</sxh>
 +
 +Vamos analisar os logs da filial
 +
 +<sxh bash>
 +tail -f /var/log/openvpn/openvpn.log
 +Mon Jan 26 17:50:02 2015 TUN/TAP device tun0 opened
 +Mon Jan 26 17:50:02 2015 TUN/TAP TX queue length set to 100
 +Mon Jan 26 17:50:02 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
 +Mon Jan 26 17:50:02 2015 /sbin/ip link set dev tun0 up mtu 1500
 +Mon Jan 26 17:50:02 2015 /sbin/ip addr add dev tun0 local 10.254.0.6 peer 10.254.0.5
 +Mon Jan 26 17:50:04 2015 /sbin/ip route add 192.168.10.0/24 via 10.254.0.5
 +Mon Jan 26 17:50:04 2015 /sbin/ip route add 10.254.0.0/24 via 10.254.0.5
 +Mon Jan 26 17:50:04 2015 GID set to nobody
 +Mon Jan 26 17:50:04 2015 UID set to nobody
 +Mon Jan 26 17:50:04 2015 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
 +Kernel IP routing table
 +Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 +10.254.0.5      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
 +192.168.1.0     0.0.0.0         255.255.255.0            0        0 eth0
 +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            0        0 eth1
 +192.168.10.0    10.254.0.5      255.255.255.0   UG    0      0        0 tun0
 +169.254.0.0     0.0.0.0         255.255.0.0         1002          0 eth0
 +169.254.0.0     0.0.0.0         255.255.0.0         1003          0 eth1
 +0.0.0.0         192.168.1.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
 +Kernel IP routing table
 +Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 +10.254.0.2      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
 +192.168.1.0     0.0.0.0         255.255.255.0            0        0 eth0
 +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            0        0 eth1
 +169.254.0.0     0.0.0.0         255.255.0.0         1002          0 eth0
 +169.254.0.0     0.0.0.0         255.255.0.0         1003          0 eth1
 +0.0.0.0         192.168.1.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 estão 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 também 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/howto.html]]
 +  - [[http://openvpn.net/index.php/open-source/documentation/examples.html|http://openvpn.net/index.php/open-source/documentation/examples.html]]
 +  - [[http://openvpn.net/index.php/open-source/documentation/manuals.html|http://openvpn.net/index.php/open-source/documentation/manuals.html]]
 +  - https://community.openvpn.net/openvpn/wiki/EasyRSA3-OpenVPN-Howto
 +  - https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage