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: 80.501 ]

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


Preparação do ambiente e criação do certificado



Agora criaremos os diretórios necessários para as configurações que criamos, digite no terminal:

# mkdir -p /etc/ssl/ca
# mkdir /etc/ssl/ca/certs
# mkdir /etc/ssl/ca/newcerts
# mkdir /etc/ssl/ca/crl
# mkdir /etc/ssl/ca/private
# touch /etc/ssl/ca/index.txt
# echo 01 > /etc/ssl/ca/serial
# chmod -R 700 /etc/ssl/ca


Criaremos agora o certificado/chave da C.A., digite no terminal:

# cd /etc/ssl/ca
# openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650


Algumas informações de localidade e nome da empresa serão perguntadas, como já configuramos no arquivo openssl.cnf algumas respostas default, nas seguintes perguntas basta você teclar ENTER:

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]:

Common Name (eg, your name or your server's hostname) []: - aqui coloque o nome do seu servidor.

Email Address []: - e aqui coloque o email do responsável pelo servidor, no caso o seu email.

Pronto, o certificado e chave da C.A. foram criados, agora vamos movê-los para os diretórios configurados.

Mova a chave do certificado para dentro do subdiretório private em /etc/ssl/ca:

# mv ca.key ./private

Agora criaremos o algoritmo usado para a troca de chaves criptográficas durante a execução do OpenVPN. Utilize no comando a criptografia que consta no arquivo openssl.cnf, no nosso caso 1024bits.

No terminal digite:

# openssl dhparam -out dh1024.pem 1024

E então criaremos o certificado de revogação, crl.pem. No terminal digite:

# openssl ca -gencrl -out crl.pem -config /usr/share/ssl/openssl.cnf

E finalmente vamos gerar o certificado do servidor, no terminal digite:

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

Mais uma vez algumas informações deverão ser preenchidas, siga os mesmos passos da geração da C.A.:

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]:
Common Name (eg, your name or your server's hostname) []: - O mesmo informado no certificado da C.A.
Email Address []: - O mesmo informado no certificado da C.A.
A challenge password []: - A única diferença entre o certificado da C.A. e do servidor é aqui, informe uma senha.

Agora vamos assinar a chave do servidor com o certificado da C.A., no terminal digite:

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

E responda "y" para todas as perguntas.

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

Instalando e configurando o SSH

Configurando 2 (dois) links ADSL no mesmo servidor

Configurando o Slackware 12 no Itautec Infoway Note W7645

Configurando o CACIC (parte 5)

Audacity - Editando áudios sem instalação

  
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:

[[email protected] 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