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

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


Revogando um certificado



Se algum colaborador ou cliente se desligar da empresa e você quiser barrar a entrada dele na VPN, basta apenas revogar o certificado do mesmo.

Primeiro vamos copiar os arquivos revoke-full e vars do diretório /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/ para o diretório /etc/ssl/ca:

# cp /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/vars /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/revoke-full /etc/ssl/ca

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

# cd /etc/ssl/ca

Modifique o arquivo vars com seu editor preferido:

# vim vars

Modificando a linha 15 de:

export EASY_RSA="`pwd`"

Para:

export EASY_RSA="/etc/openvpn"

E modifique a linha 29 de:

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

Para:

export KEY_CONFIG="/usr/share/ssl/openssl.cnf"

Depois altere a linha 39 de:

export KEY_DIR="$EASY_RSA/keys"

Para:

export KEY_DIR="$EASY_RSA/ca/"

E edite as últimas linhas com a mesma DN utilizada no certificado da C.A.

Neste exemplo foram:

KEY_COUNTRY = BR
KEY_PROVINCE = SC
KEY_CITY = Florianopolis
KEY_ORG = nome da sua empresa
KEY_EMAIL = seu email

Ajuste conforme como foi criado na C.A., salve e saia do arquivo.

Agora torne os dois arquivos executáveis. No terminal digite:

# chmod +x revoke-full vars

Para revogar o certificado, primeiro deve-se executar o script vars e depois o revoke-full, assim:

# source ./vars

E então o script revoke-full seguido do nome do certificado, neste exemplo foi cliente, não precisa colocar extensão nenhuma.

# ./revoke-full cliente

Pronto, o certificado cliente e sua chave foram revogados, sendo inutilizados para conexão com esta OpenVPN.

Reinicie o servidor.

Agora toda vez que alguém estiver fora da empresa, basta se conectar na OpenVPN que estará dentro da rede da mesma, obtendo acesso a seus serviços.

Página anterior    

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

Servidor DHCP rápido e fácil para Conectiva Linux

Asterisk realtime e Trunk

Balanceamento de links no OpenBSD 4.3

Rodando seu script como "service" no Conectiva

Explicando DHCP passo a passo

  
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