[ Introducción ] [
Caso-Estudio
] [ Instalación ] [ Configuración base ] [
Alias ] [ NAT
] [ Reglas ] [ DNS ] [ DHCP
] [ Caudal ] [ OpenVPN ] [ Portal
]
[ OpenVPN sin DHCP
] [ spamd ]
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
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.
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.
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.
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).
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.
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 ] ...
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