[ Introducción ] [ Caso-Estudio ] [ Instalación ] [ Configuración base ] [ Alias ] [ NAT ] [ Reglas ] [ DNS ] [ DHCP ] [ Caudal ] [ OpenVPN ] [ Portal ]
[ OpenVPN sin DHCP ] [ spamd ]

OpenVPN (Virtual Private Network)

pfSense incorpora el paquete OpenVPN que permite crear redes privadas virtuales (VPN).

Con OpenVPN podremos extender nuestra red a cualquier lugar del mundo, haciendo que la identificación y la comunicación sean seguras.

Antes de tener pfSense el administrador de la red se conectaba al escritorio de uno de los servidores Windows de su red por RDP, desde una IP fija. Al usar una IP fija se podía controlar con las reglas de uno de los routers ADSL el acceso a este servicio.

Ahora, con OpenVPN el administrador entra directamente en la red local, sin necesidad de que ningún ordenador le haga de puente. Y  lo hace desde una IP dinámica, autentificándose en base a certificados SSL.


Instalación de OpenVPN en Windows XP  

Generación de las llaves y certificados (entidad certificadora, servidor y cliente)
 
Instalación de la llave y de los certificados en el cliente Windows XP
 

Configuración de OpenVPN en pfSense
 
Conectando ...
 
Conexión automática

OpenVPN sin DHCP

Problemas de estabilidad


Instalación de OpenVPN en Windows XP

El OpenVPN para Windows es incompatible con la mayoría de cortafuegos de terceros para Windows XP SP2. Para más información mira la página openvpn.se/xpsp2_problem.html. En nuestro caso empleamos Panda Antivirus, por lo que tendremos que instalar la versión sin cortafuegos y, en todo caso, dejar activado el cortafuegos propio de Windows XP. Hay que hacer estos cambios antes de hacer la instalación de OpenVPN para Windows.

Descargamos de openvpn.se la última versión de OpenVPN para Windows (es de código libre) con el driver TAP de tarjeta de red virtual incluido:

http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe

Instalamos la aplicación con sus opciones por defecto.

Vamos ahora a nuestras conexiones de red, donde encontraremos una nueva tarjeta de red:

Le cambiamos el nombre que tiene por defecto, por el de TUN (podemos aprovechar también para ponerle, a la tarjeta real, el nombre de LAN):

Vamos a la carpeta C:\Archivos de programa\OpenVPN\config y creamos un archivo de texto que se diga dominio.ejemplo.ovpn con el siguiente contenido (siendo RRR.RRR.RRR.RRR la IP pública del sitio al que queremos connectarnos):

float
port 1194
dev tun
dev-node TAP
proto tcp-client
remote RRR.RRR.RRR.RRR 1194
ping 10
persist-tun
persist-key
tls-client
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
#comp-lzo
pull
verb 4

La línea comp-lzo está comentada (símbolo #) para poder hacer las primeras pruebas sin compresión en las comunicaciones.

Ahora, para podernos conectar sólo nos queda la generación de los certificados y llaves SSL.

Generación de llaves y certificados (entidad certificadora, servidor y cliente)

En un ordenador  Windows que tengamos instalado OpenVPN y que sea de acceso seguro ...

Abrimos una ventana de órdenes MS-DOS ([Inicio] [Ejecutar ...] cmd) y tecleamos:

cd "c:\Archivos de programa\OpenVPN\easy-rsa"
init-config
edit vars.bat

Editamos ahora vars.bat, poniendo nuestros datos en las últimas líneas:

set KEY_COUNTRY=ES
set KEY_PROVINCE=Provincia
set KEY_CITY=Población
set KEY_ORG=El nombre de vuestra organización
set KEY_EMAIL=administrador@dominio.ejemplo

De nuevo en el intérprete de órdenes MS-DOS, hacemos:

vars
clean-all
build-ca

Se nos presentarán los datos por defecto, los cuales sólo tendremos que confirmar. En el nombre del servidor tendremos que poner dominio.ejemplo ya que este proceso nos generará  ca.key (llave privada de la entidad certificadora, para el servidor) y ca.crt (certificado-raíz de la entidad certificadora,  para el servidor y para todos los clientes):

build-key-server server

Este proceso genera la llave privada y el certificado (server.key i server.crt) para un servidor OpenVPN. Aquí tendremos que indicar cortafuegos.dominio.ejemplo como nombre de nuestra máquina:

A las dos preguntas finales de confirmación sólo tenemos que contestar mediante y (yes).

build-key client

Este proceso genera la llave privada y el certificado (client.key i client.crt) para un cliente OpenVPN. Indicamos como nombre de máquina cliente.dominio.ejemplo:

A las dos preguntas finales de confirmación sólo tenemos que contestar por y (yes).

En caso de conectar más de un cliente cada uno de ellos tiene que tener su propia llave y certificado de cliente. Los certificados de cliente pueden ser revocados y de esta manera un cliente deja de estar autorizado para conectarse.

build-dh

Como paso final tenemos que generar los parámetros Diffie Helman para nuestro servidor OpenVPN, lo que requiere un cierto tiempo de máquina:

Obtendremos con ello un archivo para el servidor llamado dh1024.pem.


Instalación de la llave y de los certificados en el cliente Windows XP

Copiamos los archivos ca.crt, client.key i client.crt que tenemos en c:\Archivos de programa\OpenVPN\easy-rsa\keys (generados en el apartado anterior) a c:\Archivos de programa\OpenVPN\config del ordenador cliente.


Configuración de OpenVPN en pfSense

Vamos a [VPN] [OpenVPN] [Servers] y añadimos un servidor VPN ...

En Address pool tendremos que poner una red que no coincida con ninguna de las que tenemos (AAA, BBB, CCC, XXX, YYY, ZZZ).

Es recomendable probar primero la conexión sin compresión LZO (LZO compression) y después la activamos, tanto a nivel cliente como a nivel servidor.


Conectando ...

Ya está todo a punto para la primera conexión. En la barra de tarea tenemos dos nuevos iconos, el de OpenVPN GUI (interfase gráfica) y el de TAP, que nos dice que está desconectada:

Si hacemos doble clic sobre el icono de OpenVPN GUI veremos una ventana como la siguiente:

donde se nos informa de los pasos que hace la conexión. Si todo ha ido bien, esta ventana se cerrará y veremos que el icono de TAP cambia:

Con ello estaremos en nuestra red gestionada por pfSense como una máquina más ... Probamos si podemos acceder pues a recursos que estén en las redes 192.168.XXX.0, 192.168.YYY.0 y 192.168.ZZZ.0. Por ejemplo, a la propia administración web de pfSense.

Recordad que si hemos hecho las primeras pruebas sin compresión LZO hay que activarla, tanto en el servidor como en el cliente (ya comentado anteriormente).


Conexión automática

Si deseamos que cuando se ponga en marcha nuestro cliente Windows se realice la conexión de forma automática, tendremos que seguir los siguientes pasos:

Eliminamos del registro de Windows el arranque de OpenVPN GUI

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"openvpn-gui"="C:\\Archivos de programa\\OpenVPN\\bin\\openvpn-gui.exe"

Vamos al [Panel de Control] [Herramientas Administrativas] [Servicios] y buscamos OpenVPN Service. Veremos que está en modo manual. Lo ponemos en Automático y con OpenVPN GUI ya parado, ponemos en marcha el servicio.

Veremos como al cabo de unos segundos nuestra tarjeta TAP ya tiene conexión, de forma silenciosa.


OpenVPN sin DHCP

Al cabo de un mes de funcionar, la conexión empezó a fallar ocasionalmente, sin motivo aparente. A veces reiniciando el ordenador se arreglaba el error de conexión. Finalmente se desechó la conexión automática, volviendo a OpenVPN GUI, hasta que volvieron a aparecer fallos. Al final pareció que el problema era la velocidad de conexión entre las dos ADSL, por lo que se pasó a configurar OpenVPN sin asignación automática de direcciones IP (DHCP).

Por ello se ha confeccionado una página específica (en este tutorial) sobre cómo configurar [ OpenVPN sin DHCP ] ...


Problemas de estabilidad

A pesar de haber dejado OpenVPN sin DHCP (véase el apartado anterior), seguí teniendo problemas con la conexión. Los desarrolladores de pfSense me recomendaron migrar a la última versión parcheada de pfSense. El 25-abril-2007  migré el cortafuegos a la versión 1.2 BETA de pfSense y desde entonces funciona sin problemas.

Autor: Josep Pujadas i Jubany
© 2007. Todos los derechos reservados