Algunas notas sobre OpenVPN en pfSense para conexiones Roadwarrior

Con la pandemia preparé mi servidor pfSense para aceptar conexiones OpenVPN mediante conexiones Roadwarrior para trabajo en casa.

Afortunadamente no se ofreció tanto, pero más vale estar preparado.

Ahora en este artículo no vas a encontrar las instrucciones para la configuración de OpenVPN, mi lector dirá – ¿O sea como? , si me explico.

En su lugar les voy a mostrar este video del maestro Pedro Moreno que explica a detalle y paso a paso la configuración de OpenVPN.

Ese fue el tutorial que yo seguí para la configuración. Y funcionó perfectamente durante mucho tiempo … hasta que dejó de hacerlo 🙁

OpenVPN dejó de funcionar

Creo que fue a partir de la actualización de pfSense a la versión 2.5 en la que la VPN dejó de funcionar.

Simplemente el servidor rechazaba las conexiones, no había manera de lograr una conexión con una configuración que sin moverle funcionó perfectamente por más de un año.

Investigué en algunos foros sin mucho resultado. Intenté validar algunas hipótesis sin mucho éxito.

Me estaba quedando sin ideas, así que decidí probar algo un poco arriesgado.

Control Z

Deshacer el tutorial, para volverlo a hacer paso a paso.

Primero y antes que nada hay que hacer un respaldo de la configuración DiagnosticsBackup & Restore (Yo lo tengo en inglés porque la traducción en español para mí es algo confusa).

Entonces con mucho cuidado, hay que empezar a eliminar las Reglas del firewall , los alias, el redireccionamiento de puertos (los pasos del 5 al 10 del video).

La creación de usuarios y los certificados no fue necesario rehacerlo (pasos 3 y 4) los dejé tal y como estaban.

Cuanto logres este punto, te recomiendo que hagas otro respaldo, una especie de checkpoint por si necesitas regresar a este punto.

Ahora si, a repetir los pasos a partir del Wizard poniendo atención a todos los detalles.

Supongo que si usted sigue este tutorial por primera vez funcionará bien, pero tenga en consideración lo que sigue.

Cambiar la aplicación de Android

Bueno, ahora todo debería de funciona ¿cierto? después de todo para eso se deshizo y rehízo el tutorial ¡PUEEES NO ES CIERTO! ahhhhhhh

Por alguna razón la aplicación para android recomendada en el tutorial tampoco funcionó y no lograba conectarse.

Un detalle por demás interesante ya que se trata de aplicación OpenVPN “oficial” y que antes de la actualización que mencioné en un principio funcionaba perfectamente.

En la misma página de OpenVPN de pfSense, en la opción Client Export hacen la recomendación de una aplicación diferente para Android que se llama OpenVPN for Android de Arne Schwabe con una interfaz de usuario más espartana, con una multitud de opciones de configuración pero que funciona muy bien.

Esta es la buena.

Conectarse a OpenVPN desde Linux

Es curioso, el tutorial en video muestra como conectarse desde Android, Windows pero no desde Linux.

Al principio intenté con el Network Manager (networkmanager-openvpn) que viene integrado en mi instalación de Manjaro ¿pero que creen? no funciona. Probé ajustando un montón de parámetros pero no … no se conecta ¿Qué raro no?

No, esto tampoco funciona.

Al final lo más simple es lo mejor. Instalé el paquete openvpn disponible en mi instalación de Manjaro.

Descargué la configuración en Client Export que dice Bundled Configuration Archive.

Descomprimí los archivos en una carpeta local. Son 3 archivos, uno con extensión .ovpn, otro con .key y el último .p12.

Abrí una terminal en esa carpeta y teclee lo siguiente:

sudo openvpn --config archivo.ovpn 

Me pregunta por mi nombre de usuario en la VPN y su contraseña y si todo sale bien, estaré conectado a mi servidor y tendré acceso a los recursos de esa red como si estuviera localmente.

Se ve feo, pero funciona muy bien 🙂

Sólo tengo que minimizar la terminal, Si quiero termina la conexión con presionar Ctrl + C se cierra.

Si es un asunto frecuente, puedo hacer un alias para simplificar las cosas.

Options error: Unrecognized option or missing or extra parameter(s) ncp-disable

Esta es una actualización a este artículo (agosto 2021) porque nuevamente tuve problemas para establecer una conexión al servidor OpenVPN.

Intenté conectarme con mi teléfono celular al servidor OpenVPN pero me arrojó un mensaje de error. La parte interesante es esta:

Options error: Unrecognized option or missing or extra parameter(s) in /data/user/0/de.blinkt.openvpn/cache/android.conf:142: ncp-disable (2.5_master)
Use --help for more information.
Process exited with exit value 1

Afortunadamente este error es mucho más sencillo de solucionar. El mismo mensaje de error da la pista sobre la opción ncp-disable que fue eliminada en las versiones más recientes de OpenVPN.

Descargué la configuración en Client Export el archivo Inline Configurations – Android.

Lo abrí con un editor de textos y ahí estaba la opción problemática.

¡Adiós ncp-disable!

La solución es muy simple. Eliminé esa línea, guardé el archivo y lo envíe a mi celular para dar de alta el nuevo perfil en la aplicación.

Hecho esto pude conectarme sin problemas al servidor OpenVPN.

¿Qué les pareció este artículo? ¿Usan una VPN frecuentemente?

Cuidense mucho, que el COVID esta juerte oiga.

pfSense, recuperándome de una falla en el disco duro

La semana pasada tuve un problema serio con mi instalación de pfSense. Los problemas empezaron de una forma muy sutil, incluso tenía Internet y eso era lo más desconcertante.

Al principio algunos usuarios me reportaban que no podía entrar a algunos sitios, pero otros si funcionaban. Otros me reportaban que sus celulares no se podían conectar a la red WiFi y eso estaba más raro todavía.

El colmo fue que para cuando quise entrar a la página de mi pfSense no lo pemitió !!!! okeeeey, quise entrar por SSH y tampoco. En ese momento se predieron todos los focos rojos.

Reinicié el servidor y funcionó bien por un tiempo, mismo que invertí para averiguar las causas del mal funcionamiento.

Disco duro agonizante

Tuve que trasladarme físicamente a la ubicación del servidor con un monitor y un teclado. Solamente al conectar la pantalla vi una imagen nada halagadora.

Mensajes de error de lectura en el disco duro.

Durante la lucidez que le dió el reinicio del equipo logré conectarme a la página web y hacer una prueba SMART avisándome de una falla inminente en menos de 24 horas OKEEEEEY, ahora si ya estoy preocupado.

¡Alerta roja! ¡Fallo inminente!

Aproveché para hacer un respaldo de la configuración que es producto de 3 años de pequeños ajustes que francamente no creo recordar.

Mientras tanto el internet seguía funcionando, claro que con el tiempo el servicio se degradaba cada vez más. Desactivé squid para evitar accesos al disco duro y ganar algo de tiempo. Es increíble el tiempo que logró funcionar solamente con lo que cargó en memoria.

Conseguí un disco duro de 120 GB, más que suficiente para los requerimientos de pfSense. Lo bueno de guardar todo es que este disco duro no sería útil para las necesidades de un usuario, pero para estos propósitos es excelente.

Ahora lo que necesitaba es un plan de acción.

Plan A. Clonar el disco duro

Me pareció que lo más sencillo y rápido era clonar el disco duro con Clonezilla. Ya lo había usado en otras ocasiones con excelentes resultados.

Para hacer todo más rápido intenté una copia de disco a disco pero no fue lo que esperaba. Tal parece que el sistema de archivos ZFS no esta soportado y en ese caso se hace un vaciado usando dd que ralentizó todo el proceso. En una estimación decía que tardaría más de 11 horas en clonar el disco y eso era inaceptable.

Plan B. Reinstalar y subir el respaldo

Como el plan A no funcionó como lo esperaba no me quedó más que hacer una instalación desde cero y subir el respaldo que había descargado anteriormente.

La instalación fue rápidisima y sin problemas. Inmediatamente entré a la página de administración (por cierto, las credenciales por default son: usuario: admin contraseña: pfsense ) y subir el respaldo.

¡ADVERTENCIA! Antes de subir el respaldo asegúrese de tener internet en el equipo.

Después de subir el respaldo me apareció un mensaje en el que me decía que comenzaría la descarga de los paquetes adicionales en segundo plano y que esperara un par de horas a que terminara el proceso.

A esperar.

Lamentablemente no hay un indicador de progreso. La única pista de que estaba trabajando fue el incesante parpadeo de las luces led de las tarjetas de red y los switches.

Pasaron un poco más de dos horas y nuevamente tuve un problema con el internet, el parpadeo de las luces led disminuyeron notablemente, era tiempo de reiniciar.

¡Habemus pfLazarus!

Al reiniciar mi servidor había vuelto a la vida. Todas las configuraciones, incluyendo la de los paquetes adicionales estaban como las había dejado.

Aunque no todo era idéntico. Al conectarme por SSH me lanzó la advertencia de que las claves habían cambiado, algo que es perfectamente normal.

También cambió el Device key en la opción de Auto Configuration Backup para que lo anoten nuevamente y lo tengan en cuenta. Esta opción te puede salvar la vida si no puedes descargar un respaldo.

¿Qué ha cambiado?

Afortunadamente hago copias de respaldo semanales de la configuración de pfSense, aparte tengo activada la opción de respaldo automático, en cierto modo, estaba protegido de un fallo catastrófico.

Pero para evitarme otra sorpresa como esta, puse el widget SMART Status en un lugar más visible del Dashboard.

Ahorita mismo estoy habilitando las notificaciones por correo electrónico que estan ocultas en el menú System – Advanced – Notifications. Aunque no se si me prevengan de un fallo en el disco duro.

El disco duro que puse es un gallito que espero que pase sus últimos años funcionando sin parar hasta que colapse, sólo que esta vez estaré mejor preparado.

¡Hasta la próxima!