kravietz.wireguard_vpn

wireguard_vpn

Configura un servicio de VPN Wireguard de cliente a servidor y proporciona archivos de configuración para el cliente.

Descripción

El rol configura un servicio VPN basado en Wireguard en una máquina Linux con las siguientes características distintivas:

  • Toda la configuración de red se gestiona usando systemd-networkd
  • Conexión IPv4 en el túnel usando direcciones RFC 1918 y NAT
  • Conexión IPv6 en el túnel usando subred completamente enrutada y proxy NDP
  • Soporte para claves compartidas previamente en Wireguard
  • Genera archivos .conf para wg-quick(8)
  • Todas las opciones de configuración de wg-quick(8) son compatibles

Variables del Rol

vpn_interface: wg1

# generar con `wg genkey` ***proteger con ansible-vault***
# vpn_private_key: "iP/lnL/zhicPMnAphlT6qAciKusTmR2X5utTAo7u5Ug="  # OBLIGATORIO

# generar con `wg pubkey` a partir de lo anterior
# vpn_public_key: "OBGsZZxxX0jcehmFJc0L6v7FX3PMnVDFgdgpjJFU0k4="   # OBLIGATORIO

## Puerto UDP de escucha en Internet público
# vpn_listen_port: 1194  # OBLIGATORIO

## Direcciones en el túnel VPN interno
# vpn_address4: "192.168.2.252/24"            # al menos una es OBLIGATORIA      
# vpn_address6: '2a05:1111:0:3:8000::252/65'  # al menos una es OBLIGATORIA

## necesario para configurar entradas NDP para clientes VPN IPv6
# vpn_ndp_config: /etc/systemd/network/eth0.network  # OPCIONAL

## Resolutores DNS que se establecerán en los clientes para uso con VPN
# vpn_dns_resolvers: ["9.9.9.9", "2620:fe::fe"]  # OPCIONAL arreglo

# habilita la generación de archivos .conf para la utilidad wg-quick de los clientes
# vpn_clients_dir: /root/wireguard  # OPCIONAL

# vpn_clients:                                # OPCIONAL arreglo
#   - name: client1                           # OBLIGATORIO
#     address4: 192.168.2.110/32              # al menos una de address4, address6 es OBLIGATORIA
#     address6: "2a05:1111:0:3:8000::110/80"  # al menos una de address4, address6 es OBLIGATORIA
#     # solo necesario si los archivos .config generados deben incluir la clave privada
#     # de lo contrario, contendrán un marcador de posición
#     # generar con `wg genkey` ***proteger con ansible-vault***
#     # private_key: "+Noalz2HL9+nYFQpplZF2dYMmc7+MaXGuxMgc/QBbXU="  # OPCIONAL
#     # generar con `wg pubkey` a partir de lo anterior
#     public_key: "RfDKFurwFo/ytXd9Ko5oEy7I7H4hjNBiT1bc1t+V4Wc="              # OBLIGATORIO
#     # ruta del túnel a establecer en el lado del cliente
#     # allowed_ips: ["192.168.2.1/32"]         # OPCIONAL
#     # generar con `wg genpsk` ***proteger con ansible-vault***
#     # psk: "151ODHNbvmiK/ox+2ndnZbVcfrIMRJjFjHXlb7o3ZeI="  # OPCIONAL
#     # mtu, tabla, preup, postdown - según wg-quick(8)

Advertencia: siempre utiliza ansible-vault para proteger las claves privadas y secretos compartidos previamente en tus archivos de variables.

Ejemplo de Playbook

- hosts: vpn
  roles:
    - role: kravietz.wireguard_vpn
      vpn_private_key: "wIfnNpua6YlD4XzVGUvOCVknCo1LzAF6iGkp7Tho43o="
      vpn_public_key: "+RHdC7oc8O/dojCOMf7CtYBZc5pA2DZPiE4dNRHHhlw="
      vpn_listen_port: 1194
      vpn_address4: "192.168.1.1/24"
      vpn_address6: '2a05:1111:0:3:8000::1/65'
      vpn_clients_dir: /root/wireguard
      vpn_clients:
        - name: client1
          address4: 192.168.1.100/32
          address6: "2a05:1111:0:3:8000::100/128"
          private_key: "iJgcqx21xGETtzFIIdKfD/LvMqswJ2LWUiFPKUBLenw="
          public_key: "T4QbCHfGKLYFdmFeXVfDHP5AYpQ2AZapHIw+ZiCDIHs="

Licencia

GPLv3

Información del Autor

Paweł Krawczyk https://krvtz.net/

Acerca del proyecto

Configure a IPv4/IPv6 Wireguard-based VPN service using `systemd-networkd` and generate client config files.

Instalar
ansible-galaxy install kravietz.wireguard_vpn
Licencia
Unknown
Descargas
6.8k
Propietario
Information security, DevOps and DevSecOps professional from Poland living in the UK