oukooveu.wireguard
Rôle Ansible WireGuard
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
ansible-galaxy install oukooveu.wireguard