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

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


OpenVPN em modo bridge



Sugiro a você utilizar o Red Hat para isso, na empresa onde trabalho instalei e configurei uma VPN no Red Hat Enterprise Linux 4 e nunca nos deu problemas. Chega de papo furado e mãos à obra!

Primeiro baixe o pacote OpenVPN ou utilize o apt-get para isso. No terminal digite:

# apt-get install openvpn

Pode ser que o apt "reclame" de algumas dependências do pacote, se for o caso, responda que sim a pergunta.

Após concluída a instalação, criaremos uma C.A. (Autoridade Certificador), os certificados, chaves e o arquivo de configuração da OpenVPN.

O primeiro passo para nosso servidor se tornar uma C.A. é alterar o arquivo openssl.cnf, no rhel4 o arquivo encontra-se em /usr/share/ssl/openssl.cnf. Se na sua distro não estiver no mesmo local digite "updatedb" e em seguida "locate openssl.cnf". Altere com seu editor preferido, aqui eu vou utilizar o vim:

# vim /usr/share/ssl/openssl.cnf

E altere as seguintes linhas:

Mais ou menos na linha 37 você encontrará a entrada:

dir = ./demoCA # Where everything is kept

Altere para:

dir = /etc/ssl/ca # Where everything is kept

Depois, mais ou menos na linha 43, altere a entrada:

certificate = $dir/cacert.pem # The CA certificate

Para:

certificate = $dir/ca.crt # The CA certificate

E mais ou menos na linha 46, altere:

private_key = $dir/private/cakey.pem# The private key

Para:

private_key = $dir/private/ca.key # The private key

Mais ou menos na linha 63, altere:

default_days = 365 # how long to certify for

Para:

default_days = 3650 # how long to certify for

Das linhas 73 à 80, altere conforme abaixo.

De:

# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

Para:

# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = match
commonName = supplied
emailAddress = supplied

Na linha 120, altere:

countryName_default = GB

Para:

countryName_default = BR

Na linha 125, de:

stateOrProvinceName_default = Berkshire

Para:

stateOrProvinceName_default = SC

Na linha 128, altere de:

localityName_default = Newbury

Para:

localityName_default = Florianopolis

Na linha 131, de:

0.organizationName_default = My Company Ltd

Para:

0.organizationName_default = (coloque o nome da sua empresa)

E por último, na linha 138 altere de:

#organizationalUnitName_default =

Para:

organizationalUnitName_default = VPN

Salve o arquivo e saia.

    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

Modem HSP 56 MR no Fedora Core 1

Instalando o Linux Ubuntu 8.04 Hardy Heron

Criando mirror do Debian Lenny e Debian Lenny Security em sua rede local

Apache2 - Instalação e configuração com autenticação

Problema resolvido: VMware Server 1.0.7 rodando no Debian Lenny Linux

  
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