OpenVPN + Bridge no Ubuntu Server

Este artigo mostra como utilizar uma bridge para unir duas redes diferentes, através de um link de comunicação utilizando OpenVPN.

[ Hits: 72.750 ]

Por: alessandro em 15/09/2010


Objetivo



O objetivo deste trabalho é mostrar na prática a comunicação entre dois hosts, através de uma conexão VPN. O host servidor da VPN está em uma rede classe C e host cliente da VPN está em rede classe B.

Vamos utilizar uma bridge para que os dois hosts possam se comunicar como se estivessem na mesma rede, utilizando OpenVPN com chaves criptográficas para maior segurança na comunicação no túnel VPN. Abaixo figura do diagrama de rede.

Instalando OpenVPN no Ubuntu Server 10.04

Para este artigo vamos utilizar distribuição Ubuntu Server 10.04, comandos servem para qualquer distribuição baseada no Debian.

Primeiramente temos que instalar o OpenVPN:

sudo apt-get install openvpn

Depois de instalar o servidor OpenVPN, ele cria um diretório onde tem um conjunto de scripts para facilitar administração do servidor OpenVPN, e também a manutenção das chaves de segurança e certificados, no caso do Ubuntu Server este diretório esta localizado em /usr/share/doc/openvpn/examples/easy-rsa/2.0.

Vá até esse diretório através de um comando "cd" e depois liste seu conteúdo com ls.

Neste diretório estão scripts para facilitar a vida do administrador para gerar certificados válidos para conexão VPN.

Agora no diretório /etc/ crie a pasta openvpn, crie também uma pasta para receber scripts do easy-rsa:

sudo mkdir /etc/openvpn (importante usar o sudo ou root, usuário comum não tem permissão para gravar neste diretório)

Crie a pasta chamada easy-rsa ou outro nome de sua preferência:

sudo mkdir easy-rsa

Agora é só copiar conteúdo para o novo diretório com "cp -a" para conservar os atributos dos arquivos:

sudo cp -a /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/esasy-rsa

Feita a cópia dos arquivos para novo diretório /etc/openvpn/easy-rsa, utilize os scripts para configurar o servidor.

Não esqueça de utilizar o root daqui pra frente. No Ubuntu o root é desabilitado, então dê o seguinte comando no seu terminal e você pode usar root sem ter que habilitar sua conta:

sudo su

Primeiramente entre no diretório /etc/openvpn/easy-rsa e edite o arquivo "vars" com seu editor favorito, procure as linhas abaixo.
Altere as configurações de acordo com seu servidor, com informações de País, Estado, Cidade, Empresa e Email de contato, como exemplo abaixo:
Agora execute o comando:

sudo source vars

Esse comando vai carregar as variáveis contidas dentro do arquivo vars.

Note que ele emite um aviso que você tem que rodar o comando ./clean-all, esse comando serve para limpar configurações anteriores caso exista.

# ./clean-all

Feita a limpeza, é hora de construir certificado raiz do servidor através do script:

# ./build-ca

Este comando cria um certificado raiz com openssl, ao executá-lo irá pedir para digitar a abreviação do País, Estado, Cidade, Empresa e Email, como fizemos no arquivo "vars". Se você editou o vars é só teclar enter em todos, menos na opção name, nela você coloca o hostname do servidor.

Agora dando um ls dentro da pasta você verá que ele criou a pasta "Keys", onde serão armazenadas as chaves do servidor, dando ls na pasta keys, serão exibidos os arquivos o "ca.crt" e "ca.key", estes são os certificados raízes do servidor e sua chave, de extrema importância, pois estes arquivos são responsáveis por gerar as chaves de acesso, e qualquer um que tenha estes arquivos pode gerar chaves válidas para entrar em sua VPN.

Agora o servidor está configurado e pronto para criar os certificados.

    Próxima página

Páginas do artigo
   1. Objetivo
   2. Gerando chaves
   3. Configuração do servidor
   4. Configuração do cliente
   5. Criando a Bridge
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Quota - Criando e administrando no CentOS

Pós-instalação do Arch Linux

Configurando conexão ADSL com Linux

Configurando um cluster com o Fedora Core 4 e MPICH-2

Controle de versão usando Git integrado ao Redmine

  
Comentários
[1] Comentário enviado por obernan em 15/09/2010 - 09:43h

Primeiramente parabens pelo artigo e obrigado pela contribuicao, estou louco para testar seu tutorial, mas so tenho uma duvida, se a rede do servidor 192.168.137.0/24 e a dos clientes e 172.16.0.0/24, porque que na conf do servidor vc colocou "server-bridge 192.168.0.254 255.255.255.0 192.168.0.100 192.168.0.110" //aqui endereço do servidor e sua configuração para suporte a bridge e também faixa de endereços para clientes.
Porque pelo que eu pude endender nao precisa adicionar rotas, os clientes pegam a mesma faixa de ip da matriz.

[2] Comentário enviado por obernan em 15/09/2010 - 09:55h

Ah !!!!! E com relaçao as portas vc nao sitou ai, tem que colocar nas confs, fazer redirecionamento de porta !!!!!!!!

[3] Comentário enviado por macgyver_rp em 15/09/2010 - 09:57h

Ow obrigado ...
desculpa falha nossa..coloquei arquivo editado e dei print da tela..me enganei na hora do ip correto é abaixo como você observou bem.

"server-bridge 192.168.137.254 255.255.255.0 192.168.137.100 192.168.137.110'" .

[4] Comentário enviado por macgyver_rp em 15/09/2010 - 10:10h

Outra observação , quem tem IP valido de internet exemplo 189.23.159.10 de alguma operadora vai ter colocar no arquivo de configuração do cliente endereço valido internet do servidor.
Tem opção de informar a porta no config sim e rota de acordo com configuração de sua rede.

exemplo

push "route xxx.xxx.xxx.xxx mmm.mmm.mmm.m" onde x é seu ip e m sua mascara de rede e adiciona linha no config do servidor caso sua rota com internet ou rede seja diferente dos padrões e porta voce adiciona opção no cliente config caso porta não seja a padrão do openvpn-server 1194 udp.
segue link abaixo que tem dicas boas.
http://www.dicas-l.com.br/arquivo/openvpn_com_os_clientes_na_mesma_rede.php

[5] Comentário enviado por obernan em 16/09/2010 - 23:10h

Oh rapa, to testando, quando terminar posto aqui !!!!
Brigadao, valeu mesmo !!!!
Abraço

[6] Comentário enviado por tiagozappa em 15/02/2012 - 10:57h

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. f

[7] Comentário enviado por macgyver_rp em 15/02/2012 - 16:16h

Boa Tarde Tiago,

Respondendo sua Duvida, essa solução serve para tanto unir redes com IP´s diferentes ou para unir redes de mesma faixa separadas pela rede wan da operadora de internet.

Você pode usar faixa diferente da sua rede da matriz na filial...resultado - pc´s da filial não acessam matriz.
mesma faixa - pc da filial recebe endereço da mesma faixa - pcs filial acessam matriz.

Bridge
matriz uma faixa 192.168.0.0/24
filial uma faixa 192.168.1.0/24
bridge uma faixa 192.168.2.0/24 - com um só cliente o servidor da filial

quando server da filial se conectar a matriz - vai assumir ip da bridge 192.168.2.100 por exemplo ai redirecionar trafego da interface eth0 para eth1 depois para interface br0 - bridge uni a rede wan a lan usando VPN garante mais segurança dentro de túnel criptografado. então tanto faz endereço da rede interna da matriz ou da filial estarem na mesma faixa...importante é que para evitar conflitos de IP determinar ranges diferentes na matriz e da filial para evitar ter 2 hosts com mesmo ip por serem servidores DHCP diferentes... ideal serem de faixas diferentes como você coloca na opção 1 ..unica coisa que na bridge você tem colocar faixa diferente da faixa da eth0. .
No exemplo do artigo estava rede local -
se voce tem ip fixo na matrix nos arquivos de config devera usar ip dado pela sua operadora. porque na hora de conectar filial com matriz na filial no config tem estar ip da matrix valido de internet não ip 172.0.0.2 .

espero que tenha ajudado.
site abaixo tem dica legal.
http://www.dicas-l.com.br/arquivo/openvpn_com_os_clientes_na_mesma_rede.php#.Tzv2Mk4geuk



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts