oukooveu.wireguard

Wireguard Ansible Rolle

Molecule

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

Über das Projekt

wireguard ansible role

Installieren
ansible-galaxy install oukooveu.wireguard
GitHub Repository
Lizenz
Unknown
Downloads
162