OpenVPN + Bridge

Configuração do OpenVPN em modo bridge e autenticação por par de chaves, onde será criada uma C.A. no próprio servidor e os clientes que se autenticarem neste ganharão um ip na interface tap válido na rede interna, com seu gateway e DNS caso possua.

[ Hits: 83.963 ]

Por: roberto em 31/07/2008 | Blog: http://ditadornicastro.blogspot.com.br/


Configurando o certificado nos clientes



Vamos criar um certificado/chave para um cliente, estes passos servem para cria todos os certificados/chaves de todos os clientes.

Entre no diretório /etc/ssl/ca:

# cd /etc/ssl/ca

Para criar o certificado/chave do cliente usaremos o comando abaixo:

# openssl req -nodes -new -keyout cliente.key -out cliente.csr

Onde:
  • cliente.key - nome da chave do cliente, pode ser o nome da pessoa que vai usar, como joão.key ou ricardo.key;
  • cliente.csr - certificado csr do cliente, use o mesmo nome que foi utilizado na chave para facilitar sua visualização.

Mais uma vez você terá que responder aquelas perguntinhas de localidade e nome da empresa, nas seguintes perguntas apenas tecle ENTER, conforme a criação dos certificados anteriores:

Country Name (2 letter code) (BR):
State or Province Name (full name) [SC]:
Locality Name (eg, city) [Florianopolis]:
Organization Name (eg, company) [nome da sua empresa]:
Organizational Unit Name (eg, section) [VPN]:

Mas em:
  • Common Name (eg, your name or your server's hostname) []: - Aqui utilize o mesmo nome que você usou na chave, neste exemplo foi "cliente";
  • Email Address []: - Email do cliente;
  • A challenge password []: - Digite uma senha para o certificado.

Agora vamos fazer a C.A. assinar este certificado, no terminal digite:

# openssl ca -out cliente.crt -in cliente.csr

E responda "y" as perguntas sempre.

Pronto, nosso primeiro certificado de cliente foi criado, agora copie o certificado da ca ca.crt, o protocolo dh dh1024.pem mais o certificado/chave e o certificado assinado do cliente cliente.csr, cliente.key e cliente.crt para um disquete ou envie por e-mail para o cliente.

Se seus clientes usam o sistema da Microsoft, aconselho a instalarem o cliente openvn-gui, digite no Google "openvpn-gui" que encontrará vários executáveis para baixar. Instale-o nas máquinas clientes e copie todos os arquivos citados acima para a pasta C:\Arquivos de programas\OpenVPN\config (isso se você fez uma instalação default), e dentro deste diretório crie o arquivo client.ovpn com o seguinte conteúdo:

client
dev tap
proto tcp
remote (ip externo do servidor)
port 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Arquivos de programas\\OpenVPN\\config\\ca.crt"
dh "C:\\Arquivos de programas\\OpenVPN\\config\\dh1024.pem"
cert "C:\\Arquivos de programas\\OpenVPN\\config\\roberto.crt"
key "C:\\Arquivos de programas\\OpenVPN\\config\\roberto.key"
comp-lzo
verb 4
mute 20

Salve e saia.

Repita estes passos para cada cliente que for se conectar remotamente, lembrando sempre de utilizar um nome diferente para cada um. Se você fizer no mesmo esquema que eu faço, colocando o nome da pessoa no certificado, fica mais fácil.

De volta ao servidor...

Página anterior     Próxima página

Páginas do artigo
   1. OpenVPN em modo bridge
   2. Preparação do ambiente e criação do certificado
   3. Configuração da OpenVPN (servidor)
   4. Configuração da bridge entra a interface virtual e real
   5. Levantando a VPN
   6. Configurando o certificado nos clientes
   7. Revogando um certificado
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Apache 2.0 + PHP + PostgreSQL no Slackware

Regras de ouro ao instalar o Linux em empresas

CUPS + Jasmine (gerenciador de impressões e relatórios de impressão)

ROX-Files: Ícones para gerenciadores de janelas que não suportam ícones

Assistindo TV usando a placa VideoHighway Xtreme (ou outra baseada no bttv)

  
Comentários
[1] Comentário enviado por apscherbach em 31/07/2008 - 08:54h

Cara, se funciona, simples assim, que beleza, heim!! :)

Vou testar logo que possa.

Parabéns!

[2] Comentário enviado por removido em 31/07/2008 - 11:08h


Apesar de eu não usar nenhum tipo de vpn o artigo está show.

[3] Comentário enviado por removido em 31/07/2008 - 15:20h

Primeiramente parabéns pelo excelente artigo, muito bom mesmo...

mas fiquei com algumas duvidas:

na linha:

push "route (ip do server mail)

server mail???
que mail? qual ip deve ser colocado aqui???

outra duvida foi, porque colocar rotas se você está usando bridge? não entendi o porque das rotas...

[4] Comentário enviado por grandmaster em 31/07/2008 - 15:39h

Interessante.

Tb nunca use VPN no linux. Assim que reviver minha máquina que tinha linux em casa testarei isso :D

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[5] Comentário enviado por cristyangiovane em 01/08/2008 - 17:49h

Parabéns...

Muito bom o artigo.

[6] Comentário enviado por Ditador Nicastro em 02/08/2008 - 08:20h

Taylon, onde está push "route (ip do server mail) (mascara do server) (ip do gateway da rede)", é porque eu tinha feito esta configuração para um colega, esqueci de retirar do exemplo, a rota é proque o servidor dele estava com um firewall que apenas deixava o ip da empresa dele passar, por isso criei esta rota, para que todos que quiserem se conectar ao servidor de emal dele primeiro terem que se conectar à vpn., abrass.

[7] Comentário enviado por fabriciostuff em 13/10/2008 - 13:10h

Nicastro, estou com umas no cenário onde estou montando vpn com o OpenVPN.

Eu tenho um servidor Firewall, faz o roteamento e DHCP. Instalei e configurei a VPN. Sobre os script de bridge-start e bridge-stop foi os que eu não consegui configurar. Meu servidor tem um endereço de IP válido eth0 (200.xxx.xxx.xxx) e na eth1 possui o endereço de rede interna (192.168.1.254) que serve como gateway. Qual seria a configuração para os arquivos de script bridge-start e bridge-stop? É necessário fazer alguma mudança no arquivo openvpn.conf?

Grato!

[8] Comentário enviado por Ditador Nicastro em 22/10/2008 - 15:01h

fabriciostuff, você deve fazer a bridge com a sua placa da rede interna, no arquivo openvpn.conf não vai ser necessário alterar nada, quer dizer se você configurou tudo certinho conforme a tua rede, sendo este gateway interno o gateway para quem se conectar a tua openvpn.

Abrass.

[9] Comentário enviado por paulistinha em 18/02/2009 - 07:26h

Ola....

Por favor, veja se consegue me ajudar....

Ao gerar o certificado, no passo:

# openssl ca -gencrl -out crl.pem -config /etc/pki/tls/openssl.cnf

Tenho a seguinte mensagem de erro:

[root@fedora ca]# openssl ca -gencrl -out crl.pem -config /etc/pki/tls/openssl.cnf
Using configuration from /etc/pki/tls/openssl.cnf
/etc/ssl/ca/crlnumber: No such file or directory
error while loading CRL number
4985:error:02001002:system library:fopen:No such file or directory:bss_file.c:352:fopen('/etc/ssl/ca/crlnumber','r')
4985:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:

Ocorre que ele nao acha o arquivo "/etc/ssl/ca/crlnumber". Como proceder para que ele seja criado? Está faltando algum passo ou configuracao?

Grato.

[10] Comentário enviado por robertobrandao em 25/02/2009 - 19:05h

cara ese seu erro esta ocorrendo que o arquivo /etc/ssl/ca/crlnumber nao existe ate ai você já sabe execute o seguinte comando:
cd /etc/ssl/ca <enter>
agora vamos cria o arquivo e por um conteudo dentro dele

echo 01 > clrmunber

pronto mano agora você pode gerar seu certificado....

[11] Comentário enviado por andrejales2 em 10/05/2010 - 10:45h

estou tentando instala um servidor e 2 clientes em uma rede no laboratoria da faculdade.
gostaria de saber se eu fizer todos estes passos consigo configurar o servidor e os clientes,
ou se tem mais alguma coisa que tenho que fazer, pois ja tentei instalar no windows e nao deu certo.
se vc tiver alguma outra informação por favor me passe.
Obrigado.

[12] Comentário enviado por Ditador Nicastro em 10/09/2010 - 15:47h

andrejales2
Neste artigo está tudo para configurar servidor e clientes, no windows também dá pra fazer a mesma coisa, eu já fiz a mesma configuração utilizando um servidor openvpn para windows, e os clientes tanto faz se for win ou linux eles conectam sem problemas.

[13] Comentário enviado por henriquemeira em 09/06/2011 - 17:35h

Consegui fazer a conexão entre cliente e servidor, mas ao tentar um ping não há resposta.

Servidor: Linux/Ubuntu
Cliente: Windows

Será que tem que mexer em algo relacionado à rotas no cliente?

Grato!

Parabéns, ótimo tutorial.

[14] Comentário enviado por l.bferreira em 27/01/2012 - 10:09h

Parabéns pelo post...

estou tentando replicar porém quando "starto" meu openvpn me retorna o seguinte erro:

Fri Jan 27 09:55:51 2012 OpenVPN 2.2.0 i686-linux-gnu [SSL] [LZO2] [EPOLL] [PKC$
Fri Jan 27 09:55:51 2012 NOTE: when bridging your LAN adapter with the TAP adap$
Fri Jan 27 09:55:51 2012 NOTE: your local LAN uses the extremely common subnet $
Fri Jan 27 09:55:51 2012 NOTE: the current --script-security setting may allow $
Fri Jan 27 09:55:51 2012 Diffie-Hellman initialized with 1024 bit key
Fri Jan 27 09:55:51 2012 WARNING: file 'keys/matriz.key' is group or others acc$
Fri Jan 27 09:55:51 2012 TLS-Auth MTU parms [ L:1574 D:138 EF:38 EB:0 ET:0 EL:0$
Fri Jan 27 09:55:51 2012 Socket Buffers: R=[114688->131072] S=[114688->131072]
Fri Jan 27 09:55:51 2012 TUN/TAP device tap0 opened
Fri Jan 27 09:55:51 2012 TUN/TAP TX queue length set to 100
Fri Jan 27 09:55:51 2012 /etc/bridge-start tap0 1500 1574 init
Fri Jan 27 09:55:51 2012 WARNING: Failed running command (--up/--down): could n$
Fri Jan 27 09:55:51 2012 Exiting

quando descomento a chamada de etc//start-bridge não aparece o erro, porém preciso do bridge funcionando.

meu cenário
IP real - 187.35.x.x
rede do servidor vpn - eth1 :172.16.0.1 255.255.254.0
rede cliente - 192.168.1.1

se puder me ajudar fico agradecido

[15] Comentário enviado por tiagozappa em 15/02/2012 - 10:39h

Muito show o arquivo, tenho uma dúvida referente a configuração do servidor.
Segue a descrição do meu ambiente.

MATRIZ.
Rede interna 192.168.0.0/24
Ip rede interna do servidor (eth0) 192.168.0.1 255.255.255.0
IP rede internet (eth1) 172.0.0.2 -- é o ip de saída para o ADSL
GW do servidor (eth1) 172.0.0.1 -- é o ip do modem ADSL

Filial
Rede interna 192.168.1.0/24
Ip rede interna do servidor (eth0) 192.168.1.1 255.255.255.0
IP rede internet (eth1) 172.0.0.2 -- é o ip de saída para o ADSL
GW do servidor (eth1) 172.0.0.1 -- é o ip do modem ADSL

Minha dúvida é referente a configuração do servidor.
a opção do server-bridge, deixo assim:
server-bridge 192.168.0.1 255.255.255.0 192.168.0.200 192.168.0.230

Ou estou usando tudo errado, e para usar a opção de serve brigde, eu usaria na matriz e filial a mesma rede (192.168.0.0/24)
Colocando a seguinte configuração:
MATRIZ.
Rede interna 192.168.0.0/24
Ip rede interna do servidor (eth0) 192.168.0.1 255.255.255.0
IP rede internet (eth1) 172.0.0.2 -- é o ip de saída para o ADSL
GW do servidor (eth1) 172.0.0.1 -- é o ip do modem ADSL

Filial
Rede interna 192.168.0.0/24
Ip rede interna do servidor (eth0) 192.168.0.200 255.255.255.0
IP rede internet (eth1) 172.0.0.2 -- é o ip de saída para o ADSL
GW do servidor (eth1) 172.0.0.1 -- é o ip do modem ADSL

E daí usando a opção:
server-bridge 192.168.0.1 255.255.255.0 192.168.0.200 192.168.0.230
(aqui no range, começa pelo ip do primeiro client? ou seja; o ip do servidor da filial?)

Ou seja, eu divido a faixa de ip da rede 192.168.0.0 e deixo tanto matriz, como filial com a mesma faixa de ip, e faço os dois server conversarem com a vpn+bridge, assim, as duas redes conversam????

Deu para entender o que quiz dizer?? qual das duas soluções posso executar??? obrigado.

[16] Comentário enviado por santosrh3080 em 17/03/2016 - 11:43h

Galera ,

Tenho uma VPN acima descrita funcionando perfeitamente , maquina física.
Porém quero liberar a maquina e estou tentando configurar uma maquina virtual com o CentOs 7.
Como disse acima to usando uma maquina virtual com 2 placas de rede...1 com ip valido (internet ) 1 com ip na minha rede interna.
Conecto normalmente a VPN já que a conexão eh feita com o ip valido , porem não consigo nem pingar nas maquinas da rede interna.
Curioso que tenho as mesmas configurações na maquina física e esta funcionando perfeitamente bem. Sera que por ser virtual tem alguma coisa particularidade ?
Faco a bridge com a minha rede interna.
Caso alguém possa me ajudar eu ficaria grato.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts