Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
Ricardo Franzen out 6, 2006
Configurando o OpenVPN para múltiplos clientes Muitas vezes precisamos interligar de forma segura diversos pontos que nao estao próximos fisicamente, ou, devido a algum imprevisto acabamos tendo que acessar remotamente e de forma segura os servidores de algum cliente. Vou explicar aqui como configurar um servidor OpenVPN para aceitar conexões de múltiplos clientes utilizando certificados gerados com o OpenSSL. Download e instalaçao do OpenVPN Modelo do arquivo openssl.cnf Gerando os certificados Modelo do arquivo servidor.conf Modelo do arquivo cliente.conf
Download e Instalaçao do OpenVPN Aqui temos aquele mamao com açúcar que a grande maioria sabe de cor e salteado. ## Download do OpenVPN $wget http://openvpn.net/release/openvpn-2.0.9.tar.gz ## Descompactar o conteúdo do arquivo $tar -zxvf openvpn-2.0.9.tar.gz ## Isto é só para a organizaçao #mv openvpn-2.0.9/ /usr/src/ ## Compilar e pronto #cd /usr/src/openvpn-2.0.9 #./configure --prefix=/usr/local/openvpn #make && make install ## Ou ainda mais simples que tudo isso... #apt-get install openvpn
Sou usuário do Debian e do Ubuntu, entao por questões de comodidade própria prosseguir como se tivesse instalado via apt.
vou
Modelo do arquivo openssl.cnf Vou assumir que você já possui o OpenSSL instalado. Você pode alterar ou até mesmo usar o seu próprio openssl.cnf, estou fornecendo este pra deixar tudo bem completo =). Geralmente este arquivo encontra-se em /etc/ssl/openssl.cnf. # # OpenSSL example configuration file. # This is mostly being used for generation of certificate requests. # RANDFILE = /dev/arandom [ca] default_ca = CA_default [CA_default] dir = /etc/openvpn certificate = $dir/xx.crt private_key = $dir/xx.key
1 of 8
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
serial = $dir/serial database = $dir/index.txt new_certs_dir = $dir/ default_md = md5 policy = policy_match default_days = 3500 [policy_match] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes [ req_distinguished_name ] countryName = Country Name (2 letter code) #countryName_default = AU countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) #stateOrProvinceName_default = Some-State localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) #0.organizationName_default = Internet Widgits Pty Ltd # we can do this but it is not needed normally #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = CryptSoft Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 unstructuredName = An optional company name [ x509v3_extensions ] nsCaRevocationUrl = http://www.cryptsoft.com/ca-crl.pem nsComment = "This is a comment" # under ASN.1, the 0 bit would be encoded as 80 nsCertType = 0x40 #nsBaseUrl #nsRevocationUrl #nsRenewalUrl #nsCaPolicyUrl #nsSslServerName #nsCertSequence
2 of 8
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
#nsCertExt #nsDataType
Gerando os certificados Certificado da entidade certificadora (apenas um) openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days 3650 Certificado do cliente (um para cada cliente) openssl req -nodes -new -keyout xx.key -out xx.csr openssl ca -out xx.crt -in xx.csr Parametros Diffie Hellman no servidor. openssl dhparam -out dh1024.pem 1024
Modelo do arquivo servidor.conf Como o próprio nome diz, este é o arquivo de configuraçao do servidor. Este arquivo deve ficar localizado em /etc/openvpn. Lembrando que no servidor devemos ter os certificados da unidade certificadora, do servidor e as chaves públicas dos clientes. port 443 #modifiquei a porta padrao do openvpn proto tcp dev tun ca pmg.crt #certificado da unidade certificadora cert xx.crt #chave pública do cliente key xx.key #chave privada do cliente dh dh1024.pem client-config-dir ccd #criar o diretorio ccd diretorio no /etc/openvpn route 10.0.1.0 255.255.255.0 server 10.0.1.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3
Modelo do arquivo cliente.conf Hum… em qual das máquinas vai este arquivo ?? Claro que é na máquina cliente, no diretorio /etc/openvpn. Lembrando que no cliente devemos ter a chave publica da unidade certificadora, do servidor e as chaves publica e privada do proprio cliente. dev tun0 proto tcp remote 111.111.111.11 443 #endereco IP do servidor nobind persist-key persist-tun ca xx.crt #certificado do orgao certificador cert xx.crt #certificado publico do cliente key xx.key #chave privada do cliente comp-lzo
3 of 8
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
verb 3
Com essas configurações podemos iniciar o openvpn e sair conectando os clientes. Os endereços IP serao atribuados dinamicamente. #openvpn --config /etc/openvpn/servidor.conf --daemon
Categorias: Artigos Técnicos Tags: Linux, OpenVPN, Software Livre
19 Respostas 1.
Dudu disse: 17 de setembro de 2007 às 13:03 Olá, gostaria de saber se o openvpn funciona bem no Ubuntu como servidor e windows como estação. Abraços
2.
Marcelo Coelho disse: 10 de julho de 2008 às 10:56 Realmente faltou configurar um cliente Windows.
3.
Ricardo Franzen disse: 10 de julho de 2008 às 11:04 Fala Marcelo! Foi para a pauta. Esta semana devo estar postando um artigo de como configurar o cliente openvpn no windows. abraços!
4.
Black6 disse: 13 de julho de 2008 às 22:55 cara muito bom é tudo q preciso so q n saquei nada. preciso muito fazer isso aqui. tenho um mini-provedor wireless e isso ajudaria mt so q n to sacando mt alguema pode me ajuda com a configuracao? seria mt bom tbm se o Ricardo coloque a conf do cliente windows
5.
Ricardo Franzen disse: 13 de julho de 2008 às 23:03 Pessoal, já encontra-se disponível um artigo sobre como configurar o cliente do OpenVPN no Windows… http://www.rebit.com.br/2008/07/10/como-configurar-o-cliente-openvpn-no-windows-xp/ Abraços!
6.
joelson disse: 14 de agosto de 2008 às 11:57 Kara, antes de td, parabéns pelos artigos… Então, gostaria se possível que vc me esclarecesse sobre alguns pontos. Quero dizer q não entendo nada de VPN, portanto, desculpa alguna ignorância da minha parte. É o seguinte, inicialmente, gostaria de saber, por exemplo, depois de confugurada a rede VPN posso acessar qualquer máquina da rede “matriz” onde se encontra o
4 of 8
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
servidor?…tipo assim, preciso deixar a rede de matriz e da filial como se fosse uma soh e eu podesse acessar, por exemplo, um dos servidores de sistemas que temos na matriz. Na verdade é apenas um sistema DOS, baseado em clipper, ou eu soh posso ter acesso ao servidor onde estah configurada a VPN, como eh isso??? Eu preciso rodar esse programa DOS na filial, mas mapeando a partir do servidor na matriz, entende, como se fosse local, essa eh a minha necessidade? RESUMINDO: eu preciso saber o seguinte, depois de configurada e funcianal oq exatamente eu posso fazer a partir da filial com as máquinas da matriz( ou máquina servidora do dito programa DOS)??? 7.
Ricardo Franzen disse: 14 de agosto de 2008 às 13:00 Fala Joelson! Primeiramente obrigado pela visita. Sorbe a tua dúvida, se nos seus servidores você configurar uma rota que “ligue” a rede da vpn com a sua rede interna, sim, é possível fazer com que as máquinas se enxerguem de forma “transparente”.
8.
Fabio disse: 22 de agosto de 2008 às 17:37 prezado Ricardo quando fui gererar a segunda cheve do clente no servidor deu o seguinte erro. root@fwproxy:/home/fabio# openssl ca -out xx.crt -in xx.csr Using configuration from /usr/lib/ssl/openssl.cnf Error opening CA private key ./demoCA/private/cakey.pem 4904:error:02001002:system library:fopen:No such file or directory:bss_file.c:35 2:fopen(’./demoCA/private/cakey.pem’,'r’) 4904:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354: unable to load CA private key root@fwproxy:/home/fabio# openssl ca -out xx.crt -in xx.csr Using configuration from /usr/lib/ssl/openssl.cnf Error opening CA private key ./demoCA/private/cakey.pem 4905:error:02001002:system library:fopen:No such file or directory:bss_file.c:35 2:fopen(’./demoCA/private/cakey.pem’,'r’) 4905:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354: unable to load CA private key eu uso o ubuntu e debian
9.
Ricardo Franzen disse: 22 de agosto de 2008 às 18:24 Fala Fábio! valeu pela visita… cara, o problema aí é o seu openssl.cnf que está com as configurações default. Para gerar os certificados você precisa fazer umas alterações nele. Ali no artigo eu mostro um exemplo de arquivo “padrão” que funciona. Confere lá! Abraços.
10.
5 of 8
Fabio disse: 25 de agosto de 2008 às 9:17
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
ok obrigado pela, resposta valeu vou da uma olhada e retorno se deu certo.. 11.
Fabio disse: 27 de agosto de 2008 às 17:51 prezado Ricardo quando eu dou o comando ifconfig tun0 para levantar a interface da esse erro oq pode ser me dar um luz de resto fou bem error fetching interface information: Device not found
12.
Ricardo Franzen disse: 27 de agosto de 2008 às 18:47 A interface tun0 “sobe” junto com o serviço do openvpn, você não precisa fazer isso manualmente. Dê uma conferida nos logs… se ela não está aparecendo automaticamente quer dizer que tem algo de errado aí… []’s
13.
Fabio disse: 28 de agosto de 2008 às 14:09 Prezado Ricardo Olhei os lg com o comando ´´ tail /var/log/messages ´´ e apareceu essas Menssagens Aug 28 13:54:10 fwproxy kernel: [ 46.057549] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/input/input4 Aug 28 13:54:10 fwproxy kernel: [ 48.581911] parport_pc 00:08: reported by Plug and Play ACPI Aug 28 13:54:10 fwproxy kernel: [ 48.583319] parport0: PC-style at 0×378, irq 7 [PCSPP,TRISTATE] Aug 28 13:54:10 fwproxy kernel: [ 68.940296] NET: Registered protocol family 10 Aug 28 13:54:10 fwproxy kernel: [ 68.944566] lo: Disabled Privacy Extensions Aug 28 13:54:10 fwproxy kernel: [ 72.526598] loop: module loaded Aug 28 13:54:10 fwproxy kernel: [ 72.630611] lp0: using parport0 (interrupt-driven). Aug 28 13:54:10 fwproxy kernel: [ 73.365581] Adding 979924k swap on /dev/sda1. Priority:-1 extents:1 across:979924k Aug 28 13:54:10 fwproxy kernel: [ 74.035591] EXT3 FS on sda2, internal journal Aug 28 13:54:10 fwproxy kernel: [ 76.755192] ip_tables: (C) 2000-2006 Netfilter Core Team se puder ajudar sobre oq se trata eu agradeço
14.
Ricardo Franzen disse: 29 de agosto de 2008 às 0:57 Fabio, não tem nada do openvpn aí.. ehehehe no seu conf, mude o valor do parâmetro “verb” para um número maior (algo como 6.. não me recordo e não tenho como olhar aqui…), reinicie o openvpn… ele vai criar um arquivo de log específico do openvpn. Não me lembro se vai ser na pasta do openvpn (/etc/openvpn) ou no /var/log nestes logs provavelmente vai mostrar o que está acontecendo de errado pra você conseguir resolver! []’s
6 of 8
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
http://www.rfranzen.com.br/2006/10/06/configuran...
15.
Fabio disse: 29 de agosto de 2008 às 12:06 ok valeu deu certo era o driver tun que não estava carregando valeu pela força
16.
Fábio disse: 11 de setembro de 2008 às 17:34 Boa tarde Ricardo Blz com vc olha eu aqui de novo cara minha vpn conecta normal blz, mas estou como uma duvida minha rede é base 100, e a vpn esta conectando 10mbps tem alguma configuração pare ser alterada?? se puder me respoder agradeço, pois já pesquisei na net e não ache nada para solucionár o problema obrigado….
17.
Ricardo Franzen disse: 11 de setembro de 2008 às 19:42 E ai Fábio… cara, até onde eu sei, não existe nenhuma opção de velocidade no openvpn… agora, qualquer rede, sempre trabalha na velocidade mais baixa disponível na rede. Se você utiliza um HUB na sua rede e tem algum computador com uma placa de rede 10mbps, sua rede vai trabalhar a esta velocidade…
18.
Genival disse: 22 de junho de 2009 às 17:37 Ricardo, Estou tentando colocar o openVPN para funcionar e não estou conseguindo. Meu servidor e meu cliete estão em uma máquina windows XP. Configurei os arquivos conforme sua orientação. Estou pingando os IP’s do tunel criado (172.17.0.1 & 172.17.0.6), porém a partir do cliente não pingo o endereço e nem a rede do servidor (192.168.1.128/24). Da mesma forma, a partir do servidor não pingo o IP do cliente e nem a rede do mesmo(172.18.12.16/24). Eis os endereços envolvidos: Lado do servidor: rede – 192.168.1.0 Mascara – 255.255.255.0 Default gateway – 192.168.1.1 Lado do Cliente: rede – 172.18.12.16 Mascara – 255.255.255.0 Default gateway – 172.18.12.1 Gostaria da sua gentileza de criar os arquivos (sevidor e cliente), pois não sei mais o que fazer. A internet em ambos os lados está funcionando corretamente, pois o túnel fecha. Deve ser feita mais alguma configuração no windows (roteamento, rede compartilhada, ponte ou algo assim)??? Desde já agradeço sua atenção e paciência, pois necessito desta VPN funcionando para um trabalho de faculdade. Se preferir pode me responder por e-mail.
7 of 8
10-08-2009 10:13
Configurando o OpenVPN para múltiplos clientes |...
19.
8 of 8
http://www.rfranzen.com.br/2006/10/06/configuran...
Ricardo Franzen disse: 22 de junho de 2009 às 19:55 Genival, agradeço muito a visita e o comentário, mas vamos pensando… Se você está na faculdade, quer dizer que está preparado para perder noites de sono pesquisando e estudando (eu faço isso). Significa que está disposto a perder sua vida social e preferir ficar varrendo o Google atrás de alguma coisa que lhe seja viável. Corrija-me se eu estiver errado, mas você deve estar no início do curso. Fica aqui uma dica de alguém que já está nessa merd.. chamada curso superior. Uma fonte NUNCA resolve seu problema. Pesquise em mais de um lugar e junte tudo. Faça seu MIX e aí você vai encontrar uma solução. Este artigo está muito mastigado. Desculpe, não vou criar um arquivo pra você. Não por preguiça. Por falta de tempo e pelo seu bem. Pesquisa. Quando comecei a trabalhar com informática, não sabia nada e a primeira coisa que ouvi do meu superior: “Quando tiver um problema, TE VIRA e RESOLVE!”. Hoje sou a prova viva que essa é a melhor forma. Então eu te digo cara, TE VIRA!
10-08-2009 10:13