OpenVPN no Slackware

17 09 2007

Em primeiro lugar vamos explicar o que seria VPN e qual iriamos usar.

Uma Rede Privada Virtual (Virtual Private NetworkVPN) é uma rede de comunicações privada normalmente utilizada por uma empresa ou um conjunto de empresas e/ou instituições, construída em cima de uma rede de comunicações pública (como por exemplo, a Internet). O tráfego de dados é levado pela rede pública utilizando protocolos padrão, não necessariamente seguros.

VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a confidencialidade, autenticação e integridade necessárias para garantir a privacidade das comunicações requeridas. Quando adequadamente implementados, estes protocolos podem assegurar comunicações seguras através de redes inseguras.

Deve ser notado que a escolha, implementação e uso destes protocolos não é algo trivial, e várias soluções de VPN inseguras são distribuídas no mercado. Adverte-se os usuários para que investiguem com cuidado os produtos que fornecem VPNs. Por si só, o rótulo VPN é apenas uma ferramenta de marketing.

Fonte: Wikipédia, a enciclopédia livre.

A partir do momento que sabemos o que é uma VPN teremos um novo problema.

Qual solução usar já que temos inumeras possibilidades de implementação.

Isso é uma questão muito parecida com religião e prefiro nem discutir sobre qual delas usar.

Minha escolha em VPN foi para o OpenVPN entre os motivos destaco alguns:

1- Criptografia de chaves ao invés de usuário e senha para fechar um túnel de VPN;

2- Plataformas: Linux, Windows 2000/XP ou superior, OpenBSD, FreeBSD, NetBSD, Mac OS X, e Solaris;

3- Fácil configuração através de firewalls e roteadores que fazem NAT;

4- Open Source licenciado pela GPL;

Já que temos um inicio promissor vamos dar ênfase a toda configuração.

Como sempre vou utilizar o slackware para fazer nosso server… O mesmo passos são utilizados para clientes, assim como para clientes de outras distribuições e plataformas.

Vale lembra que o slackware 12 já vem com o OpenVPN em seus pacotes, o que iria nos economizar em compilar o OpenVPN. Mas como a utilidade desse tutorial é mostrar toda a configuração inclusive a compilação do OpenVPN.

Vamos primeiro baixar um pacote para lzo que comprimi os dados tornando assim os tuneis da nossa VPN mais rápida. Estarei usando aqui as últimas versões de cada software.

LZO

# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz

# tar zxvf lzo-2.02.tar.gz
# cd lzo-2.02
# ./configure
# make && make install

Obs:. O openvpn utiliza o TUN/TAP e dará erro na sua compilação caso não aja no seu sistema o suporte a TUN/TAP. Caso não tenha recompile o kernel e ative como módulo:

<M>   Universal TUN/TAP device driver support

No caso do slackware 10.2 11 e 12 já temos o TUN/TAP e vamos apenas subir:

modprobe tun

Agora vamos baixar e compilar o OpenVpn:

wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

# tar zxvf openvpn-2.0.9.tar.gz
# cd openvpn-2.0.9
# ./configure
# make && make install

Vamos criar o diretório para colocarmos as configurações da nossa VPN. Pode ser escolhido qualquer local:

# mkdir /etc/openvpn
# chmod 755 /etc/openvpn
# cd /etc/openvpn

Criaremos agora o nosso .conf iremos chama-lo de matriz.conf. Use seu editor preferido vi, pico, mcedit, etc… E adicione no arquivo as seguintes linhas:

dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Agora vou explicar cada linha do nosso .conf:
dev tun: abilita suporte ao drive TUN/TAP;
ifconfig: cria nosso ip da matriz (10.0.0.1) com suporte ao ip da filial (10.0.0.2);
secret: comando para chamar nossa chave criptografada e o local dela;
comp-lzo: ativa suporte a compressão;
user e group: isso é bem óbvio;
port: porta que a OpenVpn vai rodar;
verb: nível para depuração de erros;
ping: testa a conexão de 10 em 10 segundos;

Agora vamos criar nossa chave criptografada:
# openvpn –genkey –secret vpn.key

Nossa VPN está praticamente pronta. Vamos agora apenas rodar o daemon e por ela para funcionar:

# openvpn –config /etc/openvpn/matriz.conf –daemon

Com isso nossa VPN está rodando, basta conferir digitando ifconfig e teremos uma interface a mais chamada de tun0.

Na filial faremos a mesma coisa que fizemos agora, iremos apenas mudar algumas coisas no nosso .conf e chamaremos de filial.conf:

dev tun
remote 200.200.200.200
ifconfig 10.0.0.2 10.0.0.1
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Obs:. Em remote coloque o IP ou DNS válido para poder achar a VPN da matriz.

E iniciamos da mesma forma da matriz mudando apenas o arquivo de configuração. Dessa forma que fizemos aqui só temos acesso de servidor para servidor e não teremos acesso na rede interna. Para conseguir esse acesso teremos que fazer as rotas:

# route add –net rede_local_filial/24 gw 10.0.0.2

E na filial faremos o mesmo:

# route add –net rede_local_matriz/24 gw 10.0.0.1

Se usarmos o OpenVPN para windows… Criariamos a rota da seguinte forma:

C:\> route add rede_da_matriz mask 255.255.255.0 10.0.0.1

Podemos criar um arquivo dentro de /etc/openvpn com o nome rotas e adicionar a rota nele e chamar da seguinte forma na conf do openvpn em baixo do nosso ifconfig:

up /etc/openvpn/rotas

Ficando semelhante a essa conf da matriz:

dev tun
ifconfig 10.0.0.1 10.0.0.2
up /etc/openvpn/rotas
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Faremos o mesmo na filial… Mudando óbvio a rota.

E para ativar a VPN na filial fazemos:

# openvpn –config /etc/openvpn/filial.conf –daemon

Com isso já temos uma VPN funcional e segura. Vale ressaltar que temos muitas outras opções para usarmos no OpenVPN como por exemplo opções de dhcp e usuário/senha.

No caso de se usar usuário/senha teriamos que usar o PAM. Logo teriamos que compilar o slackware com suporte a PAM o que não vem ao caso nesse artigo.

Outras opções interessantes são as de log. Podemos criar um diretório em /var/log com o nome openvpn por exemplo e logarmos tudo da nossa VPN. Para isso abra os arquivos de conf do OpenVPN e adicione:

status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn-append.log

Novamente lembrando temos muitas outras configurações… Nada melhor do que ler o howto.

Cleison Monteiro
cleisonmonteiro[arroba]gmail.com
Apocalipse @ #linuxajuda – irc.freenode.net


Ações

Information

3 responses

5 08 2008
Matheus

olá adorei seu artigo muito bem explicado
no meu slack 12 esta dando esta mensagem

NET/ROM: this needs to be written

seria algum erro?

grato

abraço

6 08 2008
Cleison Monteiro

NET/ROM geralmente envolve problemas de rotas.
Detalhe em qual momento está acontecendo esse problema.

Att.
Cleison Monteiro

16 11 2012
MORDP

Aqui apresentou alguns erros, resolvi digitar os comandos em vez de apenas copiar e colar, e funcionou! comigo pelomenos foi problemas de caracter …

na rota seguinte comando na matriz
route add -net 192.168.10.0/24 gw 10.0.0.2
e filial
route add -net 192.168.1.0/24 gw 10.0.0.1

e funfo!

Deixe um comentário