kravietz.wireguard_vpn

wireguard_vpn

Configure un service VPN Wireguard client-serveur et provisionner des fichiers de configuration pour les clients.

Description

Ce rôle configure un service VPN basé sur Wireguard sur une machine Linux avec les caractéristiques distinctives suivantes :

  • Toute la configuration réseau est gérée avec systemd-networkd
  • Réseau IPv4 dans le tunnel utilisant une adresse RFC 1918 et NAT
  • Réseau IPv6 dans le tunnel utilisant un sous-réseau entièrement routable et un proxy NDP
  • Support pour les clés pré-partagées Wireguard
  • Génère des fichiers .conf pour wg-quick(8)
  • Toutes les options de configuration wg-quick(8) sont prises en charge

Variables du Rôle

vpn_interface: wg1

# générer avec `wg genkey` ***protéger avec ansible-vault***
# vpn_private_key: "iP/lnL/zhicPMnAphlT6qAciKusTmR2X5utTAo7u5Ug="  # OBLIGATOIRE

# générer avec `wg pubkey` à partir de ce qui précède
# vpn_public_key: "OBGsZZxxX0jcehmFJc0L6v7FX3PMnVDFgdgpjJFU0k4="   # OBLIGATOIRE

## Port d'écoute UDP sur Internet public
# vpn_listen_port: 1194  # OBLIGATOIRE

## Adresses sur le tunnel VPN interne
# vpn_address4: "192.168.2.252/24"            # au moins une est OBLIGATOIRE      
# vpn_address6: '2a05:1111:0:3:8000::252/65'  # au moins une est OBLIGATOIRE

## requis pour configurer les entrées NDP pour les clients VPN IPv6
# vpn_ndp_config: /etc/systemd/network/eth0.network  # OPTIONNEL

## Résolveurs DNS qui seront configurés pour les clients pour utilisation avec le VPN
# vpn_dns_resolvers: ["9.9.9.9", "2620:fe::fe"]  # OPTIONNEL tableau

# active la génération de fichiers .conf pour l'utilitaire wg-quick des clients
# vpn_clients_dir: /root/wireguard  # OPTIONNEL

# vpn_clients:                                # tableau OPTIONNEL
#   - name: client1                           # OBLIGATOIRE
#     address4: 192.168.2.110/32              # au moins une des adresses4, adresse6 est OBLIGATOIRE
#     address6: "2a05:1111:0:3:8000::110/80"  # au moins une des adresses4, adresse6 est OBLIGATOIRE
#     # seulement nécessaire si les fichiers .config générés doivent inclure la clé privée
#     # sinon, ils contiendront un espace réservé
#     # générer avec `wg genkey` ***protéger avec ansible-vault***
#     # private_key: "+Noalz2HL9+nYFQpplZF2dYMmc7+MaXGuxMgc/QBbXU="  # OPTIONNEL
#     # générer avec `wg pubkey` à partir de ce qui précède
#     public_key: "RfDKFurwFo/ytXd9Ko5oEy7I7H4hjNBiT1bc1t+V4Wc="              # OBLIGATOIRE
#     # route de tunnel à définir du côté client
#     # allowed_ips: ["192.168.2.1/32"]         # OPTIONNEL
#     # générer avec `wg genpsk` ***protéger avec ansible-vault***
#     # psk: "151ODHNbvmiK/ox+2ndnZbVcfrIMRJjFjHXlb7o3ZeI="  # OPTIONNEL
#     # mtu, table, preup, postdown - selon wg-quick(8)

Avertissement : utilisez toujours ansible-vault pour protéger les clés privées et les secrets pré-partagés dans vos fichiers de variables.

Exemple 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="

Licence

GPLv3

Informations sur l'Auteur

Paweł Krawczyk https://krvtz.net/

À propos du projet

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

Installer
ansible-galaxy install kravietz.wireguard_vpn
Licence
Unknown
Téléchargements
6.8k
Propriétaire
Information security, DevOps and DevSecOps professional from Poland living in the UK