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

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

MaraDNS: Simples - Seguro - Robusto

Recuperar a senha do root pelo CD

APT-GET sem CD: criando repositórios locais (parte 2)

Asterisk - Instalação e configuração no Debian Lenny

Montar MP3 e pendrives USB automaticamente com Hotplug

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts