https://eriberto.pro.br/wiki/index.php?title=Interliga%C3%A7%C3%A3o_de_redes_com_OpenVPN&feed=atom&action=historyInterligação de redes com OpenVPN - Histórico de revisão2024-03-29T00:39:59ZHistórico de revisões para esta página neste wikiMediaWiki 1.40.0https://eriberto.pro.br/wiki/index.php?title=Interliga%C3%A7%C3%A3o_de_redes_com_OpenVPN&diff=1798&oldid=prevEriberto: /* Criação dos certificados e das chaves */2012-09-18T14:07:54Z<p><span dir="auto"><span class="autocomment">Criação dos certificados e das chaves</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="pt-BR">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Edição anterior</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Edição das 07h07min de 18 de setembro de 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l50">Linha 50:</td>
<td colspan="2" class="diff-lineno">Linha 50:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Com base no artigo [[Autoridade Certificadora (CA) com o OpenSSL]], crie um par de chaves para ser utilizado no gateway. A chave pública deverá ser assinada pela CA, o que irá gerar um certificado.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Com base no artigo [[Autoridade Certificadora (CA) com o OpenSSL]], crie um par de chaves para ser utilizado no gateway. A chave pública deverá ser assinada pela CA, o que irá gerar um certificado.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{exclamação1|No ''commonName'' coloque o nome completo ([http://en.wikipedia.org/wiki/Fqdn FQDN]) <del style="font-weight: bold; text-decoration: none;">do gateway completo </del>da máquina que atuará como gateway. Exemplo: ''gangorra.rede.com.br''. No ''emailAddress'', coloque o endereço de e-mail do administrador da rede.}}</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{exclamação1|No ''commonName'' coloque o nome completo ([http://en.wikipedia.org/wiki/Fqdn FQDN]) da máquina que atuará como gateway. Exemplo: ''gangorra.rede.com.br''. No ''emailAddress'', coloque o endereço de e-mail do administrador da rede.}}</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Depois de gerar as chaves, torne a chave privada insegura, para que a mesma possa ser utilizada no gateway sem que haja um pedido de senha a cada conexão. Apenas para fins didáticos, utilize o nome ''insegura.key'' para a chave privada insegura.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Depois de gerar as chaves, torne a chave privada insegura, para que a mesma possa ser utilizada no gateway sem que haja um pedido de senha a cada conexão. Apenas para fins didáticos, utilize o nome ''insegura.key'' para a chave privada insegura.</div></td></tr>
</table>Eribertohttps://eriberto.pro.br/wiki/index.php?title=Interliga%C3%A7%C3%A3o_de_redes_com_OpenVPN&diff=1089&oldid=prevEriberto: /* Controle de acessos */2011-01-21T12:41:42Z<p><span dir="auto"><span class="autocomment">Controle de acessos</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="pt-BR">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Edição anterior</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Edição das 05h41min de 21 de janeiro de 2011</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l330">Linha 330:</td>
<td colspan="2" class="diff-lineno">Linha 330:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><br></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><br></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== <del style="font-weight: bold; text-decoration: none;">Controle </del>de acessos ==</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== <ins style="font-weight: bold; text-decoration: none;">Comentários, sugestões e controle </ins>de acessos ==</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Por favor, '''deixe os seus comentários e sugestões sobre este artigo''' no meu Blog Técnico. Para isto, [http://www.eriberto.pro.br/blog/?p=535 clique aqui].</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><absHTML></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><absHTML></div></td></tr>
</table>Eribertohttps://eriberto.pro.br/wiki/index.php?title=Interliga%C3%A7%C3%A3o_de_redes_com_OpenVPN&diff=753&oldid=prevEriberto: /* Instalação dos certificados e das chaves no cliente */2010-05-04T20:13:56Z<p><span dir="auto"><span class="autocomment">Instalação dos certificados e das chaves no cliente</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="pt-BR">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Edição anterior</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Edição das 13h13min de 4 de maio de 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l192">Linha 192:</td>
<td colspan="2" class="diff-lineno">Linha 192:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # chmod 644 /etc/ssl/certs/rede.crt</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # chmod 644 /etc/ssl/certs/rede.crt</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> # chmod 644 /etc/ssl/certs/<del style="font-weight: bold; text-decoration: none;">gangorra</del>.crt</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> # chmod 644 /etc/ssl/certs/<ins style="font-weight: bold; text-decoration: none;">canopus</ins>.crt</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # chmod 400 /etc/ssl/private/canopus.key</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # chmod 400 /etc/ssl/private/canopus.key</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # chmod 400 /etc/ssl/private/gangorra.tlskey</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # chmod 400 /etc/ssl/private/gangorra.tlskey</div></td></tr>
</table>Eribertohttps://eriberto.pro.br/wiki/index.php?title=Interliga%C3%A7%C3%A3o_de_redes_com_OpenVPN&diff=272&oldid=prevEriberto: Nova página: {{construção}} {{exclamação1|Nota em 08 fev. 2008: o tutorial relativo à ligação de um cliente isolado (GNU/Linux ou MS Windows) a uma rede está completo (sem revisão ortogr...2008-02-08T13:27:58Z<p>Nova página: {{construção}} {{exclamação1|Nota em 08 fev. 2008: o tutorial relativo à ligação de um cliente isolado (GNU/Linux ou MS Windows) a uma rede está completo (sem revisão ortogr...</p>
<p><b>Página nova</b></p><div>{{construção}}<br />
<br />
{{exclamação1|Nota em 08 fev. 2008: o tutorial relativo à ligação de um cliente isolado (GNU/Linux ou MS Windows) a uma rede está completo (sem revisão ortográfica e gramatical). Falta a segunda parte do tutorial, que versa sobre a ligação entre gateways, permitindo que uma rede inteira tenha total acesso a outra.}}<br />
<br />
{{cabeçalho|27 de junho de 2007}}<br />
<br />
== Sobre este artigo ==<br />
<br />
Este artigo pretende descrever a configuração do OpenVPN, como cliente e servidor, no Debian GNU/Linux.<br />
<br><br><br />
<br />
== Vantagens do uso do OpenVPN ==<br />
<br />
O OpenVPN possui diversas vantagens em relação ao IPSec na montagem de VPNs. Algumas delas:<br />
<br />
* Grande facilidade de instalação e configuração.<br />
* Excelente desenvoltura perante NATs em filtros de pacotes que estejam no caminho, evitando a necessidade de adaptações e de modificações no sistema de firewall.<br />
* Permite o uso de UDP, evitando o efeito "TCP over TCP".<br />
* Utilização de chaves assimétricas para a autenticação.<br />
* Disponível para GNU/Linux e MS Windows.<br />
* Grande estabilidade.<br />
<br><br />
<br />
== A criação das chaves ==<br />
<br />
Algumas chaves assimétricas serão necessárias para que o OpenVPN seja instalado. Essas chaves poderão ser criadas com o OpenSSL e deverão ser assinadas por uma CA (autoridade certificadora) oficial ou por uma CA própria.<br />
<br />
Para maiores detalhes sobre a criação das chaves, consulte o artigo [[Autoridade Certificadora (CA) com o OpenSSL]].<br />
<br><br><br />
<br />
== Situação 1: um servidor (gateway) e vários clientes ==<br />
<br />
A situação 1 encontra-se ilustrada na figura a seguir:<br />
<br />
[[Image:openvpn_rede1.jpg|center]]<br />
<br />
O gateway VPN, que geralmente é o filtro de pacotes mais externo do sistema de firewall, irá receber as conexões dos clientes externos. Poderá haver diversos clientes VPN.<br />
<br><br><br />
<br />
== Configuração do gateway OpenVPN (para a situação 1) ==<br />
<br />
==== Instalação do OpenVPN (Debian Etch) ====<br />
<br />
Para instalar o OpenVPN no Debian Etch, execute o comando:<br />
<br />
# apt-get install openvpn<br />
<br />
==== Criação dos certificados e das chaves ====<br />
<br />
Com base no artigo [[Autoridade Certificadora (CA) com o OpenSSL]], crie um par de chaves para ser utilizado no gateway. A chave pública deverá ser assinada pela CA, o que irá gerar um certificado.<br />
<br />
{{exclamação1|No ''commonName'' coloque o nome completo ([http://en.wikipedia.org/wiki/Fqdn FQDN]) do gateway completo da máquina que atuará como gateway. Exemplo: ''gangorra.rede.com.br''. No ''emailAddress'', coloque o endereço de e-mail do administrador da rede.}}<br />
<br />
Depois de gerar as chaves, torne a chave privada insegura, para que a mesma possa ser utilizada no gateway sem que haja um pedido de senha a cada conexão. Apenas para fins didáticos, utilize o nome ''insegura.key'' para a chave privada insegura.<br />
<br />
O próximo passo será renomear as chaves para melhorar a identificação das mesmas. Considerando que o nome do seu gateway seja ''gangorra'', execute os comandos:<br />
<br />
# mv newcert.pem gangorra.crt<br />
# mv insegura.key gangorra.key<br />
<br />
Também será necessário obter uma cópia do certificado raiz da CA que assinou a sua chave pública. Geralmente, o nome original desse certificado raiz é ''cacert.pem''. Seria interessante renomeá-lo também (renomeie uma cópia dele, preservando o original). Um exemplo, considerando o domínio ''rede.com.br'':<br />
<br />
# mv cacert.pem rede.crt<br />
<br />
Será necessária uma terceira chave. Essa chave só existirá do lado do gateway e será utilizada para troca inicial de informações, quando ainda estará sendo fechado o canal criptográfico. Para gerar a chave, com 1024 bits de tamanho, utilize o seguinte comando:<br />
<br />
# openssl dhparam -out ''nome''.dh 1024<br />
<br />
{{exclamação1|Substitua ''nome'' pelo nome ou sigla do nome da pessoa que irá receber a chave. Lembre-se de que os espaços deverão ser substituídos por underlines "_", pois trata-se de nome de arquivo. No caso do exemplo com o qual estamos trabalhando, ''gangorra.dh''.}}<br />
<br />
Ainda, crie uma chave para ser utilizada como segurança adicional no TLS. Essa chave existirá tanto no cliente quanto no gateway. Utilize o comando:<br />
<br />
# openvpn --genkey --secret gangorra.tlskey<br />
<br />
{{exclamação1|Note que o comando anterior foi '''openvpn''' e não '''openssl'''.}}<br />
<br />
==== Instalação dos certificados e das chaves ====<br />
<br />
Uma vez criados os certificados, os mesmos deverão ser colocados nos diretórios corretos dentro da máquina que será o gateway. Assim, coloque os seguintes arquivos nos seguintes diretórios:<br />
<br />
rede.crt (cópia de cacert.crt) ---> /etc/ssl/certs/<br />
gangorra.crt (antigo newcert.pem) ---> /etc/ssl/certs/<br />
gangorra.key (antiga insegura.key) ---> /etc/ssl/private/<br />
gangorra.dh (chave Diffie-Hellman) ---> /etc/ssl/private/<br />
gangorra.tlskey (segurança TLS) ---> /etc/ssl/private/<br />
<br />
A seguir, altere as permissões dos arquivos gerados para ter mais segurança:<br />
<br />
# chmod 644 /etc/ssl/certs/rede.crt<br />
# chmod 644 /etc/ssl/certs/gangorra.crt<br />
# chmod 400 /etc/ssl/private/gangorra*<br />
<br />
==== Arquivo de configuração do gateway (um exemplo) ====<br />
<br />
No Debian, após instalar o pacote OpenVPN, será criado o diretório ''/usr/share/doc/openvpn/'', que conterá diversas informações relevantes. Ao seguir os procedimentos existentes neste artigo, tudo deverá funcionar corretamente. No entanto, para um melhor entendimento e aprofundamento, seria interessante consultar o conteúdo do citado diretório.<br />
<br />
O arquivo ''/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz'' é um exemplo, '''comentado''', de arquivo de configuração do OpenVPN. É com base nele que deverá ser gerado o arquivo de configuração da vpn no gateway (em ''/etc/openvpn/''). <br />
<br />
{{exclamação1|O arquivo de configuração do gateway, a ser criado em ''/etc/openvpn/'', poderá ter qualquer nome, desde que a extensão de tal arquivo seja ''.conf''.}}<br />
<br />
A seguir, um exemplo de arquivo de configuração do gateway:<br />
<br />
local 200.200.200.200<br />
port 35000<br />
proto udp<br />
dev tun<br />
ca /etc/ssl/certs/rede.crt<br />
cert /etc/ssl/certs/gangorra.crt<br />
key /etc/ssl/private/gangorra.key<br />
dh /etc/ssl/private/gangorra.dh<br />
server 192.168.231.0 255.255.255.0<br />
push "route 10.0.0.0 255.0.0.0"<br />
push "dhcp-option DOMAIN rede.com.br"<br />
push "dhcp-option DNS 10.0.0.6"<br />
keepalive 10 120<br />
tls-auth /etc/ssl/private/gangorra.tlskey 0<br />
cipher BF-CBC<br />
comp-lzo<br />
user nobody<br />
group nogroup<br />
persist-key<br />
persist-tun<br />
status /var/log/openvpn-status.log<br />
log /var/log/openvpn.log<br />
log-append /var/log/openvpn.log<br />
verb 3<br />
<br />
Alguns comentários sobre algumas das linhas de configuração:<br />
<br />
* '''local''': contém o IP real do gateway na Internet.<br />
* '''port''': uma porta, escolhida aleatoriamente, para servir a conexão.<br />
* '''proto''': permite escolher o protocolo de transporte a ser utilizado. O protocolo UDP é o mais indicado, por ser simples e rápido.<br />
* '''server''': estabelece a rede de comunicação a ser utilizada pelos envolvidos para se comunicarem. Escolha uma rede que não exista em ambos os lados.<br />
* '''push''': utilizado pelo gateway para passar dados para os cliente, como um servidor DHCP. A linha route, por exemplo, estabelece a rota a ser utilizada para alcançar a rede 10.0.0.0/255.0.0.0 que, no caso, representa a rede interna a ser acessada via vpn.<br />
* '''tls-auth''': adiciona um grau de segurança. Deverá ter o parâmetro 0 no gateway e 1 nos clientes.<br />
<br />
A figura a seguir ilustrará alguns detalhes da configuração realizada:<br />
<br />
<br />
[[Imagem:openvpn_rede2.jpg|center]]<br />
<br />
<br />
{{exclamação1|Para mais detalhes sobre os parâmetros do arquivo de configuração, leia o conteúdo do arquivo ''/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz'' e o howto existente em http://openvpn.net/howto.html.}}<br />
<br />
A configuração, como foi apresentada, permite que o cliente navegue na rede a qual ele está diretamente ligado, além da rede remota servida pela VPN. Caso você deseje que o cliente permaneça isolado, fazendo com que ele só tenha acesso à rede oposta (via VPN), acresça a seguinte linha:<br />
<br />
push "redirect-gateway"<br />
<br />
==== Inicialização do serviço ====<br />
<br />
Para inicializar o serviço, utilize o comando a seguir:<br />
<br />
# /etc/init.d/openvpn start<br />
<br />
Verifique se o OpenVPN no gateway inicializou corretamente. Utilize o comando:<br />
<br />
# ps ax | grep openvpn<br />
<br />
Caso o OpenVPN não tenha inicializado corretamente, verifique o motivo no log ''/var/log/openvpn.log''.<br />
<br><br />
<br />
== Configuração dos clientes OpenVPN em máquinas GNU/Linux (para a situação 1) ==<br />
<br />
Cada máquina cliente terá que ser configurada, individualmente, de acordo com as instruções a seguir.<br />
<br />
==== Instalação do OpenVPN ====<br />
<br />
Assim como foi feito no servidor, instale o OpenVPN com o comando a seguir:<br />
<br />
# apt-get install openvpn<br />
<br />
==== Criação dos certificados e das chaves para o cliente ====<br />
<br />
Inicialmente, crie um par de chaves para o cliente. A CA deverá assinar a chave pública. A chave privada poderá ou não ser tornada insegura. Vide o artigo [[Autoridade Certificadora (CA) com o OpenSSL]].<br />
<br />
{{exclamação1|Caso a chave privada do cliente não seja tornada insegura, será pedida a senha para acessar a VPN. Isso poderá ser uma boa idéia, caso a máquina em questão seja pública.}}<br />
<br />
Renomeie as chaves para melhorar a identificação das mesmas. Utilize o nome da máquina cliente ou outra identificação qualquer. <br />
<br />
Você também irá precisar de uma cópia do certificado raiz da CA que assinou a sua chave pública e da chave TLS do gateway (no caso, ''gangorra.tlskey'').<br />
<br />
==== Instalação dos certificados e das chaves no cliente ==== <br />
<br />
Uma vez criados os certificados, os mesmos deverão ser colocados nos diretórios corretos dentro da máquina cliente. Assim, coloque os seguintes arquivos nos seguintes diretórios:<br />
<br />
rede.crt (certificado raiz da CA) ---> /etc/ssl/certs/<br />
canopus.crt (certificado do cliente) ---> /etc/ssl/certs/<br />
canopus.key (chave privada do cliente) ---> /etc/ssl/private/<br />
gangorra.tlskey (segurança TLS) ---> /etc/ssl/private/<br />
<br />
A seguir, altere as permissões dos arquivos gerados para ter mais segurança:<br />
<br />
# chmod 644 /etc/ssl/certs/rede.crt<br />
# chmod 644 /etc/ssl/certs/gangorra.crt<br />
# chmod 400 /etc/ssl/private/canopus.key<br />
# chmod 400 /etc/ssl/private/gangorra.tlskey<br />
<br />
==== Arquivo de configuração do cliente (um exemplo) ====<br />
<br />
O arquivo ''/usr/share/doc/openvpn/examples/sample-config-files/client.conf'' é um exemplo, comentado, de arquivo de configuração do OpenVPN. É com base nele que deverá ser gerado o arquivo de configuração da vpn no cliente (em ''/etc/openvpn/'').<br />
<br />
{{exclamação1|O arquivo de configuração do cliente, a ser criado em ''/etc/openvpn/'', poderá ter qualquer nome, desde que a extensão de tal arquivo seja ''.conf''. Seria interessante utilizar o mesmo nome da máquina cliente.}}<br />
<br />
A seguir, um exemplo de arquivo de configuração do cliente: <br />
<br />
client<br />
dev tun<br />
proto udp<br />
remote 200.200.200.200 35000<br />
resolv-retry infinite<br />
nobind<br />
persist-key<br />
persist-tun<br />
ca /etc/ssl/certs/rede.crt<br />
cert /etc/ssl/certs/canopus.crt<br />
key /etc/ssl/private/canopus.key<br />
tls-auth /etc/ssl/private/gangorra.tlskey 1<br />
cipher BF-CBC<br />
comp-lzo<br />
status /var/log/openvpn-status.log<br />
log /var/log/openvpn.log<br />
log-append /var/log/openvpn.log<br />
verb 3<br />
<br />
==== Inicialização do cliente ====<br />
<br />
Para inicializar o cliente, utilize o comando a seguir:<br />
<br />
# /etc/init.d/openvpn start<br />
<br />
Verifique se o OpenVPN no cliente inicializou corretamente. Utilize o comando:<br />
<br />
# ps ax | grep openvpn<br />
<br />
Caso o OpenVPN não tenha inicializado corretamente, verifique o motivo no log /var/log/openvpn.log. <br />
<br><br />
<br />
==== Teste da conexão ====<br />
<br />
Para testar a conexão, "pingue" um endereço IP que pertença à rede a ser acessada.<br />
<br />
==== A resolução de nomes ====<br />
<br />
Caso você esteja sem resolução de nomes no cliente, há várias saídas. Algumas delas:<br />
<br />
* Editar o arquivo ''/etc/resolv.conf'' e inserir o IP do servidor DNS da rede de destino.<br />
* Criar um servidor DNS local que faça forward de zona para o servidor DNS da rede de destino.<br />
* Editar o arquivo ''/etc/hosts'' e inserir o nome e o IP das máquinas desejadas.<br />
<br><br />
<br />
== Configuração dos clientes OpenVPN em máquinas MS Windows XP (para a situação 1) ==<br />
<br />
Cada máquina cliente terá que ser configurada, individualmente, de acordo com as instruções a seguir.<br />
<br />
==== Instalação do OpenVPN ====<br />
<br />
*Baixe e instale o pacote OpenVPN para MS Windows, disponível no site [http://openvpn.net/download.html OpenVPN.NET] (link Windows Installer). Sugiro fazer a instalação padrão, que deverá ocorrer em ''C:\Arquivos de Programas\OpenVPN''.<br />
<br />
*Baixe e instale o front-end [http://openvpn.net OpenVPN GUI]. Utilize a versão estável (stable) do tipo completa com instalação (installation package). Caso a instalação da interface TAP apresente problemas, clique em ignorar. Isso ocorre, uma vez que a interface virtual TAP já foi instalada pelo pacote OpenVPN e poderá já estar ativada. Sugiro fazer a instalação padrão (sem remover ou acrescer itens).<br />
<br />
==== Criação dos certificados e das chaves para o cliente ====<br />
<br />
Inicialmente, crie um par de chaves para o cliente. A CA deverá assinar a chave pública. A chave privada poderá ou não ser tornada insegura. Vide o artigo [[Autoridade Certificadora (CA) com o OpenSSL]].<br />
<br />
{{exclamação1|Caso a chave privada do cliente não seja tornada insegura, será pedida a senha para acessar a VPN. Isso poderá ser uma boa idéia, caso a máquina em questão seja pública.}}<br />
<br />
Renomeie as chaves para melhorar a identificação das mesmas. Utilize o nome da máquina cliente ou outra identificação qualquer. <br />
<br />
Você também irá precisar de uma cópia do certificado raiz da CA que assinou a sua chave pública e da chave TLS do gateway (no caso, ''gangorra.tlskey'').<br />
<br />
==== Instalação dos certificados e das chaves no cliente ==== <br />
<br />
Uma vez criados os certificados, os mesmos deverão ser colocados nos diretórios corretos dentro da máquina cliente. Assim, coloque os seguintes arquivos dentro de ''C:\Arquivos de Programas\OpenVPN\config'':<br />
<br />
rede.crt (certificado raiz da CA)<br />
canopus.crt (certificado do cliente)<br />
canopus.key (chave privada do cliente)<br />
gangorra.tlskey (segurança TLS)<br />
<br />
==== Arquivo de configuração do cliente (um exemplo) ====<br />
<br />
O arquivo ''C:\Arquivos de Probgramas\OpenVPN\sample-config\client.ovpn'' é um exemplo, comentado, de arquivo de configuração do OpenVPN. É com base nele que deverá ser gerado o arquivo de configuração da vpn no cliente. O arquivo final também ficará em ''C:\Arquivos de Programas\OpenVPN\config\'' e a sua extensão '''tem que ser .ovpn'''.<br />
<br />
{{exclamação1|O arquivo de configuração do cliente poderá ter qualquer nome, desde que a extensão de tal arquivo seja ''.ovpn''. Seria interessante utilizar o mesmo nome da máquina cliente e configurar o Windows Explorer para não ocultar extensões de arquivos conhecidos (menu Ferramentas > Opções de pasta... > Modo de exibição > Ocultar as extensões dos tipos de arquivos conhecidos).}}<br />
<br />
A seguir, um exemplo de arquivo de configuração do cliente: <br />
<br />
client<br />
dev tun<br />
proto udp<br />
remote 200.200.200.200 35000<br />
resolv-retry infinite<br />
nobind<br />
persist-key<br />
persist-tun<br />
ca rede.crt<br />
cert canopus.crt<br />
key canopus.key<br />
tls-auth gangorra.tlskey 1<br />
cipher BF-CBC<br />
comp-lzo<br />
status openvpn-status.log # comente esta linha se for utilizar o OpenVPN GUI<br />
log openvpn.log # comente esta linha se for utilizar o OpenVPN GUI<br />
log-append openvpn.log # comente esta linha se for utilizar o OpenVPN GUI<br />
verb 3<br />
<br />
==== Inicialização do cliente ====<br />
<br />
A inicialização do cliente poderá ser feita pelo OpenVPN ou pelo OpenVPN GUI. Para inicializar pelo OpenVPN, vá para ''C:\Arquivos de Programas\OpenVPN\config'' e dê um clique com o botão direito sobre o arquivo de configuração (''.ovpn''). A seguir, selecione ''Start OpenVPN on this config file''. Será pedida a senha da chave privada do cliente, caso a mesma não tenha sido tornada insegura.<br />
<br />
{{exclamação1|Após a inicialização da VPN, serão criados os arquivos de log em ''C:\Arquivos de Programas\OpenVPN\config''.}}<br />
<br />
Para inicializar o cliente pelo OpenVPN GUI (método aconselhado), clique com o botão direito do mouse sobre o ícone do mesmo, existente no SysTray, conforme mostrado na figura a seguir, e escolha a opção ''Connect''.<br />
<br><br><br />
[[Image:openvpn_systray.jpg|center]]<br />
<br><br><br />
Caso o OpenVPN não tenha inicializado corretamente, verifique o motivo no log ''openvpn.log''. <br />
<br><br />
<br />
==== Teste da conexão ====<br />
<br />
Para testar a conexão, "pingue" um endereço IP que pertença à rede ou tente acessar um site da mesma.<br />
<br />
<br />
<br />
== Links externos ==<br />
<br />
*[http://openvpn.net Site oficial do OpenVPN]<br />
*[http://openvpn.net/howto.html HowTo OpenVPN 2.0]<br />
<br><br />
<br />
== Controle de acessos ==<br />
<br />
<absHTML><br />
<div style="text-align: center;"><a href="http://www3.clustrmaps.com/counter/maps.php?url=http://www.eriberto.pro.br/wiki/index.php?title=OpenVPN" id="clustrMapsLink"><img src="http://www3.clustrmaps.com/counter/index2.php?url=http://www.eriberto.pro.br/wiki/index.php?title=OpenVPN" /><br />
</a></div><br />
<br><br />
<div style="text-align: center;">Consulte tamb&eacute;m o contador abaixo, iniciado em 27 jul. 07, al&eacute;m do gr&aacute;fico acima.<br />
</div><br />
</absHTML></div>Eriberto