Differences

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

Link to this comparison view

instalando_e_configurando_o_openvpn_no_centos_pt_br [2017/09/05 12:18] (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.dksh.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.dksh@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.dksh.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 ​  ​U ​    ​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 ​  ​U ​    ​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 ​    ​U ​    ​1002 ​  ​0 ​       0 eth0
 +169.254.0.0 ​    ​0.0.0.0 ​        ​255.255.0.0 ​    ​U ​    ​1003 ​  ​0 ​       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 ​  ​U ​    ​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 ​  ​U ​    ​0 ​     0        0 eth1
 +169.254.0.0 ​    ​0.0.0.0 ​        ​255.255.0.0 ​    ​U ​    ​1002 ​  ​0 ​       0 eth0
 +169.254.0.0 ​    ​0.0.0.0 ​        ​255.255.0.0 ​    ​U ​    ​1003 ​  ​0 ​       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