Linux slogan
Visite também: BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

OpenVPN para clientes Windows no Debian Squeeze
Linux user
waldemberguem
23/07/2012
Usar uma VPN (Virtual Private Network) permite você compartilhar e acessar arquivos de uma rede local estando fora dela. Como o próprio nome sugere, você virtualiza a rede para conseguir fazer parte dela, conseguindo assim, até imprimir em uma impressora local que esteja na rede. E claro, você consegue trabalhar de casa, se for necessário.
Por: waldemberguem França Araujo
[ Hits: 12765 ]
Conceito: 9.2   7 voto(s)7 voto(s)7 voto(s)7 voto(s)7 voto(s) + quero dar nota ao artigo

Instalação

Instalando o OpenVPN

Todo ambiente foi testado na distribuição Debian Squeeze.

Em primeiro lugar, vamos atualizar o APT:

# apt-get update
# apt-get upgrade


Agora fazemos a instalação do OpenVPN e do OpenSSL, para poder gerar os certificados.

# apt-get install openvpn openssl

Após a instalação, temos que criar uma pasta dentro da pasta "openvpn" em /etc/openvpn, chamada "easy-rsa".

Então execute:

# mkdir /etc/openvpn/easy-rsa

Agora temos que copiar todos os scripts para o diretório "openvpn" para ficar mais fácil a administração da VPN e suas chaves.

Execute

# cp -rp /usr/share/doc/openvpn/examples/easy-rsa/2.0/. /etc/openvpn/easy-rsa/

Pronto, agora estamos prontos para configurar nossas chaves de acesso, tanto do cliente como do servidor.

O próximo passo é editar o arquivo "vars" dentro do diretório /etc/openvpn/easy-rsa/.

No final do arquivo, temos as seguintes informações:

# Don't leave any of these fields blank.

export KEY_COUNTRY="Brasil" # SEU PAIS
export KEY_PROVINCE="Sao Paulo" # SUA CIDADE
export KEY_CITY="Sao Paulo" # SUA CIDADE
export KEY_ORG="Sua Empresa" # SUA EMPRESA
export KEY_EMAIL="Seu e-mail" # O E-MAIL DO ADMINISTRADOR


Troque estas informações pelas suas, da sua empresa no caso.

Então execute:

# nano vars

Faça as alterações, salve e saia.

Agora, dentro do diretório easy-rsa/, execute o seguinte:

# source vars

* Uma coisa muito importante antes de criar qualquer certificado novo, ou quando você alterar qualquer informação dentro desse arquivo "vars", você precisa executar esse comando, para as informações serem lidas novamente.

Por padrão, os certificados são gerados para expirar de 10 em 10 anos, muito tempo, mas se você quiser alterar este tempo, é só editar o arquivo "vars", e na opção:

# In how many days should certificates expire?
export KEY_EXPIRE=3650 # DIAS QUE DURAM SEU CERTIFICADO


Nesta opção você limita o número de dias que seu certificado será válido. Não esqueça de executar o comando source vars quando salvar e sair.

Agora vamos criar uma nova pasta dentro do diretório easy-rsa, chamada "keys". Nesta pasta ficarão todos os certificados criados para os clientes.

Execute:

# mkdir /etc/openvpn/easy-rsa/keys

Agora temos que criar os certificados raiz que ficará no servidor, para isso, no diretório /etc/openvpn/easy-rsa, temos o script "build-ca", entre nesse diretório:

# cd /etc/openvpn/easy-rsa

Execute o seguinte:

# ./build-ca

Saída do comando:
Country Name (2 letter code)
State or Province Name (full name)
Locality Name (eg, city) [SUACIDADE]:
Organization Name (eg, company)
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address [seuemail@seudominio.com.br]:


Este script vai pedir uma série de informações sobre a sua região, é só seguir o padrão do arquivo "vars" que foi editado lá no começo.

Feito isso, dentro da pasta "keys", terão 4 arquivos:
  1. ca.crt
  2. ca.key
  3. index.txt
  4. serial

Dentro do mesmo diretório "easy-rsa", temos que executar o seguinte script "build-key-server", este script será a chave do servidor, no caso, mais uma camada de segurança para seus dados.

Então execute:

# ./build-key-server NOME DO SEU SERVER

Este script vai pedir uma senha que será sempre solicitada quando o usuário for fechar a VPN, vai do seu nível de segurança colocar ou deixar em branco.

No final o script, vai perguntar se você deseja realmente assinar o certificado, se você preencheu as informações corretas pressione: y
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y


Agora, finalmente vamos criar as chaves de acesso para os usuários

No mesmo diretório "easy-rsa", execute o seguinte script:

# ./build-key usuariodavpn

Este certificado pedirá algumas informações, assim que informar todas as informações corretas, aperte o Y para confirmar.

Ele também pedirá uma senha, se quiser colocar, fique à vontade.

Reforçando a segurança

Agora vamos reforçar a segurança da VPN.

Dentro do Diretório "easy-rsa", execute o seguinte script:

# ./build-dh

Aguarde terminar. Em seguida, vamos criar uma assinatura de uma chave secreta para a troca de informações. Então execute:

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

E depois:

# openvpn - -genkey - -secret chave.key

Estes 2 scripts geraram as chaves de segurança no diretório /etc/openvpn/easy-rsa/keys

Pronto, agora vamos criar o seguinte diretório:

# mkdir /etc/openvpn/keys

Dentro deste diretório, temos que copiar algumas chaves de acesso para ele, são elas:
  • dh1024.pem
  • ca.crt
  • servervpn.crt
  • servervpn.key
  • chave.key

Estas chaves foram criadas dentro do diretório /etc/openvpn/easy-rsa/keys, é só copiar todas para o novo diretório criado em /etc/openvpn/keys

# cp -a /etc/openvpn/easy-rsa/keys/dh1024.pem ca.crt servervpn.crt servervpn.key chave.key /etc/openvpn/keys/

Próxima página >>




Páginas do artigo
   1. Instalação
   2. Configuração

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por rony_souza em 23/07/2012 - 11:28h:

mandouu muiiiitoooo!!!!!

#wald feelings!


[2] Comentário enviado por gilsonleao em 24/07/2012 - 20:08h:

Parabéns! Muito bom cara!!!


[3] Comentário enviado por lanay em 26/08/2012 - 11:01h:

Parabéns, muito bom seu artigo!


[4] Comentário enviado por sdevil em 31/01/2013 - 14:03h:

Amigo gostaria da sua ajuda!
Minha VPN conecta mais não consigo ping na minha rede atraves da VPN, meu servidor não tem firewall. Uso um roteador tp link onde ja criei uma vpn virtual no mesmo. mas não consigo!
M e ajude porfavor!


[5] Comentário enviado por waldemberguem em 31/01/2013 - 16:39h:

Olá, sdevil!
Apenas com essa descrição fica difícil ajudar, posso adiantar uma coisa, para você conseguir pingar sua rede, precisa de uma regra de roteamento de pacotes, um ex: no tutorial à cima se não tiver essa regra no firewall:

# iptables -t filter -A INPUT -p udp --dport 1194 -j ACCEPT
# iptables -t filter -A FORWARD -p udp -s 192.168.0.0/24 --dport 1194 -j ACCEPT
# iptables -t filter -A FORWARD -p udp -d 192.168.0.0/24 --sport 1194 -j ACCEPT
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 10.0.0.0/24 -j ACCEPT
# iptables -t nat -A POSTROUTING -d 192.168.0.0/24 -s 10.0.0.0/24 -j ACCEPT
# iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE

O mesmo não funciona corretamente, dentro dos roteadores existe uma opção de roteamento de pacotes, a idéia seira você fazer uma ponte de uma faixa de ips para a outra conforme a regra à cima.


[6] Comentário enviado por sdevil em 31/01/2013 - 19:17h:

BLZ, so que eu não tenho nehum firewall instalado na rede ja fiz uma ponte no roteador TpLink
Minha faixa de ips e 172.19.7.0 255.255.255.0
GW 172.19.7.150 (Roteador)
DNS ' s 172.19.7.150 + 172.19.7.200.

mesmo assim devo add esses comando acima subs o 192.168.0.0/24 por minha faixa que vai funcionar ?


[7] Comentário enviado por waldemberguem em 01/02/2013 - 08:21h:

Você pode tentar, mais não esqueça de trocar "192.168.0.0/24" por sua faixa de ips, ok?


[8] Comentário enviado por sdevil em 01/02/2013 - 12:45h:

echo 1 > /proc/sys/net/ipv4/ip_forward

Não tenho que colocar esse comado ?


[9] Comentário enviado por waldemberguem em 04/02/2013 - 19:43h:

Olá, sdevil

Esse comando "echo 1 > /proc/sys/net/ipv4/ip_forward" é responsável pelo encaminhamento de pacotes utilizado pelo módulo iptables_nat, usamos esse comando no scritp do firewall para compartilhar a conexão com o squid por ex.
Geralmente esse comando é acompanhado de mais 2 no script do firewall:

########################################
#modprobe iptable_nat #
#echo "1" > /proc/sys/net/ipv4/ip_forward <----- #
#iptables -t nat -A POSTROUTING -o $eth1 -j MASQUERADE#
#######################################

Acredito que você não vá usar ele no seu router uma vez que esse comando é próprio do linux para o iptables.

;)


[10] Comentário enviado por sdevil em 07/02/2013 - 10:51h:

iptables -t filter -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -t filter -A FORWARD -p udp -s 172.19.7.0/24 --dport 1194 -j ACCEPT
iptables -t filter -A FORWARD -p udp -d 172.19.7.0/24 --sport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.19.7.0/24 -d 10.0.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -d 172.19.7.0/24 -s 10.0.0.0/24 -j ACCEPT
iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE

Realizei o procediemnto como sugerido criei um arquivo em /etc/init.d/firewall com essas informações. dei permissão a ele e o pus no rcconf
mesmo assim conecto a vpn mais não ping na minha rede local!

Me ajudem!


[11] Comentário enviado por sdevil em 07/02/2013 - 11:44h:

Essa e minha tabela de roteamento do servidor VPN

Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
10.0.0.2 * 255.255.255.255 UH 0 0 0 tun0
10.0.0.0 10.0.0.2 255.255.255.0 UG 0 0 0 tun0
172.19.7.0 * 255.255.255.0 U 0 0 0 eth1
default 172.19.7.150 0.0.0.0 UG 0 0 0 eth1


Tem alg errado ?



[12] Comentário enviado por sdevil em 07/02/2013 - 19:13h:

Agradeço a ajuda mais consegui resolver parcialmente meu problema dessa forma!

iptables -A INPUT -i eth1 -d 172.19.10.1/32 -p udp -m udp --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.150/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.200/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.250/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.100/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.150/32 -p udp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.200/32 -p udp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.250/32 -p tcp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.100/32 -p tcp -m udp --dport 53 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
------------------------------------------------------------------------------------------------------------------------

O novo problema e so ping para o 172.19.7.150 não ping para as outras maquina!


[13] Comentário enviado por waldemberguem em 08/02/2013 - 16:29h:

Olá, sdevil

Tente desativar o firewall desse máquina de for Windows.

Abs!


[14] Comentário enviado por newchel em 20/03/2013 - 11:42h:

estranho passei um tempão achando que o openvpn ubuntu matriz e filial windows não tava funcionando pq não pingava mas funciona sem pinga que estranho troquei arquivo pela vpn funfo legal mas não pinga que estranho


[15] Comentário enviado por ferreiralinux em 01/04/2013 - 11:34h:

Bom dia

Segui todo seu manual, mas o openvpn não startou no servidor, abaixo detalhe da minha rede.

Ip Rede interna : 192.168.1.0/24

Router : 192.168.1.5

DNS: 192.168.1.1 192.168.1.5


Como devo colocar o server.conf a configuração?

Como criar uma rota no router?

o erro ao inicializar é Options error: --server directive network/netmask combination is invalid
Use --help for more information.


Estou precisando muito da ajuda.




[16] Comentário enviado por alexandrevl em 23/05/2013 - 13:10h:


[12] Comentário enviado por sdevil em 07/02/2013 - 19:13h:

Agradeço a ajuda mais consegui resolver parcialmente meu problema dessa forma!

iptables -A INPUT -i eth1 -d 172.19.10.1/32 -p udp -m udp --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.150/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.200/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.250/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.100/32 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.150/32 -p udp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.200/32 -p udp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.250/32 -p tcp -m udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -s 172.19.10.0/24 -d 172.19.7.100/32 -p tcp -m udp --dport 53 -j ACCEPT
echo 1 &gt; /proc/sys/net/ipv4/ip_forward
------------------------------------------------------------------------------------------------------------------------

O novo problema e so ping para o 172.19.7.150 não ping para as outras maquina!


Pessoal tavez isso ajude. eu tava com o mesmo problema, inseri no arquivo server.conf a linha : client-to-client entao pingara entre as maquinas client e servidor.



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.