oukooveu.wireguard

rol de ansible para wireguard

Molecule

Este es un rol simple para instalar wireguard y configurar conectividad en malla completa (por defecto) entre todos los hosts de la tarea.

El rol se inspiró en esta implementación, pero dado que se encuentra en un estado no mantenido y no se aceptan PRs, se decidió reescribirlo desde cero.

Requisitos

No hay requisitos especiales. No hay un valor predeterminado para wireguard_vpn_ip, esta variable debe definirse para cada host.

Variables del Rol

Variable Descripción Valor predeterminado
wireguard_vpn_ip dirección privada N/A, debe proporcionarse a través de variables del host
wireguard_port puerto para escuchar 51820
wireguard_path ruta a los archivos de configuración /etc/wireguard
wireguard_public_ip dirección pública {{ ansible_default_ipv4.address }}
wireguard_post_up script post up N/A
wireguard_post_down script post down N/A
wireguard_network topología de red, ver ejemplos abajo {}
wireguard_network_name nombre de la interfaz wg0
wireguard_additional_peers pares adicionales []
wireguard_mtu_enabled gestionar la opción MTU false
wireguard_mtu valor de la opción MTU N/A
wireguard_fw_mark_enabled gestionar la opción FwMark false
wireguard_fw_mark valor de la opción FwMark {{ wireguard_port }}
wireguard_hosts_enabled agregar a sí mismo y a los pares de wireguard en /etc/hosts false
wireguard_hosts_domain dominio para los registros de /etc/hosts wg.internal

La opción FwMark de wireguard puede ser útil cuando necesitas filtrar todo el tráfico no encriptado, por ejemplo:

PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

Ejemplos de Playbooks

red en malla completa

- name: configurar red en malla completa con wireguard
  hosts: cluster
  roles:
    - role: oukooveu.wireguard

topología de red personalizada con un par adicional

- name: configurar red personalizada con wireguard
  hosts: cluster
  vars:
    wireguard_network:
        node1:
            - node2
            - node3
            - node4
        node2:
            - node1
            - node4
        node3:
            - node1
            - node4
        node4:
            - node1
            - node2
            - node3
    wireguard_additional_peers:
        - ip: 192.168.100.1
          key: s3cr3t
          endpoint: 10.0.100.1
          keepalive: 15
          comment: 'comentario'
  roles:
    - role: oukooveu.wireguard

En el ejemplo anterior, los hosts node1 y node4 tienen acceso a todos los hosts y los hosts node2 y node3 no tienen acceso entre sí. La configuración debe ser simétrica (si la conectividad para un nodo está definida, debe definirse para el otro nodo también) y no hay comprobaciones adicionales para esto, ten cuidado.

Pruebas de Molecule

Para ejecutar pruebas localmente:

python -m venv .venv
. .venv/bin/activate
pip install -r molecule/default/requirements.txt
molecule test

Para ejecutar pruebas para una imagen no predeterminada (debian:11), establece la variable de entorno MOLECULE_IMAGE a un valor apropiado, por ejemplo:

export MOLECULE_IMAGE=rockylinux:9

Para limpiar el entorno de prueba ejecuta molecule destroy.

Licencia

Apache 2.0

Acerca del proyecto

wireguard ansible role

Instalar
ansible-galaxy install oukooveu.wireguard
Licencia
Unknown
Descargas
162
Propietario