Implementación y configuración de OpenVPN [Debian9]

Qué es OpenVPN?

OpenVPN es una herramienta de conectividad basada en software libre: SSL (Secure Sockets Layer), VPN Virtual Private Network (red virtual privada). OpenVPN ofrece conectividad punto-a-punto con validación jerárquica de usuarios y host conectados remotamente. Resulta una muy buena opción en tecnologías Wi-Fi (redes inalámbricas IEEE 802.11) y soporta una amplia configuración, entre ellas balanceo de cargas. Está publicado bajo la licencia GPL, de software libre.

Prerequisitos

En este tutorial se explicará cómo implementar un servidor OpenVPN de múltiples túneles. Las configuraciones expuestas en la guía permitirán escalabilizar la solución de su servidor a cuantos túneles virtuales sobre openvpn usted quiera desplegar, siempre y cuando los recursas hardware de su servidor lo permita. Son necesarias algunas modificaciones, como la creación de algunos directorios que serán necesarios para esta estructura escalable, así como la habilitación del reenvío de paquetes.

Habilitamos el reenvío de paquetes de manera permanente:

Descomentamos la siguiente línea:

Preparamos los directorios necesarios:

-Directorio para salvas temporales de los certificados generados por ovpnN (donde N hace referencia al # que identifica al servidor openvpn)

-Directorio para configurar la reservación de IP por el tunel ovpnN:

-Directorio para albergar las herramientas para la PKI:

-Directorio que albergará la ca, dh y llave del servidor:

-Directorio para scripts del sistema. Aquí habrá un script que explicaremos más adelante, para que la gestión de los múltiples servidores ovpnN sea más cómoda:

1-Instalación de OpenVPN por repositorios

2-Configuración de OpenVPN

Copiando fichero de configuración del servidor de los ejemplos de openvpn:

Editando el fichero de configuración del servidor:

Adaptando a su entorno:

Configurando IP estática para el cliente (reservación de IP). Esto es necesario cuando configura servidores, los cuales deberían tener siempre la misma IP por dentro del tunel. Para ello editamos el siguiente fichero:

Agregar lo siguiente (adaptar a su entorno de red):

#ifconfig-push [local] [remote]

3-Configuración de la PKI

Copiando el directorio “/usr/share/easy-rsa/” y pegarlo en “/config/ovpn1-easy-rsa/”:

Acceder al directorio “/config/ovpn1-easy-rsa/easy-rsa”:

Editamos el fichero “vars”:

Modificamos las siguientes líneas, según el entorno de la red:

Inicializando la PKI:

NOTA: Si da 8un error que no se encuentra el fichero “openssl.cnf” tomar uno de los que está de ejemplos y cambiarle el nombre
cp openssl-1.0.0.cnf openssl.cnf

Intentamos nuevamente inicializar la PKI:

NOTA: Más adelante se presentará un script para automatizar el trabajo con la PKI y la manera en que se copian los certificados. Si usted ya tiene ese script y desea agregar un nuevo tunel ovpnN, hasta este paso es necesario todo lo anterior (adaptanto al nuevo ovpnN, tanto en directorios como en fichero de configuración), ya que en lo adelante todo lo hace el script.

Construimos la ca, el dh, llaves y certificados (No pondremos contraseña a los certificados):

Copiar los archivos del servidor:

4-Generación de certificados para los clientes

Obtener los archivos para el cliente (“ca.crt”, “client.key”, “client.crt”). Hay varias formas de enviar estos archivos, en este caso se hace uso de la herramienta de Windows WinSCP. Se loguea por SSH y se copia por SCP:

5-Inicializar ovpn1 en el servidor

Reiniciamos openvpn:

Conectándonos al tunel vtun0 (ovpn1):

6-Instalación y configuración del cliente OpenVPN en un host Linux

Instalando OpenVPN:

Copiando fichero de configuracion de cliente ovpn de los ejemplos

Editamos el fichero de configuración del cliente ovpn1:

Dentro modificamos según convenga. A continuación configuramos el cliente para que se conecte al servidor ovpn1:

7-Inicializar ovpn1 en el cliente

Copiar los certificados generados para el cliente y pegarlos en el directorio especificado por el cliente. En este caso “/etc/openvpn/ovpn1”. Una forma de hacerlo, ademas de WinSCp, es por scp:

Reiniciamos el cliente ovpn:

Conectarse al tunel ovpn1:

Esto hará que se ejecute el cliente, pero si queremos que inicie automáticamente, basta con reiniciar el servidor y el programa se iniciará, sin imposibilitarnos trabajar en la consola. Usted puede repetir el procedimiento hecho para ovpn1, para tantos ovpnN sus recursos hardware lo permitan en el servidor. Respetando la estructura descrita para los directorios, usted puede lograr múltiples servidores ovpn, en un mismo servidor OpenVPN. La siguiente imagen muestar un ejemplo de un servidor OpenVPN con 4 túneles, como si de un router VyOS o RouterOS se tratase:

8-Automazación de OpenVPN

Creando script para automatizar openvpn:

Agregar lo siguiente:

NOTA: El script requiere de un servidor ftp que responde en este caso al nombre “ftp1.nodo.local”. Usted puede crearlo en el propio localhost o o con otro nombre

Dando permisos de ejecución al script:

Probando la ayuda del script

Debe devolvernos lo siguiente:

Creando un servidor ovpn2

Debe devolvernos lo siguiente:

Iniciando el servidor

Debe devolver algo como esto:

Al reinicar el servidor todos los servidores ovpnN que se encuentren configurados iniciarán automáticamente.

A continuación, imágenes que muestran cómo se exportó satisfactoriamente los certificados al ftp que los albergará:

 

Usted puede configurar el cliente con proxy apoyándose en la documentación realizada por Luis Felipe Domínguez Vega aquí.

 

 

 

(Visited 1 times, 1 visits today)
Franco Diaz Hurtado
Sobre Franco Diaz Hurtado 14 Artículos
Ing. Telecomunicaciones y Electrónica; Administrador de redes en la dirección general de ECASA

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*