OpenVPN en Debian

OpenVPN es una aplicación de software libre que nos permite crear VPNs (Virtual Private Networks) para poder conectarnos remotamente a otra red local de una manera segura utilizando túneles SSL/TLS. Para usar el cliente en Debian deberemos seguir los siguientes pasos:

  1. Conectar a nuestro servidor OpenVPN y generar el certificado para el cliente VPN
    cd /etc/openvpn/easy-rsa
    . ./vars
    ./build-key mi_cliente_IP
    donde mi_cliente_IP es el hostname del cliente que generaré y su IP. Esto lo hago para que luego me sea fácil recordar a quien asigné los certificados.
  2. El script nos mostrará un asistente donde nos hará una serie de preguntas. Debemos responder a todas con Enter (opción que propone por defecto) excepto en la pregunta "Common Name", que responderemos con el nombre del cliente (valor de hostname). Cuando pregunte si queremos emitir el certificado, responder con y (yes). Con esto ya habremos generado el certificado de usuario para nuestro cliente Debian.Una vez generados, nos tendremos que llevar los ficheros /etc/openvpn/keys/mi_cliente_IP.crt y /etc/openvpn/keys/mi_cliente_IP.key al directorio /etc/openvpn/keys/ de nuestro cliente Debian como cliente.crt y cliente.key respectivamente, el fichero /etc/openvpn/keys/ca.crt que hay en nuestro servidor OpenVPN.
  3. Ahora tendremos que generar el fichero con la dirección IP (10.8.XX.YY/30) del túnel que se le dará al cliente cuando conecte (usaremos tun0). Estas Ips deben ser únicas, y se calculan por subneting de 4 Ips: Una de red, otra de broadcast, otra para el cliente y la otra para el extremo del túnel (el servidor OpenVPN). Para ello deberíamos ver cuál ha sido la última subred dada (ordenar por fechas) en el directorio /etc/openvpn/ccd/. Luego crear el fichero /etc/openvpn/ccd/mi_cliente (cambiando el nombre del fichero, por el hostname del equipo, lo mismo que pusimos en Common Name, al emitir el certificado) y escribir el contenido similar al siguiente, donde cambiaremos las direcciones IP, en función de la última que se configuró:
    # Redes VPN:
    # 10.8.0.36 -> IP RED
    # 10.8.0.37 -> IP Equipo Cliente
    # 10.8.0.38 -> IP Tunel
    # 10.8.0.39 -> IP BROADCAST
    # http://openvpn.net/index.php/documentation/howto.html#policy
    ifconfig-push 10.8.0.37 10.8.0.38
  4. Ahora conectarnos a nuestro cliente Debian y ejecutar:
    apt-get -y install openvpn liblzo2-2 lzop openssl
  5. Configurar en el cliente el tunel:
    modprobe tun
    echo tun >> /etc/modules
  6. Crear el fichero /etc/openvpn/client.conf con el siguiente contenido:
    dev tun
    proto tcp-client
    remote IP_SERVIDOR_OPENVPN PUERTO
    resolv-retry infinite
    nobind
    pull
    persist-key
    persist-tun
    ca /etc/openvpn/keys/ca.crt
    cert /etc/openvpn/keys/cliente.crt
    key /etc/openvpn/keys/cliente.key
    comp-lzo
    verb 3
  7. Crear el directorio /etc/openvpn/keys/
    mkdir -m 755 /etc/openvpn/keys
  8. Copiar en el directorio /etc/openvpn/keys/ los ficheros de claves que generamos del servidor OpenVPN.
  9. Reiniciar el servicio OpenVPN
    /etc/init.d/openvpn restart

La foto la he sacado del album de la nave de los locos en flickr.

No hay comentarios: