+ Responder ao Tópico



  1. #1

    Padrão Ubuntu 8.04 LTS + OpenVPn

    Oi amigos.Tenho uma duvida referente ao OpenVpn.
    Eu instalei o UbuntuServer 8.04 LTS, instalei o Openvpn e tambem o Openssl.
    Configurei o arquivo servidor.conf do openvpn no UbuntuServer, ele ficou assim:

    proto tcp-server
    port 5901
    dev tap
    ifconfig 192.168.4.1 255.255.255.0
    tls-server
    dh /etc/openvpn/dh.pem
    key /etc/openvpn/servidor.key
    ca /etc/openvpn/my-ca.crt
    cert /etc/openvpn/servidor.crt

    Lembrando que criei as chaves e os certificado com os seguintes passos:

    Esses dois arquivos foram salvos na pasta de destino dos certificados e das chaves, esse destino eu defini no arquivo: /etc/ssl/openssl.cnf:
    # touch index.txt
    # echo 01 > serial
    Esses dois arquivos que foram criados são necessários para o funcionamento do Openssl.

    Com esse comando eu criei a Autoridade Certificadora:
    # openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 730

    Com esse comando eu criei o arquivo responsável pela troca de chaves:
    # openssl dhparam -out dh.pem

    Com esse comando eu criei a chave do servidor:
    # opessl req -nodes -new -keyout servidor.key -out servidor.csr

    Com esse comando eu assinei e criei o certificado do servidor:
    # openssl ca -out servidor.crt -in servidor.csr

    Repeti os passo acima para a criação das chaves clientes e assinaturas dos certificados clientes:
    # opessl req -nodes -new -keyout cliente1.key -out cliente1.csr
    # openssl ca -out cliente1.crt -in cliente1.csr

    # opessl req -nodes -new -keyout cliente2.key -out cliente2.csr
    # openssl ca -out cliente2.crt -in cliente2.csr

    Criei no Linux e levei pro WindowsXpSp2 os seguintes arquivos, e as suas respectivas chaves:

    cliente1.ovpn:
    proto tcp-client
    remote 192.168.1.107
    port 5901
    dev tap
    ifconfig 192.168.4.2 255.255.255.0
    tls-client
    key "c:\\arquiv~1\\openvpn\\bin\\cliente1.key"
    ca "c:\\arquiv~1\\openvpn\\bin\\ca.crt"
    cert "c:\\arquiv~1\\openvpn\\bin\\cliente1.crt"

    cliente2.ovpn:
    proto tcp-client
    remote 192.168.1.107
    port 5901
    dev tap
    ifconfig 192.168.4.3 255.255.255.0
    tls-client
    key "c:\\arquiv~1\\openvpn\\bin\\cliente2.key"
    ca "c:\\arquiv~1\\openvpn\\bin\\ca.crt"
    cert "c:\\arquiv~1\\openvpn\\bin\\cliente2.crt"

    Detalhes importantes:
    Eu estou em um ambiente de teste, estou usando 3 micros de uma rede local para isso, todos estão no mesmo roteador:
    Micro servidor: ip real 192.168.1.107 Ubuntu+OpenVpn
    Micro cliente1: ip real 192.168.1.104 WinXpSp2
    Micro cliente2: ip real 192.168.1.103 WinXPSp2

    Coloquei o openvpn em daemon:
    # openvpn --config /etc/openvpn/servidor.conf --daemon

    O problema que vem ocorrendo é o seguinte, eu consigo conectar um cliente windows, porém quando eu coloco para conectar o segundo, o primeiro que estava conectado acaba caindo. Consigo pingar a maquina conectada ao servidor e vice-e-versa.

    Gostaria de saber se faltou algum parâmetro ou se cometi algum outro erro, e também se é possível um único arquivo de configuração aceitar mais de uma conexão cliente ou se preciso de algum outro programa que me dê essa possibilidade.


    Obrigado desde já pela ajuda.

  2. #2

    Padrão

    Olá amigo,

    Eu tenho exatamente o mesmo setup que você, Ubuntu Server 8.04 LTS com OpenVPN!
    Basicamente eu instalei o ele por apt e vendo suas configurações vejo que tem algumas coisas faltando!

    Você colocou tls-server, mas eu acredito que seja tls-auth e você precisa especificar uma chave ali!
    Na parte de rede da minha instalação tenho o seguinte, que não vi no seu arquivo do servidor:

    Código :
    # main network of the server and net_admin
    server 10.11.12.0 255.255.255.0                 
     
    # aditional networks
    route 10.11.13.0 255.255.255.0                 
     
    # log file for client:ip information
    ifconfig-pool-persist ipp.txt
     
    # routes to be sent to all clients on the vpn
    push "route 192.192.193.0 255.255.255.0"
    push "route 192.192.192.0 255.255.255.0"
     
    # icmp packets to keep state of the connections over statefull firewalls
    keepalive 10 120

    E após isso criei um diretório onde estão os arquivos de configuração do cliente contendo o ip deles!
    Segui uma regra básica que esta neste link --> HOWTO
    Espero que ajude!

  3. #3

    Padrão TUN ao invez de TAP

    Vc precisa de dois arquivos de clientes, um pra cada cliente, com portas diferentes, seu arquivo de configuraçao tambem tem algumas coisas que vc nao precisa. e outras que sao necessarias vc nao colocou, da uma lida melhor no manual que tem no site http://openvpn.net/papers/BLUG-talk/ la tem exemplos para multicliente, lembre que em uma porta so pode uma comunicaçao, se vc precisa de dois clientes vc tem que usar uma porta pra cada.
    Última edição por UlissesCampos; 27-08-2008 às 09:40. Razão: melhoramento

  4. #4

    Padrão Refazendo as configurações do servidor

    Alterei as configurações do servidor.
    O novo arquivo ficou assim:

    dev tap
    proto tcp-server
    port 5901
    tls-auth /etc/openvpn/chave.tlskey
    local 192.168.1.107
    server 192.168.4.120 255.255.255.0
    ifconfig-pool-persist ipp.txt
    dh /etc/openvpn/dh.pem
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/servidor.crt
    key /etc/openvpn/servidor.key
    keepalive 10 120
    client-config-dir /etc/openvpn/ccd
    route 192.168.4.0 255.255.255.0

    Apos feitas as alterações o servidor sequer funciona.
    # /etc/init.d/openvpn restart
    # *Stopping virutal private network daemon.
    # *Starting virtual private network daemon.
    # *servidor (FAILED)

    Criei a pasta ccd no diretorio /etc/openvpn, nele eu salvei dois arquivos com o mesmo nome dos arquivos de configuração do cliente, neles coloquei o conteudo:

    cliente.ovpn:
    ifconfig-push 192.168.4.2 192.168.4.3

    cliente2.ovpn:
    ifconfig-push 192.168.4.5 192.168.4.6

    Criei o arquivo ipp.txt porem não coloquei nenhum conteúdo.
    Criei o arquivo chave.tlskey com o comando:
    #openvpn --genkey --secret chave.tlskey

    Gostaria de saber se faltou alguma coisa.
    Eu tenho mesmo que usar o parametro route, uma vez que estou no mesmo roteador?
    Quais ip eu tenho que colocar nos parametros "server" , "local" e "route" ; não entendi direito quais ip ei teria que colocar.

    Acredito ser possivel montar um servidor vpn multicliente com apenas uma porta de acesso, por que senão teriamos que fazer varios redirecionamentos no roteador, quando eu estiver em redes diferentes, uma para cada porta.

    Obrigado pelas dicas.

  5. #5

    Padrão

    Ola amigo...
    É possivel criar uma vpn com apenas uma porta e que atenda varios clientes!
    Não é necessario criar outras interfaces!
    O dispositivo TAP é destinado se você for criar uma VPN em modo bridge!
    Se você for fazer roteamento precisa ser o TUN! Esta no site do openvpn!

    E amigo...
    Da onde você tirou o parametro abaixo?

    Código :
    proto tcp-server

    Toda essa parte de configuração que você perguntou está na pagina do openvpn!
    Só falta você dar uma lida!
    Você acessou o site que te passei antes?? --> HOWTO

  6. #6

    Padrão

    E como nosso amigo disse ali em cima...
    Na pagina do openvpn tem exemplos bem legais!
    Aqui esta o link --> HOWTO

  7. #7

    Padrão Sim, pesquisei no site...

    Olhei o site, acontece que não sei muito de ingles.... xD

    Bom consegui levantar o servidor a conf dele ficou:
    dev tap
    proto tcp
    port 5901
    tls-auth /etc/openvpn/chave
    server 192.168.4.0 255.255.255.0
    ifconfig-pool-persist /etc/openvpn/ipp.txt
    ifconfig 192.168.4.120 255.255.255.0
    dh /etc/openvpn/dh.pem
    key /etc/openvpn/servidor.key
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/servidor.crt
    keepalive 10 120
    client-config-dir /etc/openvpn/ccd
    route 192.168.4.0 255.255.255.0
    persist-key
    log /var/log/openvpn.log

    O problema que está ocorrendo e na hora de atribuir o ip do cliente, eu retirei o ifconfig do cliente e coloquei por atribuir por dhcp, porem o cliente não recebe.

    Bom vou olhar a documentação e tentar ver aonde errei.
    No caso estou usando tap porque eu estou ligando o servidor linux a maquinas windows, funciona se eu usar tun com windows?
    Esqueci de citar, eu não possuo no servidor nunhum DNS, como o bind.

    Até!
    Última edição por Sigfrield; 27-08-2008 às 13:40.

  8. #8

    Padrão

    Opa amigo! Hehhe
    Então o TUN funciona perfeitamente com windows!
    Eu uso aqui na minha empresa para dar acesso a CEO e ao CTO quando estão de viagem!
    Não tenho problemas com essa vpn! Funciona que é uma blz...
    Você tem que ter me mente que ao usar TAP o OpenVPN espera uma vpn em modo bridge!
    Você usando TUN estará fazendo roteamento! Creio que dessa forma é muito mais escalonável!

    Para você ter uma ideia aqui estão fragmentos do meu arquivo de configuração do OpenVPN:

    Código :
    mode server
    port 1194
    proto udp
    dev tun
    user nobody
    group nogroup
    client-config-dir /etc/openvpn/ccd
     
    cipher AES-128-CBC
    comp-lzo
    persist-key
    persist-tun
     
    server 10.10.20.0 255.255.255.0              # Rede principal, essa vai estar na interface vpn
    ifconfig-pool-persist ipp.txt
    push "route 10.10.11.0 255.255.255.0"      # Rotas adicionais que serao enviadas aos clientes da vpn
    keepalive 10 120

    Espero que isso te de uma luz!
    Faloww

  9. #9

    Padrão

    vo te dar o caminho, este arquivo que vc fez das conf, coloca ele como cliente1.conf, e faz um igual como cliente2.conf, so muda o numero da porta, ai vc faz um arquivo de cliente pra cada cliente. pra te ajudar mais que isso so fazendo pra vc, hehehe, tenta la, usa o translate.google.com.br, ele te ajuda, toma cuidado com o firewall, ele pode te atrapalhar.

  10. #10

    Padrão

    Citação Postado originalmente por UlissesCampos Ver Post
    vo te dar o caminho, este arquivo que vc fez das conf, coloca ele como cliente1.conf, e faz um igual como cliente2.conf, so muda o numero da porta, ai vc faz um arquivo de cliente pra cada cliente. pra te ajudar mais que isso so fazendo pra vc, hehehe, tenta la, usa o translate.google.com.br, ele te ajuda, toma cuidado com o firewall, ele pode te atrapalhar.
    Você esta sugerindo que ele abra uma porta nova para cada cliente novo que ele precisar?
    Acho que essa é a pior forma que você pode fazer!! Porque para cada porta nova você precisa de uma instancia nova do OpenVPN rodando no seu linux... ou seja... mais memoria sendo usada...

  11. #11

    Padrão

    Oi Amigos,
    Zenun, Ulisses, obrigado pela paciência, mas não está dando certo.
    Creio que agora deve ser problema no cliente windows agora depois que mudei pra tun.

    Zenun, se não for pedir muito, mas já abusando de sua boa vontade, você poderia me passar os arquivos de configuração do servidor, de um cliente windows e do cliente no diretorio ccd por e-mail. Claro se vc tiver acesso aos arquivos que vc configurou.
    Daí eu altero de acordo com o que preciso, pra ver se funciona.
    Prometo escrever um artigo de como configurar openvpn se eu conseguir fazer funcionar xD , dando os devidos creditos claro xD. Acho que não existe em português nenhum passo-a-passo que oriente a configuração de openvpn multi-cliente com apenas uma porta e com clientes windows. xD Lembrando que eu tenho a mania de documentar tudo que faço então quando funcionar o passo-a-passo estará praticamente pronto xD .

    Obrigado pela atenção.
    Meu e-mail é: [email protected]

    Att.

  12. #12

    Padrão

    Citação Postado originalmente por Sigfrield Ver Post
    Oi Amigos,
    Zenun, Ulisses, obrigado pela paciência, mas não está dando certo.
    Creio que agora deve ser problema no cliente windows agora depois que mudei pra tun.

    Zenun, se não for pedir muito, mas já abusando de sua boa vontade, você poderia me passar os arquivos de configuração do servidor, de um cliente windows e do cliente no diretorio ccd por e-mail. Claro se vc tiver acesso aos arquivos que vc configurou.
    Daí eu altero de acordo com o que preciso, pra ver se funciona.
    Prometo escrever um artigo de como configurar openvpn se eu conseguir fazer funcionar xD , dando os devidos creditos claro xD. Acho que não existe em português nenhum passo-a-passo que oriente a configuração de openvpn multi-cliente com apenas uma porta e com clientes windows. xD Lembrando que eu tenho a mania de documentar tudo que faço então quando funcionar o passo-a-passo estará praticamente pronto xD .

    Obrigado pela atenção.
    Meu e-mail é: [email protected]

    Att.
    Olá amigo...
    Olhando na FAQ da OpenVPN lá esta bem explicito o motivo que esse erro acontece

    Código :
    I've set up an OpenVPN server, and successfully connected a client to it, 
    but when I try to connect a second client, the first client gets bumped off the VPN. 
    What's the problem?
     
    This is a common problem that occurs when you re-use the same certificate/key pair 
    among multiple clients. It can also occur if you didn't provide a unique common name 
    for every client's certificate. While none of these practices is recommended, 
    if you cannot avoid using duplicate certificates or common names, use the [B]--duplicate-cn[/B] 
    config file option.
    Traduzindo:

    1. Acontece por você ter reusado o mesmo certificado/chave para os dois clientes
    2. Pode acontecer tambem se você não colocou um COMMON NAME ÚNICO para cada cliente
    3. Uma alternativa é, se você não pode evitar isso use a diretiva "--duplicate-cn" no arquivo do servidor!

    Espero que isso ajude você agora!
    Falowww!!

  13. #13

    Padrão Quase pronto, mas o pior já foi.

    Muito obrigado pelas dicas amigos.

    Graças a elas o openvpn finalmente consegue aceitar vários clientes em uma mesma porta.
    Obigado pela última dica Zenun, quando eu criei os cerificados dos clientes eu preenchi os campos com o mesmo nome de usuário, por isso quando um se conectava o outro era derrubado, obvio por que o servidor via como o mesmo cliente. Então gerei outro certificado usando outro nome no campo, "(your name)" ; dai agora consigo conectar diversas maquinas.

    Resta agora colocar as funções de dhcp para os clientes e ver como faço os clientes se enxergarem.
    Vou olhar com calma o FAQ do site do openvpn.

    Att.

  14. #14

    Padrão

    Citação Postado originalmente por Sigfrield Ver Post
    Muito obrigado pelas dicas amigos.

    Graças a elas o openvpn finalmente consegue aceitar vários clientes em uma mesma porta.
    Obigado pela última dica Zenun, quando eu criei os cerificados dos clientes eu preenchi os campos com o mesmo nome de usuário, por isso quando um se conectava o outro era derrubado, obvio por que o servidor via como o mesmo cliente. Então gerei outro certificado usando outro nome no campo, "(your name)" ; dai agora consigo conectar diversas maquinas.

    Resta agora colocar as funções de dhcp para os clientes e ver como faço os clientes se enxergarem.
    Vou olhar com calma o FAQ do site do openvpn.

    Att.
    Opa, blz amigo!
    Fico feliz que funcionou!
    Qualquer coisa estamos aee!

    Abraço,

    André

  15. #15

    Padrão Outro Detalhe

    Olá amigos,

    Depois do período de testes eu implementei a openvpn entre dois servidores, um windows e outro linux.

    A config do servidor windows ficou assim:
    mode server
    dev tap
    proto udp
    port xxxx
    tls-server
    ifconfig 192.168.4.120 255.255.255.0
    dh "c://arquiv~1//openvpn//bin//dh.pem"
    ca "c://arquiv~1//openvpn//bin//ca.crt"
    cert "c://arquiv~1//openvpn//bin//servidor.crt"
    key "c://arquiv~1//openvpn//bin//servidor.key"
    route 192.168.1.0 255.255.255.0
    route-gateway 192.168.4.2
    keepalive 10 60

    O server na outra ponta, no caso o linux, ficou:
    dev tap
    proto udp
    remote 200.xxx.xxx.xxx
    port xxxx
    tls-client
    ifconfig 192.168.4.1 255.255.255.0
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/client.crt
    key /etc/openvpn/client.key
    route 192.168.0.0 255.255.255.0
    route-gateway 192.168.4.120
    keepalive 10 60.


    A conexão é estavél e funciona sem problemas.

    192.168.1.0 é a rede local de uma ponta
    192.168.0.0 é a rede local da outra ponta
    192.168.4.0 é a rede de vpn
    192.168.4.120 é o ip do servidor vpn, esse é o servidor windows
    192.168.4.1 é o cliente do vpn, esse é o servidor linux

    Com os dois servers em vpn, eu achei que meus problemas estariam acabados, pena que não é tão simples.
    Os micros do lado do server windows conseguem pingar para o server linux, eu posso até ver os compartilhamentos no samba. Ficou ótimo, pois essa é a necessidade, não preciso que os micros de uma rede vejam os da outra, apenas que os servers fiquem visiveis para as duas redes.

    Aí que está o problema, os micros da rede local do lado linux, não conseguem pingar para o 192.168.4.120, que é o server windows do outro lado. O estranho é que o contrario funciona.

    Gostaria de saber se eu tenho que adicionar mais alguma rota no server linux.

    Para os micros da rede do lado windows acessarem os sever linux eu defino uma rota no prompt de cada maquina:
    route add 192.168.4.0 MASK 255.255.255.0 192.168.0.X METRIC 20

    o primeiro ip é a rede, o segundo a mascara, o terceiro é o ip gateway que no caso é o ip do server windows da rede local. Com essa rota os micros da rede do lado windows podem acessar o server linux do outro lado.

    Mesmo fazendo esse esquema nos micros da rede no lado linux, eu não cosigo pingar para o server windows so outro lado.

    Se alguem tiver alguma dica, ou já teve esse problema, e que possa me orientar, agradeço desde já.

  16. #16

    Padrão Resolvido

    O Ubuntu Server 8.04 vem como padrão o roteamento desabilitado.
    Para ativá-lo basta usar o comando:
    #echo 1 > /proc/sys/net/ipv4/ip_forward

    Com isso as maquinas atrás do servidor do lado linux poderão acessar o server windows.
    Lembrando que para isso, deve ser digitado o comando route add no windows da rede
    # route add "ip_da_rede_vpn" MASK "sua_mascara_de_rede_na_vpn" "ip_do_server_linux"

    Exemplo> route add 192.168.4.0 MASK 255.255.255.0 192.168.1.20

    Pronto.
    Última edição por Sigfrield; 02-10-2008 às 15:38.