Antes de mais nada, é preciso instalar o pacote bridge-utils para que você consiga trabalhar com bridges no Linux. Para isso:
# yum install bridge-utils
No site do OpenVPN você encontra dois scripts muito úteis para configurar a bridge facilmente, um para inicializar a bridge e outro para pará-la. Seguem os scripts, basta copiar e colar em arquivos executáveis no seu servidor:
#!/bin/bash
################################# # Set up Ethernet bridge on Linux # Requires: bridge-utils #################################
# Define qual o dispositivo da bridge
br="br0"
# Qual o dispositivo TAP será incluído na bridge # Para incluir vários: # tap="tap0 tap1 tap2"
tap="tap0"
# Define qual a interface ethernet que entrará na bridge. # A interface deve ser a que se conecta à rede interna.
eth="eth0"
eth_ip="192.168.8.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.8.255"
# Não precisa editar mais nada!
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
#################################### # Tear Down Ethernet bridge on Linux ####################################
# Interface da bridge
br="br0"
# Interface TAP utilizada pelo OpenVPN
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done
Para inicializar a bridge, entre no diretório onde você criou o script que inicializa a bridge e:
# chmod +x bridge-start.sh
# ./bridge-start.sh
Para pará-la:
# ./bridge-stop.sh
Para automatizar este processo e inicializar a bridge sempre que o OpenVPN for inicializado, adicione as duas linhas no final do arquivo de configuração da sua VPN:
up /etc/openvpn/vol-vpn/bridge-start.sh
down /etc/openvpn/vol-vpn/bridge-stop.sh
A primeira linha inicializa a bridge junto com o OpenVPN, a segunda para. Lembre-se que quando o seu sistema é configurado como bridge, ele perde o IP e fica inacessível pela rede. Para conseguir administrar seu servidor remotamente, pare a VPN ou coloque mais uma placa de rede que não participe da VPN apenas para conectar no servidor pelo SSH.
[1] Comentário enviado por paulorvojr em 26/01/2009 - 21:46h
Belo artigo!!,
ja usei muito o openvpn, alias foi a primeira solução de vpn que usei, o openvpn, muito bom recomendo.
o unico chato era que algumas pessoas (usuario chatos) nao queriam usar o cliente do openvpn em suas maquinas windows, ai tive que apelar pro PPTPD, ai o usuário so "disca" igual a uma vpn a la windows microsfot hehe.
recomendo a todos ae!! nao utilizei este artigo, mas pelo que li esta todo correto
[2] Comentário enviado por leandromoreirati em 27/01/2009 - 09:34h
Pogo,
Só nao entendi qual é a função da bridge nesse caso, pois tenhos alguns servidores com open e nao uso bridge nele axei interessante.
Outra coisa para deixa-la acessível na rede basta no script que carrega a bridge colocar um ip da valido na rede local, faço isso em alguns clientes e a maquina se torna uma bride mas com a acessibilide de um host linux da rede.
[3] Comentário enviado por pogo em 27/01/2009 - 10:43h
Moreira,
A bridge no caso é para que os protocolos que utilizem broadcast não dêem problemas e funcionem corretamente. Sem a bridge, a VPN é roteada e roteadores não fazem forward de broadcasts. Neste caso, o acesso a compartilhamentos com \\servidor\arquivos, por exemplo, não funcionariam (de acordo com o FAQ oficial do OpenVPN).
[4] Comentário enviado por elgio em 30/01/2009 - 10:21h
Parabéns pelo artigo. Gostei muito de sua linguagem, explicando cada passo, indo além do que sempre costumamos ver no VOL: mera receita de bolo.
Respondendo ao leo_jfa: uma VPN em modo bridge se comportará logicamente como se fosse um switch. Imagina que tem um server ligado na porta 1 do switch e o outro server na porta 24, mas que o switch na verdade são dois, separados por KMs uma parte do outro e como não tem um cabo quilométrico para ligar as duas partes, se usa a VPN em modo bridge. Tudo que entra na porta 1 do "switch" passa pela VPN para sair na porta 24, tal qual um switch.
EU NÃO RECOMENDO bridge a menos que você realmente precise dela. Em modo roteador é muito mais eficiente pois os broadcasts serão cortados. Nosso amigo aqui explicou bem porque precisava de bridge e porque usou ele. Certíssimo, com a ressalva que compartilhamento de Windows dá para ser feito inter-redes, se houver um servidor de Wins disponível.
No mais, use bridge com moderação! Na maioria dos casos de VPN, usar em modo roteador atende as necessidades.
[5] Comentário enviado por matheus.silva em 31/01/2009 - 15:04h
Fala Pedro blz????
Cara. show de bola o artigo.. com certeza será de grande utilidade pra mim que tenho muitos clientes com servidores windows e uma situação parecida com a sua.
[6] Comentário enviado por juniorarruda em 15/02/2009 - 10:34h
Parabens pelo artigo
Agora me tira uma dúvida, essa implantaçao seria caso eu quisesse colocar várias estações independentes se conectando diretamente ao servidor da matriz. Mas se em alguma filial eu tiver um servidor firewall, seria melhor eu fazer o firewall se conectar ao servidor VPN da matriz roteando o tráfego da sub-rede da filial para matriz ou fazer a conexão independente nas estação?
[7] Comentário enviado por pogo em 16/02/2009 - 08:46h
Bom dia Júnior,
Se você vai fazer uma VPN entre filiais, é melhor fazer uma VPN roteada entre 2 servidores. Assim, toda a sua rede interna sempre terá acesso à rede da outra filial sem necessidade de cada estação se conectar.
A VPN que descrevi no artigo só é interessante caso os usuários necessitem acessar a VPN quando estão fora de qualquer filial da empresa (como por exemplo em suas casas) e necessitam de algum recurso que só está disponível na rede interna.
Matheus,
Valeu pela força cara! Espero que o texto realmente te ajude =)
[8] Comentário enviado por doldan em 07/03/2009 - 07:49h
Muito bom artigo, para o fim a que se destina.
Tenho uma duvida que ainda não resovi, como posso configurar o openvpn apenas para conectar a uma vpn na matriz, não usamos certificados, no windows usamos o cisco vpnclient, colocamos os logins de acesso e pronto, quero passar essa conexão para o servidor linux debian, mas não consegui os parâmetros para configurar o openvpn.
[9] Comentário enviado por pogo em 07/03/2009 - 13:14h
doldan,
você pode usar as mesmas instruções que estão no texto, mas você não necessariamente vai precisar do openvpn gui. você pode inicializar o openvpn como um serviço no windows (instalando apenas o openvpn, não o openvpn gui).
[10] Comentário enviado por tomassoni em 26/03/2009 - 21:34h
Cara, estou com uma duvida para logar mais de um cliente é possível? tenho 9 filiais gostaria de conectar as 9 em um único ponto tem como com OpenVPN eu já dei um breve pesquisada e não encontrei muita coisa a respeito.
[12] Comentário enviado por eduardo em 30/09/2009 - 15:14h
Boa tarde,
Muito bom o seu artigo, mas gostaria de saber se você tem como me dar um complemento. Preciso ustilizar o openVPN GUI com autenticação também. Pode ser com certificados e senha ou apenas senha.
Que alteração preciso fazer para habilitar a autenticação?
[13] Comentário enviado por cabriocarico em 03/09/2010 - 10:36h
Bom dia,
Caro pogo, eu andei lendo seu artigo e achei muito interessante. Resolví entrar em contato para pedir ajuda na soluçÃO DE UM PROBLEMA.
Eu trabalho com o DEBIAN LENNY, e através de meu servidor, eu conseguime conectar com um VPN, onde o servidor MATRIZ fica em outro lugar.
NO meu servdior FILIAL, eu conectei sem muitos problemas. COnsigo pingar no IP da VPN.
Mas não estou conseguindo rotear para minha rede interna. Assim, ao ver o comentário [7], resolví solicitar sua ajuda.
As minhas estações da rede interna usam WINX XP, com endereços 192.168.0.XXX.
Quando dou tracert IP da VPN, nem se quer chega no meu servidor.
O que devo fazer para conseguir com que minha rede interna consiga pingar no IP da VPN?
OBS: SERVIDOR sem FIREWALL, sem PROXY, com DHCP e compartilhamento (INTERNET).
[14] Comentário enviado por pogo em 03/09/2010 - 11:00h
cabriocarico,
Você tem que verificar 2 detalhes:
* As redes que você está tentando interligar possuem o mesmo IP? Por exemplo, as duas redes são 192.168.0.X?
* Você tem regras no IPTables para permitir o roteamento entre as duas redes? O IP Forward no seu servidor gateway está habilitado?
[15] Comentário enviado por cabriocarico em 05/09/2010 - 15:27h
Eu recebí os certificados gerados para eu poder me conectar com uma VPN e assim compartilhar para minha rede interna.
O meu servidor consegue se conectar, autentica a conexão, eu consigo pingar do meu servidor no ip da VPN 10.X.X.X. Sem problemas.
Mas de qualquer PC da minha rede interna eu não consigo pingar no ip da VPN 10.X.X.X.
Segue abaixo minha configuracao:
eth0: 192.168.X.X (VELOX)
eth1 192.168.0.1 (rede interna).
pc da rede interna 192.168.0.5
[16] Comentário enviado por pogo em 05/09/2010 - 15:33h
cabriocarico,
O problema pode ser alguma outra regra no seu firewall que está impedindo a comunicação entre as redes. Reveja as regras e verifique por alguma que esteja negando pacotes de ou para a rede remota.
[18] Comentário enviado por lflavio_sp em 17/10/2011 - 23:32h
Naum conheço mto de linux mas ja refiz esses passos mas não consegui conectar da essa mensagem sempre e estou precisando implantar urgente na empresa o q pode estar acontencendo ...
eth0 .: 192.168.0.1 local
eth1 .: 10.1.1.2
Na bridge estou colocando eth0 com esse ip
no openvpn bridge 192.168.0.1 255.255.255.0 192.168.0.10 192.168.0.20
on Oct 17 23:26:17 2011 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
Mon Oct 17 23:26:17 2011 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Mon Oct 17 23:26:17 2011 LZO compression initialized
Mon Oct 17 23:26:17 2011 UDPv4 link local (bound): [undef]:1194
Mon Oct 17 23:26:17 2011 UDPv4 link remote: 10.1.1.2:1194
log.:
tls error : Cannot Locate HMAC in incomming packet
Netstat mostra a porta 10.1.1.2:1194 mas qdo dou um nmap naum mostra, deveria mostrar ???