ansibleguy.infra_openvpn
¡EN PROGRESO! ¡NO UTILIZAR EN PRODUCCIÓN!

Rol de Ansible - VPN Cliente-a-Sitio OpenVPN
ADVERTENCIA: Este rol aún está en desarrollo. ¡NO INTENTES USARLO EN PRODUCCIÓN!
Rol para desplegar configuraciones de VPN Cliente-a-Sitio OpenVPN.
Registros de Molecule: Corto, Completo
Ediciones de OpenVPN
Este rol utiliza la edición OpenSource OpenVPN Community.
¿Por qué usar la edición comunitaria?
Pros:
- Sin costos de licencia - un servidor puede escalar hasta miles de clientes sin costos significativos
- Todas las funcionalidades principales están cubiertas por la edición de código abierto
- Se puede gestionar usando Ansible
Contras:
- ¡Esta edición no tiene interfaz gráfica (web-ui)!
Si buscas una bonita interfaz web para hacer clic => consulta el Servidor de Acceso OpenVPN
Probado en:
- Debian 11
- Debian 12
Instalación
# última versión
ansible-galaxy role install git+https://github.com/ansibleguy/infra_openvpn
# desde galaxy
ansible-galaxy install ansibleguy.infra_openvpn
# o a una ruta de rol personalizada
ansible-galaxy install ansibleguy.infra_openvpn --roles-path ./roles
# instalar dependencias
ansible-galaxy install -r requirements.yml
Uso
¿Quieres una interfaz gráfica sencilla de Ansible? Consulta mi Interfaz Web de Ansible
Configuración
Define la configuración según sea necesario:
openvpn:
Es posible que desees usar 'ansible-vault' para encriptar tus contraseñas:
ansible-vault encrypt_string
Ejecución
Ejecuta el playbook:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
También hay algunas etiquetas útiles disponibles:
* *
Para depurar errores - puedes establecer la variable 'debug' en tiempo de ejecución:
# ADVERTENCIA: ¡Registrará contraseñas!
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Para permitir que los servicios OpenVPN se reinicien automáticamente (sin solicitudes interactivas):
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e auto_restart=yes
Funcionalidad
Instalación de paquetes
- Dependencias de Ansible (mínimas)
Configuración *
Configuración predeterminada: *
Opciones predeterminadas: *
Opciones predeterminadas para excluir:
Información
Información: Si quieres saber más sobre la configuración de OpenVPN-community - consulta su documentación completa
Páginas interesantes:
Información: ChromeOS utiliza el formato de Configuración de Red Abierta (ONC).
Está formateado en JSON y es bastante difícil de depurar ya que no se reciben mensajes de error útiles.
La plantilla de perfil proporcionada por este rol podría no funcionar para todos los casos extremos.
Si necesitas solucionar problemas - consulta la documentación de ONC. Pero ten en cuenta: no todas las opciones pueden funcionar en la práctica como se documentan.
Advertencia: Si una instancia de OpenVPN debe admitir conexiones a clientes ChromeOS - necesitarás establecer la opción 'openvpn.instances.[nombre].security.tls_crypt' en 'false' ya que esto no es (actualmente) compatible con la implementación de ChromeOS.
Nota: este rol actualmente solo admite sistemas basados en Debian.
Nota: La mayoría de la funcionalidad del rol se puede activar o desactivar.
Para todas las opciones disponibles - consulta la configuración predeterminada ubicada en el archivo de configuración principal¡.
Advertencia: No todas las configuraciones/variables que proporciones serán verificadas en cuanto a validez. ¡Una mala configuración podría romper el rol!
Información: Si quieres usar
openvpn.unprivileged: true
para mejorar la seguridad del sistema el binario de OpenVPN instalado debe ser compatible coniproute2
!El rol verificará si el binario es compatible y fallará si no lo es.
Opciones para obtener soporte para iproute2:
- Tendrás que usar un binario que haya sido compilado con esa opción habilitada
- Recompila OpenVPN tú mismo como se muestra en este script de ejemplo (sin el 'desinstalar')
- O configura el rol para descargar un binario recompilado de mi repositorio ansibleguy/openvpn-recompiled!
- Desinstala los paquetes/binaros existentes de OpenVPN
- Copia/enlaza el binario
openvpn
a/usr/local/bin
- Tendrás que usar un binario que haya sido compilado con esa opción habilitada
Información: Si estás usando autenticación de múltiples factores, podrías enfrentar problemas cuando algunos clientes (como ChromeOS) no admitan un segundo campo de entrada para el segundo secreto!
Podrías necesitar establecer
openvpn.server.auth.mfa_separator
a cualquier carácter inusual que te guste. (por ejemplo: <<<)Esto te permite ingresar tanto el secreto1 (contraseña) como el secreto2 (código TOTP) en el mismo campo de entrada. Así:
p4ssW0rd<<<001122
El separador predeterminado
:
siempre será admitido - incluso si estableces uno personalizado. Esto permite que ambos métodos sean compatibles.
ansible-galaxy install ansibleguy.infra_openvpn