Servicio de redes privadas virtuales (VPN) con OpenVPN

Zentyal integra OpenVPN [2] para configurar y gestionar las redes privadas virtuales. En esta sección concreta veremos como configurar OpenVPN, el cual posee las siguientes ventajas:

  • Autenticación mediante infraestructura de clave pública.
  • Cifrado basado en tecnología SSL.
  • Clientes disponibles para Windows, Mac OS y Linux.
  • Más sencillo de instalar, configurar y mantener que IPSec, otra alternativa para VPNs en software libre.
  • Posibilidad de usar programas de red de forma transparente.
[2]OpenVPN: http://openvpn.net/

Configuración de un servidor OpenVPN con Zentyal

Se puede configurar Zentyal para dar soporte a clientes remotos (conocidos como Road Warriors). Esto es, un servidor Zentyal trabajando como puerta de enlace y como servidor VPN, que tiene varias redes de área local (LAN) detrás, permitiendo a clientes externos (los road warriors) conectarse a dichas redes locales vía servicio VPN.

Zentyal y clientes remotos de VPN

Zentyal y clientes remotos de VPN

Nuestro objetivo es conectar al servidor de datos con los otros dos clientes remotos (Comercial y Cliente) y estos últimos entre si.

Para ello necesitamos crear una Autoridad de Certificación y certificados individuales para los dos clientes remotos, que crearemos mediante Autoridad de certificación ‣ General. También se necesita un certificado para el servidor VPN, sin embargo, Zentyal expedirá este certificado automáticamente cuando cree un nuevo servidor VPN. En este escenario, Zentyal actúa como una Autoridad de Certificación.

Zentyal y clientes remotos de VPN

Certificados expedidos en el servidor

Una vez tengamos los certificados, deberíamos poner a punto el servidor VPN en Zentyal mediante Crear un nuevo servidor. El único parámetro que necesitamos introducir para crear un servidor es el nombre. Zentyal hace que la tarea de configurar un servidor VPN sea sencilla, ya que establece valores de forma automática.

Zentyal y clientes remotos de VPN

Nuevo servidor VPN creado

Los siguientes parámetros de configuración son añadidos automáticamente y pueden ser modificados si es necesario: una pareja de puerto/protocolo, un certificado (Zentyal creará uno automáticamente usando el nombre del servidor VPN) y una dirección de red. Las direcciones de la red VPN se asignan tanto al servidor como a los clientes. Si se necesita cambiar la dirección de red nos deberemos asegurar que no entra en conflicto con una red local. Además, se informará automáticamente de las redes locales, es decir, las redes conectadas directamente a los interfaces de red de la máquina, a través de la red privada.

Como vemos, el servidor VPN estará escuchando en todas las interfaces externas. Por tanto, debemos poner al menos una de nuestras interfaces como externa vía Red ‣ Interfaces. En nuestro escenario sólo se necesitan dos interfaces, una interna para la LAN y otra externa para Internet.

Si queremos que los clientes de VPN puedan conectarse entre sí usando su dirección de VPN, debemos activar la opción Permitir conexiones entre clientes.

El resto de opciones de configuración las podemos dejar con sus valores por defecto en los casos más habituales.

Configuración de servidor VPN

Configuración de servidor VPN

En caso de que necesitemos una configuración más avanzada:

Dirección VPN:
Indica la subred virtual donde se situará el servidor VPN y sus clientes. Debemos tener en cuenta que esta red no se solape con ninguna otra y que a efectos del cortafuegos, es una red interna. Por defecto 192.168.160.1/24, los clientes irán tomando las direcciones .2,*.3*, etc.
Certificado de servidor:
Certificado que mostrará el servidor a sus clientes. La CA de Zentyal expide un certificado por defecto para el servidor, con el nombre vpn-<nuestronombredevpn>. A menos que queramos importar un certificado externo, lo habitual es mantener esta configuración.
Autorizar al cliente por su nombre común:
Requiere que el common name del certificado del cliente empiece por la cadena de caracteres seleccionada para autorizar la conexión.
Interfaz TUN:
Por defecto se usa una interfaz de tipo TAP, más semejante a un bridge de capa 2, podemos usar una interfaz de tipo TUN más semejante a un nodo de IP capa 3.
Traducción de dirección de red (NAT):
Es recomendable tener esta traducción activada si el servidor Zentyal que acepta las conexiones VPN no es la puerta de enlace por defecto de las redes internas a las que podremos acceder desde la VPN. De esta forma los clientes de estas redes internas utilizarán la VPN de Zentyal como gateway en lugar de a su puerta de enlace predeterminada. Si el servidor Zentyal es tanto servidor VPN como puerta de enlace (caso más habitual), es indiferente.
Servidor VPN usando NAT para convertirse en la puerta de enlace por defecto

Servidor VPN usando NAT para convertirse en la puerta de enlace por defecto

Redirigir puerta de enlace:
Si esta opción no está marcada, el cliente externo accederá a través de la VPN a las redes anunciadas, pero usará su conexión local para salir a Internet y/o resto de redes alcanzables. Marcando esta opción podemos conseguir que todo el tráfico del cliente viaje a través de la VPN.

La VPN puede indicar además servidores de nombres, dominio de búsqueda y servidores WINS para sobrescribir los propios del cliente, especialmente útil en caso de que hayamos redirigido la puerta de enlace.

Tras crear el servidor VPN, debemos habilitar el servicio y guardar los cambios. Posteriormente, se debe comprobar en el Dashboard que el servidor VPN está funcionando.

Widget del servidor VPN

Widget del servidor VPN

Tras ello, debemos anunciar redes, es decir, establecer rutas entre las redes VPN y otras redes conocidas por nuestro servidor. Dichas redes serán accesibles por los clientes VPN autorizados. Para ello daremos de alta objetos que hayamos definido (ver Abstracciones de red de alto nivel en Zentyal), en el caso más habitual, todas nuestras redes internas. Podremos configurar las redes anunciadas para este servidor VPN mediante la interfaz Redes anunciadas.

Redes anunciadas para nuestro servidor VPN

Redes anunciadas para nuestro servidor VPN

Una vez hecho esto, es momento de configurar los clientes. La forma más sencilla de configurar un cliente VPN es utilizando los bundles de Zentyal. Los bundles son paquetes de instalación que incluyen el archivo de configuración de VPN específico para cada usuario y, opcionalmente, un programa de instalación. Estos están disponibles en la tabla que aparece en VPN ‣ Servidores, pulsando el icono de la columna Descargar bundle del cliente. Se pueden crear bundles para clientes Windows, Mac OS y Linux. Al crear un bundle se seleccionan aquellos certificados que se van a dar al cliente y se establece la dirección externa del servidor a la cual los clientes VPN se deben conectar.

Como se puede ver en la imagen más abajo, tenemos un servidor VPN principal y hasta dos secundarios. Dependiendo de la Estrategia de conexión definida, se intentará establecer la conexión en orden específica o en orden aleatorio.

Además, si el sistema seleccionado es Windows, se puede incluir también un instalador de OpenVPN™. Los bundles de configuración los descargará el administrador de Zentyal para distribuirlos a los clientes de la manera que crea más oportuna.

Descargar paquete de configuración de cliente

Descargar paquete de configuración de cliente

Un bundle incluye el fichero de configuración y los ficheros necesarios para comenzar una conexión VPN.

Ahora tenemos acceso al servidor de datos desde los dos clientes remotos. Si se quiere usar el servicio local de DNS de Zentyal a través de la red privada, será necesario configurar estos clientes para que usen Zentyal como servidor de nombres. De lo contrario no se podrá acceder a los servicios de las máquinas de la LAN por nombre, sino únicamente por dirección IP. Así mismo, para navegar por los ficheros compartidos desde la VPN [3] se debe permitir explícitamente el tráfico de difusión del servidor Samba.

Los usuarios conectados actualmente al servicio VPN se muestran en el Dashboard de Zentyal. Tendremos que añadir este widget desde Configurar widgets, situado en la parte superior del Dashboard.

Widget con clientes conectados

Widget con clientes conectados

[3]Para más información sobre compartición de ficheros, ir a la sección Servicio de Dominio y Directorio.

Configuración de un servidor VPN para la interconexión de redes con Zentyal

En este escenario tenemos dos oficinas en diferentes redes que necesitan estar conectadas a través de una red privada. Para hacerlo, usaremos Zentyal en ambas como puertas de enlace. Una actuará como cliente VPN y otra como servidor. La siguiente imagen ilustra esta situación:

Zentyal como servidor VPN vs. Zentyal como cliente VPN

Interconexión de sedes con Zentyal mediante túnel VPN

Nuestro objetivo es conectar varias sedes, sus servidores Zentyal, así como sus redes internas, de tal forma que podemos crear una infraestructura única para nuestra empresa de forma segura a través de Internet. Para ello, debemos configurar un servidor VPN de forma similar al anterior punto.

Sin embargo, se necesita hacer dos pequeños cambios. En primer lugar, debemos habilitar la opción Permitir túneles Zentyal a Zentyal para intercambiar rutas entre servidores Zentyal y luego, introducir una Contraseña de túneles de Zentyal a Zentyal para establecer la conexión en un entorno más seguro entre las dos oficinas. Hay que tener en cuenta que tendremos que anunciar las redes LAN en Redes anunciadas.

Otra diferencia importante es el intercambio de rutas. En el escenario de roadwarrior descrito más arriba, el servidor envía las rutas al cliente. En el escenario de servidor a servidor, las rutas se intercambian en ambos sentidos y se propagan a otros clientes usando el protocolo RIP [4]. Por lo que en los servidores que actúan como clientes VPN del nodo central también es posible añadir las Redes Anunciadas que serán propagadas a los demás nodos.

Zentyal como cliente de VPN

Zentyal como cliente de VPN

Para configurar Zentyal como un cliente VPN, podemos hacerlo a través de VPN ‣ Clientes. Tendremos que darle un nombre al cliente y activar el servicio. Se puede establecer la configuración del cliente manualmente o automáticamente usando el bundle dado por el servidor VPN. Si no se usa el bundle, se tendrá que dar la dirección IP y el par protocolo-puerto donde estará aceptando peticiones el servidor. También será necesaria la contraseña del túnel y los certificados usados por el cliente. Estos certificados deberán haber sido creados por la misma autoridad de certificación que use el servidor.

Configuración automática del cliente usando el paquete VPN

Configuración automática del cliente usando el paquete VPN

Cuando se guardan los cambios, en el Dashboard, se puede ver un nuevo demonio OpenVPN™ ejecutándose como cliente con la conexión objetivo dirigida a nuestro otro servidor Zentyal que actúa como servidor.

Dashboard de un servidor Zentyal configurado como cliente VPN

Dashboard de un servidor Zentyal configurado como cliente VPN

Advertencia

La propagación de rutas puede tomar unos pocos minutos.

[4]Routing Information Protocol (RIP): http://www.ietf.org/rfc/rfc1058