terça-feira, 10 de setembro de 2013

TUTORIAL - ZIMBRA 8 NO DEBIAN 6 SQUEEZE


TUTORIAL 4 - IMPLEMENTANDO UM SERVIÇO DE CHAT INTEGRADO COM O ZIMBRA (ZEXTRAS SUITE)


Esse é a última parte de uma série de quatro tutoriais que possui como objetivo demonstrar a instalação do mais recente servidor de e-mails Zimbra, a configuração de um backup e como bônus a instalação de um chat integrado com o serviço de e-mail.


1 INTRODUÇÃO

Nesse último tutorial iremos instalar e configurar o ZeXtras Suite, uma extensão para o Zimbra que adiciona diversos recursos ao servidor. Como, por exemplo, backup e sincronia de arquivos para dispositivos móveis. Para a utilização desses é necessário o pagamento de uma licença. A boa notícia é que o recurso de Mensagem Instantânea (Chat) que vamos implementar é gratuito.


2 INSTALAÇÃO

2.1 BACKEND

A instalação do ZeXtras Suite é bastante simples. Siga os passos abaixo:

#cd /root/

# wget http://www.zextras.com/download/zextras_suite-latest.tgz

# tar -zxvf zextras_suite-latest.tgz

# cd zextras_suite-latest



Obs: O comando abaixo irá parar o servidor Zimbra, dessa forma o procedimento deve ser executado quando o mesmo não estiver em uso.

#./install core

Responda sim para todas as perguntas [Y], e aguarde o final da instalação.

#./install zimlet

Responda sim para todas as perguntas [Y], e aguarde o final da instalação.


2.3 FRONTEND


Com o pacote ZeXtras Suite instalado precisamos agora instalar o cliente do Chat. Essa instalação pode ser feita via interface do console de administração do zimbra.


a) Obter o zextras_chat_zimlet que pode ser salvo em qualquer terminal que tenha acesso a interface web de administração do Zimbra. Você pode encontrar o pacote necessário em:

http://gallery.zimbra.com/type/zimlet/zxchat-free-instant-messaging-zimbra-8

ou baixar diretamente no link abaixo:

http://gallery.zimbra.com/download/949/1192

b) Descompacte o arquivo tar, para ter acesso ao arquivo com_zextras_chat.zip

c) Logar na interface de administração do zimbra e clique em Configurar --> Zimlets.


d) Na engrenagem no canto superior direito (do lado de Ajuda) clique em Distribuir.

e) Selecione o arquivo com_zextras_chat.zip, clique em distribuir e concluir.


O Chat já irá aparecer para qualquer usuário que logar no Zimbra. Se o usuário preferir pode desativar o chat em Preferências --> Zimlet.


3 CONCLUSÃO

Espero que, com essa sequência de tutoriais, o objetivo de desmistificar e mostrar de uma maneira prática e rápida a instalação e configuração de um servidor de e-mail completo com o Zimbra tenha sido atingido. Não deixe de comentar com sugestões, críticas e dúvidas. É a sua participação que motiva o compartilhamento de conhecimento.


REFERÊNCIAS

ZETRAS SUITE. Disponível em: <http://www.zextras.com/pt/>
TUTORIAL - ZIMBRA 8 NO DEBIAN 6 SQUEEZE


TUTORIAL 3 - CONFIGURAÇÃO DO BACKUP DO ZIMBRA (ZMBKPOSE)

Esse é a terceira parte de uma série de quatro tutoriais que possui como objetivo demonstrar a instalação do mais recente servidor de e-mails Zimbra, a configuração de um backup e como bônus a instalação de um chat integrado com o serviço de e-mail.


1 INTRODUÇÃO

Nesse terceiro tutorial iremos instalar e configurar o Zmbkpose, um script capaz de realizar o backup das contas de e-mails e arquivos dos usuários Zimbra. É importante saber, que o Zmbkpose não é capaz de fazer backup de Agenda, Contatos e Tarefas.  Para continuar é necessário que você tenha completado com sucesso o tutorial número dois.


2 INSTALAÇÃO

2.1 PRÉ-REQUISITOS

a) Para o funcinamento do Zmbkpose é necessário instalar os pacotes obtidos com o comando abaixo:

#apt-get install ldap-utils curl

b) É necessário também criar o diretório de configuração com o comando:

#mkdir /etc/zmbkpose

2.2 CONFIGURAÇÃO

c) Criar o arquivo /etc/zmbkpose/zmbkpose.conf com a configuração inicial obtida no site:

http://www.kyapanel.com/wiki/doku.php?id=zimbra:zmbkpose

d) Modifique as seguintes linhas do script de acordo com o exemplo abaixo:

BACKUPUSER=zimbra
WORKDIR=/opt/zimbra/backup
ADMINUSER=admin@teste.com.br
ADMINPASS=(senha definida na instalação para o admin)
LDAPMASTERSERVER=ldap://teste.com.br:389
LDAPZIMBRADN=uid=zimbra,cn=admins,cn=zimbra
LDAPZIMBRAPASS= (obtido com o comando zmlocalconfig -s zimbra_ldap_password com o usuário zimbra).
LOGFILE=/var/log/zimbra_backup.log



e)Criar o arquivo /usr/local/bin/zmbkpose com o código do script obtido no site:

http://www.kyapanel.com/wiki/doku.php?id=zimbra:zmbkpose


f) Definir o script como executável.

#chmod + /usr/local/bin/zmbkpose

g) Execute um backup de todas as contas.

#su - zimbra
#zmbkpose -f



h) Você pode restaurar o backup de uma conta com o comando:

#su - zimbra
#cd /opt/zimbra/backup
#zmbkpose -r irineu@teste.com.br full-20130412141920


onde

full-20130412141920 = nome do arquivo de backup.

Você encontra a lista de backup no arquivo sessions.txt

#cat /opt/zimbra/backup/sessions.txt


2.3 COMANDOS BÁSICOS E DICAS

Para conhecer a sintaxe de utilização, digite simplesmente “zmbkpose” logado com o usuário zimbra. Você também pode agendar no crontab o comando de backup para ser executado automaticamente. Também é possível utilizar um backup incremental.


3 CONCLUSÃO

Até o momento o zmbkpose me parece a melhor solução livre para backup do Zimbra. Existem ferramentas comerciais que oferecem diversos outros recursos. Uma delas faz parte do pacote que instalaremos para disponibilizar um Webchat aos usuários do nosso servidor Zimbra. No próximo tutorial iremos personalizar o Zimbra integrando um recurso de chat.

REFERÊNCIAS


BACKUP NO ZIMBRA. Disponível em: <http://www.kyapanel.com/wiki/doku.php?id=zimbra:zmbkpose>

FILHO, Rubens Afonso. Zmbkpose. Disponível em: <http://markintux.net/tag/zmbkpose/>

segunda-feira, 22 de abril de 2013

TUTORIAL - ZIMBRA 8 NO DEBIAN 6 SQUEEZE


TUTORIAL 2 - INSTALAÇÃO E CONFIGURAÇÃO DO SERVIÇO DE E-MAIL ZIMBRA

Essa é a segunda parte de uma série de quatro tutoriais que possui como objetivo demonstrar a instalação do mais recente servidor de e-mails Zimbra, a configuração de um backup e como bônus a instalação de um chat integrado com o serviço de e-mail.

1 INTRODUÇÃO

Nesse segundo tutorial iremos instalar e configurar o Zimbra, o qual no final, estará pronto para ser utilizado. É necessário que você tenha completado com sucesso o primeiro tutorial para continuar.

2 INSTALAÇÃO

2.1 OBTENDO O ZIMBRA

O servidor de e-mail Zimbra é desenvolvido para diversas plataformas Linux, no entanto oficialmente não é homologada para o sistema operacional Debian. Apenas para constar, nunca tive problemas com o Zimbra sendo executado sobre o sistema Debian.
Para nossa instalação utilizaremos o pacote de instalação do Zimbra para o Ubuntu 10.04 LTS, que é o irmão mais próximo homologado pelo empresa que desenvolve o Zimbra.

Baixe o pacote do link 64bit x86 disponível em:
https://www.zimbra.com/downloads/os-downloads.html

Você pode baixar também em uma pasta (aconselho baixar na pasta /root) do sistema  operacional com o comando:

#cd /root
#wget http://files2.zimbra.com/downloads/8.0.3_GA/zcs-8.0.3_GA_5664.UBUNTU10_64.20130305090205.tgz


Descompactar os arquivos de instalação

#tar -zxvf zcs-8.0.3_GA_5664.UBUNTU10_64.20130305090205.tgz

2.2 EXECUTANDO A INSTALAÇÃO

Com todos os requisitos atendidos a instalação do Zimbra é relativamente simples.

Entre na pasta onde a instalação foi descompactada e execute a instalação:

#cd zcs-8.0.3_GA_5664.UBUNTU10_64.20130305090205

#./install.sh --platform-override


A instalação irá realizar algumas perguntas de configuração, basta responder de acordo com a sequência abaixo:

Do you agree with the terms of the software license agreement? Y
Do you agree with the terms of the software license agreement? Y

Install zimbra-ldap Y
Install zimbra-logger Y
Install zimbra-mta Y
Install zimbra-snmp Y
Install zimbra-store Y
Install zimbra-apache Y
Install zimbra-spell Y
Install zimbra-memcached Y
Install zibra-proxy N

Install anyway? Y
The system will be modified. Continue? Y


Aguarde ....

Change domain name? [Yes]

Create domain: [ns1.teste.com.br] teste.com.br


O Zimbra já esta instalado. A única configuração que faremos pela linha de comando é a mudança da senha do usuário admin. Após a instalação aparecerá o Menu Principal de configuração do zimbra.

No menu principal tecle 3 [Enter], tecle 4 [Enter] e entre com a senha do usuário admin [ENTER]. Volte ao menu teclando r [Enter] e aplique a configuração teclando a [Enter].

Save configuration data to a file? [Yes]
Save config in file [/opt/zimbra/config.9481]
The system will be modified - continued? [Yes]


Aguarde o final da configuração. O Zimbra já está em funcionamento.

Notify Zimbra of your instalation? [YES] NO

Você pode acessar o console de gerenciamento, com ele que será realizada todas as configurações necessárias para administração do servidor.

https://192.168.0.1:7071/zimbraAdmin/


Figura 1 - Imagem do console de administração Zimbra 8.

Também pode ter acesso a interface do usuário.

https://192.168.0.1/


2.2.1 Bug da inicialização automática

Existe um bug na inicialização do Zimbra durante o boot do sistema. A solução para esse problema é relativamente simples.

a) Edite o arquivo /etc/init.d/zimbra e adicione a linha em negrito no entre as duas linhas como abaixo:

# Default-Start:  3 5
# Default-Stop:   0 1 6
# Description:    Zimbra mail service


b) Adicione o script na inicialização:

#update-rc.d zimbra defaults

c) Reinicie o servidor para testar.


2.3 COMANDOS BÁSICOS E DICAS

Alguns comandos que podem ajudar o administrador a resolver pequenos problemas do servidor Zimbra.

*Para mudar senha do administrador
#su - zimbra
#zmprov sp <admin email address> <new password>


*Para parar e iniciar o zimbra:
#su - zimbra
#zmcontrol stop
#zmcontrol start


*Para ver o status dos serviços do zimbra:
#su - zimbra
#zmcontrol status


Uma dica é o fato de o Zimbra 8 vir configurado para acesso apenas via https. Você pode ativar também o acesso via http.

Como usuário zimbra:
#su - zimbra

Ativa suporte ao acesso http e https
#/opt/zimbra/bin/zmtlsctl mixed
#zmcontrol restart


Ativa suporte apenas ao https
#/opt/zimbra/bin/zmtlsctl https
#zmcontrol restart


Ativa suporte apenas ao http
#/opt/zimbra/bin/zmtlsctl http
#zmcontrol restart


Uma outra dica é ativar o recurso de porta arquivos que vem desativado como padrão.Para ativá-lo logando como administrador no console clique em:

Configurar --> Classe de serviço.

Na página da direita duplo clique em default.

Recursos --> Ativar a opção Porta-arquivos.

Clica em salvar no canto superior direito.


3 CONCLUSÃO

Neste ponto temos o servidor Zimbra completamente funcional. No próximo tutorial veremos como configurar um backup das contas de email utilizando uma ferramenta gratuita.

REFERÊNCIAS

ZIMBRA, OpenSource Edition + Bind9 (DNS). Disponível em: <http://ensinalinux.blogspot.com.br/2012/04/zimbra-opensource-edition-bind9-dns.html>

quarta-feira, 17 de abril de 2013

TUTORIAL - ZIMBRA 8 NO DEBIAN 6 SQUEEZE

TUTORIAL 1 - PRÉ-REQUISITOS E CONFIGURAÇÃO DO SERVIÇO DE DNS


Esse é a primeira parte de uma série de quatro tutoriais que possui como objetivo demonstrar a instalação do mais recente servidor de e-mails Zimbra, a configuração de um backup, e como bônus, a instalação de um chat integrado com o serviço de e-mail.

1 INTRODUÇÃO

 

Zimbra Collaboration Server é um servidor de e-mail Opensource, que integra diversos recursos como por exemplo: agenda, organizador de tarefas e porta arquivos. Através de extensões uma infinidade de outras funcionalidades podem ser implantadas.
Funciona com clientes de e-mails com Thunderbird, Outlook, Evolution, além de possuir um cliente próprio o Zimbra Desktop.
Possui como concorrentes soluções como o Exchange da Microsoft e o GroupWise da Novel. 
Nesse primeiro tutorial iremos prepar o ambiente do sistema operacional e realizar a configuração do serviço de DNS, indispensáveis para a instalação e funcionamento do Zimbra.


2 REQUISITOS DO SERVIDOR DE E-MAIL 



2.1 HARDWARE


Para uma instalação de um servidor de teste é recomendado:

  • Processador Intel ou AMD, 32 ou 64 bits com clock de 1.5 GHz;
  • Memória de 1GB;
  • Espaço livre em disco de 5GB para instalação e logs;
  • Espaço livre em disco para armazenamento das mensagens.

Para uma instalação de um servidor para produção, o mínimo recomendado é:

  • Processador mínimo Intel ou AMD com clock 2.0 GHZ de 32 bits (recomendado processador de 64 bits);
  • Memória ram de 2GB;
  • Espaço livre em disco de 10GB para instalação e logs;
  • Espaço livre em disco para armazenamento das mensagens.


2.2 DOMÍNIO E IP


Um servidor DNS é pré-requisito para a instalação do Zimbra, ele pode estar no mesmo servidor ou em servidor(es) separados. Para nosso tutorial o servidor que irá hospedar o Zimbra é o mesmo que hospeda o servidor de DNS. O servidor de DNS é o responsável por resolver o nome do domínio em um ip.
Todo o domínio precisa ser registrado para poder ser acessível via internet. No Brasil o responsável pelo registro é o Registro.br. Após o registro, é preciso configurar no ambiente do registro.br o endereço do servidor DNS que irá responder pelo seu domínio. Para tanto seu servidor deve possuir um número de ip válido na internet. Na verdade o registro.br exige pelo menos dois servidores DNS que respondam pelo seu domínio. Tal procedimento é adotado para garantir a redundância de forma que se um servidor ficar indisponível, o secundário pode responder em seu lugar. Nem sempre é possível dispor de 2 servidores em um ambiente de testes, dessa forma é possível configurar um único servidor DNS para trabalhar como primário e secundário ao mesmo tempo. Com tal atitude você perde a redundância, mas para um ambiente de teste e estudo é perfeitamente válido. 


2.3 INSTALANDO E CONFIGURANDO O SERVIDOR DNS


Para o nosso tutorial o servidor irá responder pelo dominio teste.com.br e terá como ip o 192.168.0.1 e o 192.168.0.2. Como você pode observar são ips de rede locais, que não são válidos para a internet, no entanto, para uma configuração real basta alterá-los.

a) Execute a instalação do seguinte pacote:

#apt-get install bind9

b) Editar arquivo /etc/hosts e adicionar as seguintes linhas:

192.168.0.1 teste.com.br ns1
192.168.0.2 teste.com.br ns2


O ns1 e ns2 são os nomes de nossos dois servidores DNS que pertencem ao domínio teste.com.br


c) Mudar o nome da máquina para ns1:

#hostname ns1
#echo ns1 > /etc/hostname


d) Editar o arquivo /etc/resolv.conf e deixar com a estrutura abaixo:

domain teste.com.br
search teste.com.br
nameserver 192.168.0.1
nameserver 192.168.0.2


e) Configurar as interfaces de rede editando o arquivo /etc/network/interfaces da seguinte forma:

auto lo eth0 eth0:1
iface lo inet loopback

iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.254

iface eth0:1 inet static
address 192.168.0.2
netmask 255.255.255.0



Note que o ip 192.168.0.254 diz respeito ao dispositivo responsável por disponibilizar a internet para o servidor. Este dispositivo pode ser um modem adsl, por exemplo.

f) Reiniciar a interface de rede.

#/etc/init.d/networking restart

2.3.1 Configurar o serviço de DNS

a) Adicionar no arquivo /etc/bind/named.conf.local as seguintes linhas:
Dica: Procure digitar e não copiar essa configuração, o Bind é sensível a formatações inseridas por alguns editores ao copiar e colar.

zone "teste.com.br"{
type master;
file "/etc/bind/db.teste.com";
allow-transfer { 192.168.0.2; };
};

b) Criar o arquivo /etc/bind/db.teste.com com o conteúdo abaixo:

$TTL    604800
@    IN    SOA    ns1.teste.com.br. irineu.teste.com.br. (
201303251513  ; Serial
604800        ; Refresh
86400         ; Retry
2419200       ; Expire
604800 )      ; Negative Cache TTL

@    IN    NS    ns1.teste.com.br.
@    IN    A    192.168.0.1

@    IN    NS    ns2.teste.com.br.

@    IN    MX    10    ns1.teste.com.br.
@    IN    A    192.168.0.1

www        A    192.168.0.2


webmail    A    192.168.0.1
mail       A    192.168.0.1
ns1        A    192.168.0.1
ns2        A    192.168.0.2


c) Testes sua configuração do DNS:

#named-checkzone teste.com.br /etc/bind/db.teste.com

Resultado esperado do comando:
zone teste.com.br/IN: loaded serial 3734755897
OK



#/etc/init.d/bind9 restart

#nslookup ns1

Resultado esperado do comando:
Server: 192.168.0.1
Address: 192.168.0.1#53

Name: ns1.teste.com.br
Address: 192.168.0.1



#nslookup ns2
Server: 192.168.0.1
Address: 192.168.0.1#53

Name: ns2.teste.com.br
Address: 192.168.0.2


2.3.2 DNS Reverso

Apenas com a configuração do servidor de DNS que executamos até agora já é possível fazer a instalação do Zimbra. No entanto, para uso em produção é necessário ainda a configuração do DNS Reverso. O DNS Reverso é uma das formas que um servidor utiliza para saber se a mensagem enviada do endereço de ip de seu servidor de e-mail responde ao domínio encontrado no cabeçalho. Vejamos com o exemplo de configuração.


a) Adicionar no arquivo /etc/bind/named.conf.local as seguintes linhas:

zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.teste.com-rev";
};


b) Criar o arquivo /etc/bind/db.teste.com-rev

$TTL    604800
@    IN    SOA    ns1.teste.com.br. irineu.teste.com.br. (
201303261613    ; Serial
604800        ; Refresh
86400        ; Retry
2419200        ; Expire
604800 )    ; Negative Cache TTL

@    IN    NS    ns1.teste.com.br.
1    IN    PTR   ns1.teste.com.br.
@    IN    NS    ns2.teste.com.br.
2    IN    PTR   ns2.teste.com.br.



h) Testes sua configuração do DNS Reverso:

#named-checkzone 0.168.192.in-addr.arpa /etc/bind/db.teste.com-rev

Resultado esperado:
zone 0.168.192.in-addr.arpa/IN: loaded serial 3734765997
OK



#/etc/init.d/bind9 restart

#dig teste.com.br

Resultado esperado:

;; QUESTION SECTION:
;teste.com.br.            IN    A

;; ANSWER SECTION:
teste.com.br.        604800    IN    A    192.168.0.1

;; AUTHORITY SECTION:
teste.com.br.        604800    IN    NS    ns1.teste.com.br.
teste.com.br.        604800    IN    NS    ns2.teste.com.br.

;; ADDITIONAL SECTION:
ns1.teste.com.br.    604800    IN    A    192.168.0.1
ns2.teste.com.br.    604800    IN    A    192.168.0.2


#dig -x 192.168.0.1


Resultado esperado:

;; QUESTION SECTION:
;1.0.168.192.in-addr.arpa.    IN    PTR

;; ANSWER SECTION:
1.0.168.192.in-addr.arpa. 604800 IN    PTR    ns1.teste.com.br.

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa.    604800    IN    NS    ns1.teste.com.br.
0.168.192.in-addr.arpa.    604800    IN    NS    ns2.teste.com.br.

;; ADDITIONAL SECTION:
ns1.teste.com.br.    604800    IN    A    192.168.0.1
ns2.teste.com.br.    604800    IN    A    192.168.0.2


2.4 DEPÊNDENCIAS


O zimbra exige a instalação de alguns pacotes que podem ser instalados com o comando abaixo:

#apt-get install sysstat sqlite3 sudo nscd libperl5.10

E necessário também remover o pacote exim4 que é um serviço de e-mail nativo do Debian.

#apt-get purge exim4-daemon-light exim4 exim4-daemon-heavy


3 CONCLUSÃO

Neste ponto chegamos ao ambiente do sistema operacional pronto para receber o serviço de e-mail Zimbra. A instalação e configuração é parte do tutorial 2.


REFERÊNCIAS

ZIMBRA, OpenSource Edition + Bind9 (DNS). Disponível em: <http://ensinalinux.blogspot.com.br/2012/04/zimbra-opensource-edition-bind9-dns.html>

domingo, 22 de janeiro de 2012

CRIANDO TÚNEIS SEGUROS COM O OPEN VPN (Matriz – Filial1 – Filial2)

INTRODUÇÃO

Em minhas pesquisas pelas internet encontrei dezenas de artigos abordando a configuração do Open VPN, mais não encontrei nenhum que explicasse de maneira prática o uso em cenários onde se faz necessário a interligação de três ou mais redes distintas de tal forma que se um dos servidores cair às outras redes continue comunicando-se normalmente. Fato o qual me motivou a escrever esse artigo.

Para melhor entendermos o problema imaginamos a situação da figura que servirá como base desse tutorial:


Temos a matriz, filial1 e filial2. Em uma situação em que o servidor da matriz (que está rodando uma instância do Open VPN apenas no modo servidor, servindo os clientes filial1 e filial2) venha a sair do ar, os servidores da filial1 e filial2 precisam continuar se comunicando. O mesmo terá que acontecer se o servidor da filial1 ou filial2 caírem, a comunicação com servidor da matriz permanece para o servidor ainda no ar.


Solução

1º - Uma solução simples para esse problema foi abordado em outro artigo utilizando o VTUN. Link abaixo:

http://itnproducoes.blogspot.com/2011/07/criando-tuneis-com-o-vtun.html

2º - No entanto, particularmente, tenho utilizado na maioria dos casos a solução proposta nesse artigo com o Open VPN, devido a pontos fortes que essa ferramenta oferece. Veja alguns dos principais abaixo:

* Possui atualizações constantes.

* Multiplataforma (Roda também em Windows).

* Segurança aprimorada utilizando certificados x509.

* Relativamente fácil de conseguir material na internet abordando o uso do Open VPN, além de possuir uma ampla documentação sobre seus recursos com exemplos de configuração. Veja o HOWTO no site do desenvolvedor.


Voltando ao assunto, para esse tutorial a solução proposta consiste em:

Matriz – Irá rodar uma instância do Open VPN como servidor para Filial1 e Filial2.

Filial1 – Irá rodar uma instância do Open VPN como cliente da Matriz e uma instância como servidor da Filial2.

Filial2 – Irá rodar uma instância do Open VPN como cliente da Matriz e uma instância como cliente da Filial1.

Nesse artigo exemplificarei como configurar a interligação de três redes distintas geograficamente separadas através de um túnel seguro criptografado de 2048 bits e autenticação utilizando certificados x509.


Recursos utilizados para esse tutorial:

* Três Servidores Linux rodando Debian 6.0.3 (Squeeze).

* Cada um com duas placas de redes, uma para comunicação com a rede local e outra para internet.

* Endereços das placas de redes locais:
192.168.2.1/24 --> Matriz
192.168.3.1/24 --> Filial1
192.168.4.1/24 --> Filial2

Cenário

Redes separadas geograficamente:
192.168.2.0/24 --> Matriz
192.168.3.0/24 --> Filial1
192.168.4.0/24 --> Filial2


*Obs: É necessário que as redes utilizem configurações de ips distintas, caso o contrário teremos posteriormente conflitos no roteamento e a comunicação não ocorrerá.

CONFIGURAÇÃO

Para instalar o Open VPN nos servidores.

# apt-get install openvpn

CONFIGURAÇÃO DA MATRIZ

Em nosso tutorial a máquina da matriz irá atuar apenas como servidor do Open VPN, dessa forma precisaremos além de da configuração propriamente dita, gerar as chaves de autenticação de seus clientes (Filial1 e Filial2).

a) Crie o arquivo /etc/openvpn/servidor.conf:

# mcedit /etc/openvpn/servidor.conf


Conteúdo do arquivo /etc/openvpn/servidor.conf:

proto udp
dev tun
server 10.0.0.0 255.255.255.0

#####Rota para os clientes####
client-config-dir ccd

#Filial1
route 192.168.3.0 255.255.255.0
#Filial2
route 192.168.4.0 255.255.255.0

##########################################################

max-clients 10
tls-server

#Compressao de dados
comp-lzo

#Tempo de ping 10s tempo de reinicio 120s
keepalive 10 120

#Mantem tunel e chaves carregadas em caso de quedas
persist-key
persist-tun

#Mantem o tunel levantando mesmo em conexoes ip dinamico
float
#########################################
dh /etc/openvpn/keys/dh2048.pem
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/servidor.crt
key /etc/openvpn/keys/servidor.key
tls-auth /etc/openvpn/keys/chave.key 0


b) Crie a pasta /etc/openvpn/keys e /etc/openvpn/ccd

# mkdir /etc/openvpn/keys
# mkdir /etc/openvpn/ccd

c) Crie os arquivos /etc/openvpn/ccd/filial1 e /etc/openvpn/ccd/filial2

# mcedit /etc/openvpn/ccd/filial1

Conteúdo arquivo /etc/openvpn/ccd/filial1 :

iroute 192.168.3.0 255.255.255.0


# mcedit /etc/openvpn/ccd/filial2

Conteúdo arquivo /etc/openvpn/ccd/filial2 :

iroute 192.168.4.0 255.255.255.0


É importante salientar que a não criação desses dois arquivos é causa comum de erros no roteamento encontrado em diversas configurações, que apesar de possibilitarem a comunicação entre os servidores, não conseguem encaminhar os pacotes corretamente para a interface de rede local em questão.

Esses dois arquivos são vitais para o funcionamento das rotas criadas pelas linhas
#Filial1
route 192.168.3.0 255.255.255.0
#Filial2
route 192.168.4.0 255.255.255.0
do arquivo de configuração servidor.conf criado anteriormente. Isso porque as linhas do servidor.conf apenas criam as entradas de roteamento no kernel que serão encaminhadas para a interface tun0 do servidor Open VPN. No momento em que a conexão é estabelecida o servidor Open VPN saberá para qual rede encaminhar o pacote, utilizando justamente os arquivos /etc/openvpn/ccd/filial1 e /etc/openvpn/ccd/filial2 que possuem a rota do cliente recém-conectado.


d) Criar as chaves de segurança e autenticação:

* Copiar os scripts de criação das chaves fornecidos pela instalação do Open VPN para o diretório /etc/openvpn:

# cp -a /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn

* Configurar o arquivo vars para geração das chaves:

Edite o arquivo /etc/openvpn/easy-rsa/2.0/vars e modifique as seguintes linhas de acordo com seus dados (KEY_SIZE corresponde ao tamanho da chave 2048 bits):

# mcedit /etc/openvpn/easy-rsa/2.0/vars

Linhas a serem modificadas:

export KEY_SIZE=2048
export KEY_COUNTRY= “BR”
export KEY_PROVINCE = “SC”
export KEY_CITY = “Laguna”
export KEY_ORG = “ITN Ltda”
export KEY_EMAIL= “itnp@msn.com”


* Preparar ambiente para criação das chaves para o servidor, filial1 e filial2:

# cd /etc/openvpn/easy-rsa/2.0
# source vars
# ./clean-all

#./build-ca
(Apenas confirme os dados com ENTER nessa etapa).


Entre na pasta /etc/openvpn/easy-rsa/2.0/keys e confirme a existência dos arquivos ca.crt, ca.key, index.txt e serial.

* Criar as chaves propriamente ditas:

# cd /etc/openvpn/easy-rsa/2.0/

./build-key-server servidor
(Mais uma vez confirme com ENTER os dados e responda do Y as duas perguntas finais Sign the certificate? Y e 1 out of 1 certificate requests certified, commit? Y)

Resultado esperado:
Write out database with 1 new entries
Data Base Updated

./buid.dh dh2048.pem
(Esse comando pode demorar alguns segundos).

# openvpn --genkey --secret chave.key
# mv chave.key /etc/openvpn/keys
(Criar essa chave adiciona uma camada extra de segurança a sua VPN recomendado pelo próprio HOWTO)


./build-key filial1
(Mais uma vez confirme com ENTER os dados e responda do Y as duas perguntas finais Sign the certificate? Y e 1 out of 1 certificate requests certified, commit? Y)

Resultado esperado:
Write out database with 1 new entries
Data Base Updated

./build-key filial2
(Mais uma vez confirme com ENTER os dados e responda do Y as duas perguntas finais Sign the certificate? Y e 1 out of 1 certificate requests certified, commit? Y)

Resultado esperado:
Write out database with 1 new entries
Data Base Updated

e) Confirmar a criação das chaves, copiar para seus diretórios de destino e iniciar o servidor OpenVPN:

* Entre na pasta /etc/openvpn/easy-rsa/2.0/keys e copie os arquivos ca.crt, servidor.crt, servidor.key, dh2048.pem, para a pasta /etc/openvpn/keys.

# cd /etc/openvpn/easy-rsa/2.0/keys
# cp –a servidor.key servidor.crt dh2048.pem ca.crt /etc/openvpn/keys

* Reinicie o serviço do Open VPN, confirme a criação da interface tun0 e das rotas para as redes da filial1 e filial2:

# /etc/init.d/openvpn restart
#ifconfig tun0


#route | grep tun0
Resultado esperado desse comando:

192.168.4.0 10.0.0.2 255.255.255.0 UG 0 0 0 tun0
192.168.3.0 10.0.0.2 255.255.255.0 UG 0 0 0 tun0



f) Configurar o firewall para aceitar conexões na porta 1194, adicionando a seguinte linha: (1194 é a porta padrão do servidor Open VPN):

iptables -A INPUT –p udp --dport 1194 –j ACCEPT


CONFIGURAÇÃO DA FILIAL1

Com o servidor da matriz já configurado para aceitar conexões dos clientes filial1 e filial2, vamos ao maior desafio de nosso tutorial que é a configuração do servidor da filial1 para funcionar como servidor para filial2 e cliente da matriz ao mesmo tempo.

1 - Configurar o cliente:

a) Crie a pasta /etc/openvpn/keysCliente

# mkdir /etc/openvpn/keysCliente

b) Crie o arquivo /etc/openvpn/clienteMatriz.conf

# mcedit /etc/openvpn/clienteMatriz.conf

Conteúdo do arquivo /etc/openvpn/clienteMatriz.conf:

remote “IP DA MATRIZ”
proto udp
client
route 192.168.2.0 255.255.255.0
dev tun
tls-client

##CONFIGURAÇÕES DE OTIMIZACAO##

#Tempo de ping 10s tempo de reinicio 120s
keepalive 10 120

#Compressao dos dados
comp-lzo

#Mantem tunel e chaves carregadas em quedas
persist-key
persist-tun

##########################################
dh /etc/openvpcn/keysCliente/dh2048.pem
ca /etc/openvpn/keysCliente/ca.crt
cert /etc/openvpn/keysCliente/filial1.crt
key /etc/openvpn/keysCliente/filial1.key
tls-auth /etc/openvpn/keysCliente/chave.key 1


c) Copiar as chaves necessárias correspondentes a filial1 do servidor da matriz:

Para esse fim você pode utilizar uma conexão sftp a partir da filial1 ou até mesmo copiar em um pendrive os arquivos dh2048.pem, ca.crt, filial1.crt filial1.key e chave.key da pasta /etc/openvpn/easy-rsa/2.0/keys e /etc/openvpn/keys do servidor da matriz para a pasta /etc/openvpn/keysCliente do servidor da filial1.

Exemplo utilizando sftp:

# cd /etc/openvpn/keysCliente
# sftp root@“IP DA MATRIZ”
# “senha do root da matriz”
# get /etc/openvpn/easy-rsa/2.0/keys/filial1.crt
# get /etc/openvpn/easy-rsa/2.0/keys/filial1.key
# get /etc/openvpn/easy-rsa/2.0/keys/ca.crt
# get /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
# get /etc/openvpn/keys/chave.key

d) Reinicie o serviço do Open VPN, confirme a criação da interface tun0 e das rotas para a rede da matriz:

# /etc/init.d/openvpn restart
#ifconfig tun0

#route | grep tun0
Resultado esperado desse comando:

192.168.2.0 10.0.0.5 255.255.255.0 UG 0 0 0 tun0


e) Teste a comunicação entre filial1 e Matriz através do envio de Pings:

#ping 192.168.2.1
(Enviado do servidor da filial1)

#ping 192.168.3.1
(Enviado do servidor da matriz)

Obs: Até o momento apesar de matriz e filial1 conseguirem resposta do echo da interface destinada à rede local (192.168.2.1 e 192.168.3.1) não será possível o ping para terminais da rede interna precisando ainda a configuração final no firewall que faremos na parte final do tutorial quando matriz, filial1 e filial2 estiverem se comunicando mutuamente.


2 - Configurar o servidor:

Para configurar o Open VPN como servidor do cliente da filial2 realizaremos praticamente os mesmos passos da configuração do servidor Open VPN da matriz com pequenas mudanças.

a) Crie o arquivo /etc/openvpn/servidorFilial1.conf

# mcedit /etc/openvpn/servidorFilial1.conf

Conteúdo do arquivo /etc/openvpn/servidorFilial1.conf:

proto udp
dev tun
port 1195
server 10.10.10.0 255.255.255.0

#####Rota para os clientes####
client-config-dir ccd

#Filial2
route 192.168.4.0 255.255.255.0

##########################################################

max-clients 10
tls-server

#Compressao de dados
comp-lzo

#Tempo de ping 10s tempo de reinicio 120s
keepalive 10 120

#Mantem tunel e chaves carregadas em caso de quedas
persist-key
persist-tun

#Mantem o tunel levantando mesmo em conexoes ip dinamico
float


#########################################
dh /etc/openvpn/keysServidor/dh2048.pem
ca /etc/openvpn/keysServidor/ca.crt
cert /etc/openvpn/keysServidor/servidorFilial1.crt
key /etc/openvpn/keysServidor/servidorFilial1.key
tls-auth /etc/openvpn/keysServidor/chave.key 0


b) Crie as pastas /etc/openvpn/keysServidor e /etc/openvpn/ccd

# mkdir /etc/openvpn/keysServidor
# mkdir /etc/openvpn/ccd


c) Crie o arquivo /etc/openvpn/ccd/filial2

Conteúdo arquivo /etc/openvpn/ccd/filial2 :

iroute 192.168.4.0 255.255.255.0


d) Criar as chaves de segurança e autenticação:

* Copiar os scripts de criação das chaves fornecidos pela instalação do Open VPN para o diretório /etc/openvpn:

# cp -a /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn

* Configurar o arquivo vars para geração das chaves:

Edite o arquivo /etc/openvpn/easy-rsa/2.0/vars e modifique as seguintes linhas de acordo com seus dados (KEY_SIZE corresponde ao tamanho da chave 2048 bits):

# mcedit /etc/openvpn/easy-rsa/2.0/vars

Linhas a serem modificadas:

export KEY_SIZE=2048
export KEY_COUNTRY= “BR”
export KEY_PROVINCE = “SC”
export KEY_CITY = “Laguna”
export KEY_ORG = “ITN Ltda”
export KEY_EMAIL= “itnp@msn.com”


* Preparar ambiente para criação das chaves para o servidorFilial1 e filial2:

# cd /etc/openvpn/easy-rsa/2.0
# source vars
# ./clean-all

#./build-ca
(Apenas confirme os dados com ENTER nessa etapa).


Entre na pasta /etc/openvpn/easy-rsa/2.0/keys e confirme a existência dos arquivos ca.crt, ca.key, index.txt e serial.

* Criar as chaves propriamente ditas:

# cd /etc/openvpn/easy-rsa/2.0/

./build-key-server servidorFilial1
(Mais uma vez confirme com ENTER os dados e responda do Y as duas perguntas finais Sign the certificate? Y e 1 out of 1 certificate requests certified, commit? Y)

Resultado esperado:
Write out database with 1 new entries
Data Base Updated

./buid.dh dh2048.pem
(Esse comando pode demorar alguns segundos).


# openvpn --genkey --secret chave.key
# mv chave.key /etc/openvpn/keysServidor
(Criar essa chave adiciona uma camada extra de segurança a sua VPN recomendado pelo próprio HOWTO)


./build-key filial2
(Mais uma vez confirme com ENTER os dados e responda do Y as duas perguntas finais Sign the certificate? Y e 1 out of 1 certificate requests certified, commit? Y)

Resultado esperado:
Write out database with 1 new entries
Data Base Updated

e) Confirmar a criação das chaves, copiar para seus diretórios de destino e iniciar o servidor OpenVPN:

* Entre na pasta /etc/openvpn/easy-rsa/2.0/keys e copie os arquivos ca.crt, servidorFilial1.crt, servidorFilial1.key e dh2048.pem, para a pasta /etc/openvpn/keys.

# cd /etc/openvpn/easy-rsa/2.0/keys
# cp –a servidor.key servidor.crt dh2048.pem ca.crt /etc/openvpn/keysServidor

f) Reinicie o serviço do Open VPN, confirme a criação da interface tun1 e das rotas para a rede da filial2:

# /etc/init.d/openvpn restart
# ifconfig tun0

#route | grep tun0
Resultado esperado desse comando:

192.168.4.0 10.10.10.2 255.255.255.0 UG 0 0 0 tun0



3 - Configurar o firewall para aceitar conexões na porta 1195, adicionando a seguinte linha:

iptables -A INPUT –p udp --dport 1195 –j ACCEPT


Observações importantes:

1º Antes da criação da configuração para o servidor do Open VPN na filial1, a interface tun0 era a do cliente da matriz.

2º Note que agora possuímos duas interfaces tun0 e tun1 no servidor da filial1, uma utilizada para o cliente da matriz (tun1) e outra para o servidor da filial2 (tun0).

3º Precisamos alterar a porta de escuta do servidor do Open VPN da filial1 para 1195, isso porque a porta padrão 1194 já estava sendo utilizada pelo cliente que se conecta na matriz.


CONFIGURAÇÃO DA FILIAL2

Continuando nosso tutorial, temos ainda a configuração do filial2 que atuará apenas como cliente tanto da matriz como da filial1.


1 – Configurar o cliente da Matriz:

a) Crie as pastas /etc/openvpn/keysMatriz

# mkdir /etc/openvpn/keysMatriz

b) Crie o arquivo /etc/openvpn/clienteMatriz.conf:

# mcedit /etc/openvpn/clienteMatriz.conf


Conteúdo do arquivo /etc/openvpn/clienteMatriz.conf:

remote “IP DA MATRIZ”
proto udp
client
route 192.168.2.0 255.255.255.0
dev tun
tls-client

##CONFIGURAÇÕES DE OTIMIZACAO##

#Tempo de ping 10s tempo de reinicio 120s
keepalive 10 120

#Compressao dos dados
comp-lzo

#Mantem tunel e chaves carregadas em quedas
persist-key
persist-tun

##########################################
dh /etc/openvpcn/keysMatriz/dh2048.pem
ca /etc/openvpn/keysMatriz/ca.crt
cert /etc/openvpn/keysMatriz/filial2.crt
key /etc/openvpn/keysMatriz/filial2.key
tls-auth /etc/openvpn/keysMatriz/chave.key 1


c) Copiar as chaves necessárias correspondentes a filial2 do servidor da matriz: dh2048.pem, ca.crt, filial2.crt , filial2.key e chave.key da pasta /etc/openvpn/easy-rsa/2.0/keys e /etc/openvpn/keys para a pasta /etc/openvpn/keysMatriz do servidor da filial2.

Exemplo utilizando sftp:

# cd /etc/openvpn/keysMatriz
# sftp root@“IP DA MATRIZ”
# “senha do root da matriz”
# get /etc/openvpn/easy-rsa/2.0/keys/filial2.crt
# get /etc/openvpn/easy-rsa/2.0/keys/filial2.key
# get /etc/openvpn/easy-rsa/2.0/keys/ca.crt
# get /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
# get /etc/openvpn/keys/chave.key


d) Reinicie o serviço do Open VPN, confirme a criação da interface tun0 e das rotas para a rede da matriz:

# /etc/init.d/openvpn restart
#ifconfig tun0

#route | grep tun0
Resultado esperado desse comando:

192.168.2.0 10.0.0.9 255.255.255.0 UG 0 0 0 tun0


e) Teste a comunicação entre filial2 e Matriz através do envio de Pings:

#ping 192.168.2.1
(Enviado do servidor da filial2)

#ping 192.168.4.1
(Enviado do servidor da matriz)


2 – Configurar o cliente da Filial1:

a) Crie as pastas /etc/openvpn/keysFilial1

# mkdir /etc/openvpn/keysFilial1

b) Crie o arquivo /etc/openvpn/clienteFilial1.conf:

# mcedit /etc/openvpn/clienteFilial1.conf


Conteúdo do arquivo /etc/openvpn/clienteFilial1.conf:

remote “IP DA FILIAL1”
proto udp
port 1195
client
route 192.168.3.0 255.255.255.0
dev tun
tls-client

##CONFIGURAÇÕES DE OTIMIZACAO##

#Tempo de ping 10s tempo de reinicio 120s
keepalive 10 120

#Compressao dos dados
comp-lzo

#Mantem tunel e chaves carregadas em quedas
persist-key
persist-tun

##########################################
dh /etc/openvpcn/keysFilial1/dh2048.pem
ca /etc/openvpn/keysFilial1/ca.crt
cert /etc/openvpn/keysFilial1/filial2.crt
key /etc/openvpn/keysFilial1/filial2.key
tls-auth /etc/openvpn/keysFilial2/chave.key 1


c) Copiar as chaves necessárias correspondentes a filial2 do servidor da filial1: dh2048.pem, ca.crt, filial2.crt , filial2.key e chave.key da pasta /etc/openvpn/easy-rsa/2.0/keys e /etc/openvpn/keys para a pasta /etc/openvpn/keysMatriz do servidor da filial2.

Exemplo utilizando sftp:

# cd /etc/openvpn/keysFilial1
# sftp root@“IP DA FILIAL1”
# “senha do root da filial1”
# get /etc/openvpn/easy-rsa/2.0/keys/filial2.crt
# get /etc/openvpn/easy-rsa/2.0/keys/filial2.key
# get /etc/openvpn/easy-rsa/2.0/keys/ca.crt
# get /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
# get /etc/openvpn/keysServidor/chave.key


d) Reinicie o serviço do Open VPN, confirme a criação de mais uma interface tun1 e das rotas para a rede da filial1:

# /etc/init.d/openvpn restart
#ifconfig tun0
#ifconfig tun1


#route | grep tun
Resultado esperado desse comando:

192.168.3.0 10.10.10.5 255.255.255.0 UG 0 0 0 tun0
192.168.2.0 10.0.0.9 255.255.255.0 UG 0 0 0 tun1


e) Teste a comunicação entre filial2 e Matriz através do envio de Pings:

#ping 192.168.2.1
(Enviado do servidor da filial2)

#ping 192.168.4.1
(Enviado do servidor da matriz)


f) Teste a comunicação entre filial2 e Filial1 através do envio de Pings:

#ping 192.168.3.1
(Enviado do servidor da filial2)

#ping 192.168.4.1
(Enviado do servidor da filial1)


ROTEAMENTO PARA REDE LOCAL

Apesar de todos os três servidores estarem comunicando-se através da VPN, se o objetivo é expandir o encaminhamento de pacotes para os terminais ligados nas redes e permitir a comunicação entre eles, como comentando anteriormente, é necessário à configuração dos servidores para permitir o repasse de pacotes das interfaces dos túneis a interface de rede local. Para tanto ativamos o repasse com o seguinte comando:

Na matriz:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Na Filial1:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Na Filial2:
# echo 1 > /proc/sys/net/ipv4/ip_forward


Após completar esse passo as redes estarão se comunicando sem problemas, sendo que tarefas como compartilhamento de impressoras e arquivos já podem ser realizadas entre os micros das redes geograficamente separadas tranquilamente.


CONCLUSÃO

Utilizando a configuração desse tutorial a VPN estará roteando o tráfego. Isso elimina a transmissão de broadcast e protocolos da camada 2. A desvantagem é que como as redes estão em endereçamentos diferentes, alguns recursos da rede como instalação automática de impressoras do Cups ou de um servidor DHCP unificado para três redes não irão funcionar. Para esses casos podemos utilizar o pacote bridge-utils, e criar uma configuração tal em que todas as três redes estejam conectadas como se estivessem em uma mesma rede local. No entanto, isso irá aumentar drasticamente o tráfego tornando-se muitas vezes inviável. Na grande maioria dos casos a solução proposta nesse aqui é mais que suficiente, sendo que podemos limitar ainda mais o uso do túnel bloqueando tudo e liberando apenas as portas e protocolos necessários aos serviços que irão utilizar de fato a VPN.


REFERÊNCIAS

Morimoto, Carlos Eduardo. Servidores Linux – guia prático. Porto Alegre: Sul Editores,2009.

HOWTO Open VPN. Disponível em: Acesso em: 21 jan. 2012.