21 de set. 2009

Como configurar servidor Punto Multipunto con OpenVPN y cliente en Windows ó Linux.

OpenVPN es un software basado en la filosofía de software libre, que permite crear conexiones VPN entre equipos Linux, Windows, MacOSX, *BSD, *nix y Dispositivos móviles como Windows Mobile a traves de redes inseguras como internet o redes inalámbricas.

OpenVPN puede funcionar de varias maneras una de ellas de punto a punto, punto a multipunto y en modo bridge.

  • Punto a Punto: solo realiza una conexión segura entre 2 equipos, esta conexión puede usarse para compartir archivos entre 2 equipos en internet.
  • Punto a multipunto: Permite conectar a diversos dispositivos a un servidor OpenVPN el cuál permitirá redigir las peticiones remotas a una red interna a traves de una red como internet. El uso de este modo es factible para dar acceso a aplicaciones dentro de una red local a equipos que se encuentran en alguna parte de internet.
  • Modo Bridge: OpenVPN permite crear conexiones entre 2 redes remotas, de tal forma que OpenVPN funciona como gateway de un punto y otro para poder unificar las redes, esto es muy factible cuándo se tienen oficinas remotas y se desea unificarlas, una de sus ventajas se da para las aplicaciones de Voz sobre IP, Bases de Datos, etc.Nuestro caso: Punto a Mutipunto.

    Este tipo de modo de OpenVPN en mi caso es el que más uso, ya que me dedico a desarrollar aplicaciones para dispositivos móviles los cuáles se conectan a internet a traves de conexiones GPRS(Movistar y Telcel en México), de tal forma que les instalo un cliente OpenVPN a los móviles y de esta forma se conectan a un servidor OpenVPN, esto para poder acceder a las bases de datos, a los web services, servidores FTP, etc., de una forma muy segura sin comprometer la información en redes públicas.

    Para comenzar con OpenVPN necesitamos descargar el instalador para Windows de OpenVPN, el cuál puede obtenerse de la siguiente URL:

    http://openvpn.net/release/openvpn-2.0.9-install.exe

    Esto probablemente nos instale el software de OpenVPN en el siguiente directorio: C:\Archivos de Programa\OpenVPN

    Abrir la consola de Windows Inicio->Ejecutar->CMD

    Ya en la consola de Windows ir al directorio easy-rsa de OpenVPN cd C:\Archivos de Programa\OpenVPN\easy-rsa\

    Lo primero que se hará es crear un Certificado de Autoridad (CA) Ejecutar : #Inicia el proceso
    init-config

    #Aqui pedirá valores como Pais, Estado, Ciudad, Organización, Depto, Nombre del Servidor y Correo, todos estos valores se repetirán a excepción del nombre del host que en la parte de configuración de las llaves del cliente en la parte última.
    vars
    clean-all
    build-ca

    #Al finalizar esta parte se crearán varios archivos en directorio
    C:\Archivos de Programa\OpenVPN\easy-rsa\keys

    #Copiar el archivo keys\ca.crt al directorio
    C:\Archivos de Programa\OpenVPN\config
    copy keys\ca.crt ..\config\

    Con lo anterior habremos creado el Certificado de Autoridad.

    El siguiente paso es crear la llave privada y certificado del servidor.

    Ejecutar en el directorio easy-rsa el siguiente comando
    vars
    build-key-server phylevn.mexrom.net

    #dónde phylevn.mexrom.net es el nombre del servidor dónde se está instalando OpenVPN.

    #Aquí de igual pedirá datos, los cuáles deben ser los mismos introducidos anteriormente, también pedirá un password, este mismo password debe ser usado cuándo se creen las llave de los clientes.

    #Luego ejecutar el siguiente comando

    build-dh

    #Con esto se habrán creado otros archivos en el directorio keys.

    #Copiar los siguientes archivos del directorio easy-rsa\keys a ..config\
    C:\Program Files\OpenVPN\easy-rsa> copy keys\phylevn.mexrom.net.crt ..\config\
    C:\Program Files\OpenVPN\easy-rsa> copy keys\phylevn.mexrom.net.key ..\config\
    C:\Program Files\OpenVPN\easy-rsa> copy keys\dh1024.pem ..\config\

    #Ahora hay que configurar el servidor para luego iniciarlo.

    #Dentro del archivo de configuración de OpenVPN
    C:\Program Files\OpenVPN\config

    #Crear un archivo llamado server.ovpn y dentro de ese archivo introducir lo siguiente

    port 1194 proto udp dev tun ca “C:\Archivos de programa\OpenVPN\config\ca.crt” cert “C:\Archivos de programa\OpenVPN\config\phylevn.mexrom.net.crt” key “C:\Archivos de programa\OpenVPN\config\phylevn.mexrom.net.key” # Este archivo debe mantenerse en secreto dh “C:\Archivos de programa\OpenVPN\config\dh1024.pem” server 192.168.20.0 255.255.255.0 #Segmento de red que tomarán los clientes remotos ifconfig-pool-persist ipp.txt push “dhcp-option DNS 208.67.222.222″ push “dhcp-option WINS 192.168.20.1″ tongue.png ush “route-gateway 192.168.20.1″ client-to-client push “route 192.168.1.0 255.255.255.0″ #Segmento de la red local interna duplicate-cn #Con esta opción no es necesario crear una llave por cada cliente comp-lzo #Comprime los datos envíados y recibidos max-clients 60 persist-key persist-tun verb 3 status openvpn-status.log keepalive 10 120 suppress-timestamps route-delay 10 10

    #Ya con la configuración realizada solo basta darle click con el botón derecho del mouse al archivo server.ovpn y seleccionar la opción de Start with OpenVPN.

    #Pero antes de lo anterior hay que editar el registro de windows en la siguiente llave y reiniciar Windows. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    #Y en la opción de IPEnableRouter configurarlo a 1, esto para que se le permita a OpenVPN hacer el ruteo del segmento de la red privada a la red local interna.

    #Ahora si iniciar el servidor de OpenVPN

    #Si todo salió bien se abrirá una ventana de comandos y al final indicará
    Initialization Sequence completed

    #Con esto ya tenemos el servidor de OpenVPN echado andara, ahora falta crear las llaves de los clientes, para esto realizar lo siguiente

    #En la consola de comandos ir a :
    C:\Archivos de programa\OpenVPN\easy-rsa

    #Introducir los siguientes comandos
    vars
    build-key phylevn

    #dónde cliente es el nombre del cliente remoto, debe cambiar por cada cliente remoto configurado en caso de que se creen múltiples llaves.

    #Al momento de ejecutar build-key hay que repetir la información anteriormente capturada a excepción del nombre del host que debe ser el nombre del equipo cliente, también en password debe ponerse el password que se dió al crear la llave privada y certificado del servidor de OpenVPN.

    #En seguida hay que crear los archivos al directorio config del servidor OpenVPN
    copy keys\phylevn.crt ..\config
    copy keys\phylevn.key ..\config

    #Y también estos archivo hay que pasarlos a la máquina remota, solo hay que tener un modo seguro para envío de estas llaves a las máquinas remotas, los arhivos que debe tener la máquina remota deben ser los siguientes
    ca.crt
    phylevn.crt
    phylevn.key

    Dónde phylevn es el nombre de la llave para el host especificado, en caso de que se permita la duplicación de llaves, no importaría el nombre del archivo cliente que se pase en caso de que se tengan varios.

    #Ahora en las máquinas clientes también hay que tener instalado el software OpenVPN

    #Y se debe crear un archivo de configuracion llamado cliente.ovpn en el directorio config de OpenVPN
    C:\Archivos de programa\OpenVPN\config\

    #El archivo cliente.ovpn debe contener lo siguiente:

    client proto udp dev tun remote 201.123.42.174 1194 #Dirección IP Pública del servidor OpenVPN resolv-retry infinite nobind persist-key persist-tun ca “C:\Archivos de programa\OpenVPN\config\ca.crt” cert “C:\Archivos de programa\OpenVPN\config\phylevn.crt” key “C:\Archivos de programa\OpenVPN\config\phylevn.key” comp-lzo verb 3

    #Ya que esté guardado el archivo, solo basta presionar el botón derecho del mouse y presionar Start With OpenVPN, con esto el cliente se intentará validar con el servidor remoto, si todo salió bien, entonces el cliente tendra una nueva interfaz de red y le será asignada una IP en el segmento 192.168.20.x, con esto ya podrá hacer ping al servidor remoto, de igual forma a las IPs del segmento de la red local interna dónde se encuentra el servidor de OpenVPN.

    #Con Linux son los mismos pasos, a excepto de las rutas, pero el proceso es el mismo, solo se excluye la parte del registro de windows y se activa el IP Forwarding.

    Fuente | Mexrom