oukooveu.wireguard
Wireguard Ansible Rolle
Dies ist eine einfache Rolle zur Installation von Wireguard und zur Konfiguration einer vollständigen Mesh-Verbindung (standardmäßig) zwischen allen Play-Hosts.
Die Rolle wurde von dieser Implementierung inspiriert, aber da diese nicht mehr gewartet wird und keine PRs akzeptiert werden, wurde beschlossen, sie von Grund auf neu zu schreiben.
Anforderungen
Es gibt keine speziellen Anforderungen. Es gibt keinen Standard für wireguard_vpn_ip
, diese Variable muss für jeden Host definiert werden.
Rollenvariablen
Variable | Beschreibung | Standardwert |
---|---|---|
wireguard_vpn_ip | private Adresse | N/A, muss durch Host-Variablen bereitgestellt werden |
wireguard_port | Port zum Lauschen | 51820 |
wireguard_path | Pfad zu Konfigurationsdateien | /etc/wireguard |
wireguard_public_ip | öffentliche Adresse | {{ ansible_default_ipv4.address }} |
wireguard_post_up | Post-Up-Skript | N/A |
wireguard_post_down | Post-Down-Skript | N/A |
wireguard_network | Netzwerktopologie, siehe Beispiele unten | {} |
wireguard_network_name | Schnittstellenname | wg0 |
wireguard_additional_peers | zusätzliche Peers | [] |
wireguard_mtu_enabled | MTU-Option verwalten | false |
wireguard_mtu | Wert für MTU-Option | N/A |
wireguard_fw_mark_enabled | FwMark-Option verwalten | false |
wireguard_fw_mark | Wert für FwMark-Option | {{ wireguard_port }} |
wireguard_hosts_enabled | sich selbst und Wireguard-Peers in /etc/hosts hinzufügen | false |
wireguard_hosts_domain | Domain für /etc/hosts-Einträge | wg.internal |
Die Wireguard-Option FwMark
kann nützlich sein, wenn Sie den gesamten unverschlüsselten Verkehr filtern müssen, zum Beispiel:
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
Beispiel-Playbooks
Voll-Mesh-Netzwerk
- name: Wireguard Voll-Mesh Netzwerk einrichten
hosts: cluster
roles:
- role: oukooveu.wireguard
Benutzerdefinierte Netzwerktopologie mit zusätzlichem Peer
- name: Wireguard benutzerdefiniertes Netzwerk einrichten
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: 'Kommentar'
roles:
- role: oukooveu.wireguard
In dem obigen Beispiel haben die Hosts node1
und node4
Zugriff auf alle Hosts, und die Hosts node2
und node3
haben keinen Zugriff aufeinander. Die Konfiguration sollte symmetrisch sein (wenn die Konnektivität für einen Knoten definiert ist, sollte sie auch für einen anderen Knoten definiert werden), und es gibt keine zusätzlichen Überprüfungen dafür, seien Sie vorsichtig.
Molecule-Tests
Um Tests lokal auszuführen:
python -m venv .venv
. .venv/bin/activate
pip install -r molecule/default/requirements.txt
molecule test
Um Tests für ein alternatives Image (debian:11
) auszuführen, setzen Sie die Umgebungsvariable MOLECULE_IMAGE
auf den entsprechenden Wert, zum Beispiel:
export MOLECULE_IMAGE=rockylinux:9
Um die Testumgebung zu bereinigen, führen Sie molecule destroy
aus.
Lizenz
Apache 2.0
ansible-galaxy install oukooveu.wireguard