gavika.openvpn
gavika.openvpn
Instala y configura OpenVPN. Construye y administra tu propio servidor OpenVPN.
https://www.techchorus.net/blog/run-your-own-openvpn-server/
Además, echa un vistazo al directorio examples
.
Requisitos
El rol debe usarse junto con gavika.easy_rsa
.
Variables del rol
Variable | Valor por defecto | Descripción | ¿Requerido? |
---|---|---|---|
easy_rsa_local_pool_directory | /tmp/ca_openvpn_pool | El directorio para usar como ubicación temporal para almacenar solicitudes de certificados, certificados, etc. | Sí |
openvpn_client_users | [] | Lista de nombres de usuario de clientes OpenVPN. Se recomienda usar solo caracteres alfanuméricos. | No |
openvpn_port | 1194 | El puerto en el que se ejecuta el servidor OpenVPN | Sí |
openvpn_protocol | Por defecto: udp Opciones: tcp o udp | El protocolo de red a usar | Sí |
openvpn_server_ip_address | La dirección IP del servidor OpenVPN | El valor utilizado en los certificados de cliente generados | Sí |
openvpn_generated_configurations_local_pool | false. Booleano. | Si se deben copiar las configuraciones de cliente generadas al directorio local (la máquina controladora en la que se ejecuta el ansible-playbook). | Sí |
openvpn_route_all_traffic | True. Booleano. | Enrutar todo el tráfico de internet a través del servidor OpenVPN | Sí |
openvpn_use_opendns_public_dns | True. Booleano. | Empujar servidores DNS de OpenDNS a los clientes | Sí |
openvpn_additional_configs | [] | Configuración adicional del servidor OpenVPN. Lista de diccionarios. Cada elemento de la lista es un par de clave, valor. Ejemplo openvpn_additional_configs: - push: "topology subnet" - push: "route 192.168.4.5 255.255.255.255" |
Sí |
openvpn_default_firewalld_zone | public | El nombre de la zona a usar en la configuración de Firewalld. Solo relevante para EL | Sí |
Para construir un servidor CA y un servidor OpenVPN utilizando gavika.easy_rsa
y gavika.openvpn
, debes ejecutar los roles varias veces dependiendo de tus necesidades. Eres responsable de ejecutar los roles el número de veces requerido y en el orden necesario. Se proporcionan ejemplos en la documentación. Normalmente, deberás ejecutar open-vpn-playbook.yml
dos veces y easy-rsa-playbook.yml
una vez.
Flujo de ejecución del playbook:
Diagrama de flujo en tamaño completo
Aquí tienes un ejemplo de cómo ejecutar los playbooks:
# openvpn: configurar directorios de pool locales, instalar openvpn, crear solicitud de servidor,
# crear solicitudes de cliente
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
# easy_rsa: construir el servidor CA, importar y firmar solicitudes, obtener certificados CA
ansible-playbook -i my-inventory.yml easy-rsa-playbook.yml
# openvpn: usar solicitudes firmadas, configurar openvpn, generar configuraciones de cliente
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
Dependencias
El rol gavika.openvpn
depende de gavika.easy_rsa
.
Las siguientes colecciones son requeridas:
community.aws
Se requiere la biblioteca de Python boto3
.
El rol gavika.openvpn
debe usarse junto con gavika.easy_rsa
.
Ejemplo de playbook para configurar el servidor CA: easy-rsa-playbook.yml
---
- hosts: ca_server
become: true
vars:
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "Bangalore"
easy_rsa_req_org: "Gavika"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "Gavika"
easy_rsa_local_pool_directory: /tmp/ca_openvpn_pool # Sin barra final /
easy_rsa_server_request_to_import: "server.req"
easy_rsa_ca_server_mode: true
roles:
- role: gavika.easy_rsa
Ejemplo de playbook para instalar el servidor OpenVPN: openvpn-playbook.yml
---
- hosts: openvpn_server
become: true
vars:
openvpn_client_users:
- janedoe
- johndoe
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "Bangalore"
easy_rsa_req_org: "Mi Organización"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "Mi Unidad Organizativa"
roles:
- role: gavika.easy_rsa
- role: gavika.openvpn
Ejemplo de inventario: my-inventory
:
all:
hosts:
placeholder
children:
ca_server:
hosts:
dev-ca-01.example.com:
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.5
easy_rsa_ca_server_mode: true
ansible_python_interpreter: /usr/bin/python3
openvpn_server:
hosts:
dev-vpn-01.example.com:
ansible_python_interpreter: /usr/bin/python3
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.6
openvpn_server_ip_address: 192.168.3.6
Licencia
Licencia Apache, Versión 2.0
Información del autor
Sudheera Satyanarayana
Gavika: https://www.gavika.com
Twitter: https://www.twitter.com/bngsudheer
Github: https://github.com/bngsudheer
Role to install and configure OpenVPN server and generate client configurations
ansible-galaxy install gavika.openvpn