oukooveu.wireguard

Rôle Ansible WireGuard

Molecule

Ceci est un rôle simple pour installer WireGuard et configurer une connectivité en maillage complet (par défaut) entre tous les hôtes de jeu.

Le rôle s'inspire de cette implémentation, mais comme elle n'est plus maintenue et que les demandes de tirage ne sont pas acceptées, il a été décidé de la réécrire depuis le début.

Exigences

Il n'y a pas d'exigences particulières. Il n'y a pas de valeur par défaut pour wireguard_vpn_ip, cette variable doit être définie pour chaque hôte.

Variables du rôle

Variable Description Valeur par défaut
wireguard_vpn_ip adresse privée N/A, doit être fourni via les variables d'hôte
wireguard_port port d'écoute 51820
wireguard_path chemin vers les fichiers de configuration /etc/wireguard
wireguard_public_ip adresse publique {{ ansible_default_ipv4.address }}
wireguard_post_up script après mise en ligne N/A
wireguard_post_down script après mise hors ligne N/A
wireguard_network topologie du réseau, voir les exemples ci-dessous {}
wireguard_network_name nom de l'interface wg0
wireguard_additional_peers pairs supplémentaires []
wireguard_mtu_enabled gérer l'option MTU false
wireguard_mtu valeur de l'option MTU N/A
wireguard_fw_mark_enabled gérer l'option FwMark false
wireguard_fw_mark valeur de l'option FwMark {{ wireguard_port }}
wireguard_hosts_enabled ajouter soi-même et les pairs WireGuard dans /etc/hosts false
wireguard_hosts_domain domaine pour les enregistrements /etc/hosts wg.internal

L'option FwMark de WireGuard peut être utile lorsque vous avez besoin de filtrer tout le trafic non crypté, par exemple :

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

Exemples de Playbooks

Réseau en maillage complet

- name: configurer le réseau en maillage complet WireGuard
  hosts: cluster
  roles:
    - role: oukooveu.wireguard

Topologie de réseau personnalisée avec un pair supplémentaire

- name: configurer un réseau WireGuard personnalisé
  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: 'commentaire'
  roles:
    - role: oukooveu.wireguard

Dans l'exemple ci-dessus, les hôtes node1 et node4 ont accès à tous les hôtes, tandis que les hôtes node2 et node3 n'ont pas accès les uns aux autres. La configuration doit être symétrique (si la connectivité pour un nœud est définie, elle doit être définie pour l'autre nœud aussi) et il n'y a pas de vérifications supplémentaires à cet égard, soyez donc prudent.

Tests Molecule

Pour exécuter des tests localement :

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

Pour exécuter des tests pour une image non par défaut (debian:11), définissez la variable d'environnement MOLECULE_IMAGE sur une valeur appropriée, par exemple :

export MOLECULE_IMAGE=rockylinux:9

Pour nettoyer l'environnement de test, exécutez molecule destroy.

Licence

Apache 2.0

À propos du projet

wireguard ansible role

Installer
ansible-galaxy install oukooveu.wireguard
Licence
Unknown
Téléchargements
162
Propriétaire