openwisp.wireguard_openwisp

ansible-wireguard-openwisp

Buildstatus

Gitter

Ansible-Rolle, die WireGuard und Verwaltungs-Skripte für OpenWISP installiert. Nach der Installation und korrekten Konfiguration mit OpenWISP, verwaltet OpenWISP die WireGuard-Peers automatisch, ohne dass manuelle Eingriffe erforderlich sind.

Diese Rolle kann auch Skripte konfigurieren, die es OpenWISP ermöglichen, VXLAN über WireGuard Tunnel zu verwalten.

Getestet auf Debian und Ubuntu.

HINWEIS: Es wird dringend empfohlen, dieses Verfahren auf sauberen virtuellen Maschinen oder Linux-Containern anzuwenden.

Minimale unterstützte Ansible-Version: 2.10.

Installations- und Nutzungshinweise

Zur Vereinfachung ist es am einfachsten, diese Rolle auf Ihrem lokalen Rechner über ansible-galaxy zu installieren:

ansible-galaxy install openwisp.wireguard_openwisp

Verweisen Sie auf das Beispiel-Playbook im Abschnitt "Vollständiges Beispiel-Playbook mit SSL-Zertifikat", um schnell mit dieser Rolle zu beginnen.

HINWEIS: Diese Rolle konfiguriert keine Paketweiterleitung und fügt keine statischen oder dynamischen Routen auf Ihrem Server hinzu.

Da die genaue Art und Weise, wie Pakete geroutet werden können, je nach verschiedenen Faktoren und Anforderungen stark variieren kann, obliegt es dem Benutzer, dies nach seinen Bedürfnissen zu konfigurieren. Wir könnten in Zukunft eine Standard-Routing/Forwarding-Konfiguration hinzufügen, wenn wir mehr Nutzungsdaten haben; wenn Sie daran interessiert sind, lassen Sie es uns bitte wissen.

Vollständiges Beispiel-Playbook mit SSL-Zertifikat

Standardmäßig erstellt das Playbook ein selbstsigniertes (nicht vertrauenswürdiges) SSL-Zertifikat für den VPN-Endpunkt. Wenn Sie das nicht vertrauenswürdige Zertifikat verwenden, müssen Sie auch die SSL-Überprüfung auf OpenWISP deaktivieren, obwohl wir von dieser Art der Einrichtung in einer Produktionsumgebung abraten. Sie können Ihr eigenes vertrauenswürdiges Zertifikat installieren, indem Sie die Schritte in diesem Abschnitt befolgen.

Zuerst müssen Sie eine gültige Domain für Ihr WireGuard-VPN einrichten. Ihre Inventar-Datei (hosts) sollte wie folgt aussehen:

[openwisp2_wireguard]
wireguard.ihredomain.com

Sie müssen einen DNS-Eintrag für wireguard.ihredomain.com hinzufügen können; Sie können keine IP-Adresse anstelle von wireguard.ihredomain.com verwenden.

Sobald Ihre Domain eingerichtet und der DNS-Eintrag propagiert ist, installieren Sie die Ansible-Rolle geerlingguy.certbot:

ansible-galaxy install geerlingguy.certbot

Erstellen Sie dann Ihre playbook.yml, damit sie ähnlich wie im folgenden Beispiel aussieht:

- hosts: openwisp2_wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - geerlingguy.certbot
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.ihredomain.com"
    openwisp2_wireguard_vpn_uuid: "fügen-sie-hier-vpn-uuid-ein"
    openwisp2_wireguard_vpn_key: "fügen-sie-hier-vpn-key-ein"
    openwisp2_wireguard_flask_key: "fügen-sie-hier-endpoint-auth-token-ein"

    # SSL-Zertifikate
    openwisp2_wireguard_ssl_cert: "/etc/letsencrypt/live/{{ ansible_fqdn }}/fullchain.pem"
    openwisp2_wireguard_ssl_key: "/etc/letsencrypt/live/{{ ansible_fqdn }}/privkey.pem"

    # certbot-Konfiguration
    certbot_auto_renew_user: "privilegierter-benutzer-zum-erneuern-der-zertifikate"
    certbot_auto_renew_minute: "20"
    certbot_auto_renew_hour: "5"
    certbot_create_if_missing: true
    certbot_create_standalone_stop_services: []
    certbot_certs:
      - email: "fügen-sie-hier-ihre-email-ein"
        domains:
          - wireguard.ihredomain.com

Lesen Sie die Dokumentation von geerlingguy.certbot, um mehr über die Konfiguration der certbot-Rolle zu erfahren.

Um mehr über alle Ansible-Variablen zu erfahren, die von openwisp.wireguard_openwisp bereitgestellt werden, lesen Sie den Abschnitt "Rollenvariablen" dieser Dokumentation.

Einrichten mehrerer WireGuard-Schnittstellen

Mit dieser Rolle können Sie mehrere WireGuard-Schnittstellen auf demselben Rechner einrichten, die unabhängig von OpenWISP verwaltet werden. Sie müssen sicherstellen, dass die folgenden Rollenvariablen für jedes Playbook eindeutig sind:

  • openwisp2_wireguard_path
  • openwisp2_wireguard_flask_port

Im Folgenden finden Sie ein Beispiel-Playbook, das zwei Plays für die Einrichtung mehrerer WireGuard-Schnittstellen enthält.

- name: Ersteinrichtung der WireGuard-Schnittstelle
  hosts:
    - wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.ihredomain.com"
    openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-1"
    openwisp2_wireguard_vpn_uuid: "fügen-sie-hier-vpn1-uuid-ein"
    openwisp2_wireguard_vpn_key: "fügen-sie-hier-vpn1-key-ein"
    openwisp2_wireguard_flask_key: "fügen-sie-hier-vpn1-endpoint-auth-token-ein"
    openwisp2_wireguard_flask_port: 8081

- name: Einrichten der zweiten WireGuard-Schnittstelle
  hosts:
    - wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.ihredomain.com"
    openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-2"
    openwisp2_wireguard_vpn_uuid: "fügen-sie-hier-vpn-2-uuid-ein"
    openwisp2_wireguard_vpn_key: "fügen-sie-hier-vpn-2-key-ein"
    openwisp2_wireguard_flask_key: "fügen-sie-hier-vpn-2-endpoint-auth-token-ein"
    openwisp2_wireguard_flask_port: 8082

Hinweise

  • Wenn Sie VPN-Serverobjekte in OpenWISP erstellen, stellen Sie sicher, dass sowohl Schnittstellenname als auch Port für jedes VPN einzigartig sind. Andernfalls funktionieren die Aktualisierungs-Skripte aufgrund von Konflikten nicht richtig.

Rollenvariablen

Diese Rolle hat viele Variable Werte, die geändert werden können, um Ihre Anforderungen am besten zu erfüllen.

Im Folgenden sind alle Variablen aufgeführt, die Sie anpassen können (Sie möchten möglicherweise auch die Standardwerte dieser Variablen ansehen).

- hosts: openwisp2_wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    # URL der OpenWISP-Instanz. Sie können dies weglassen (löschen), wenn WireGuard
    # auf demselben Host installiert wird, auf dem OpenWISP läuft.
    # Wenn Sie zwei separate Hosts verwenden (einen für OpenWISP und einen für WireGuard),
    # was eine gute Idee ist, müssen Sie hier die URL Ihrer
    # OpenWISP-Instanz angeben (OpenWISP Controller >= 1.0.0)
    openwisp2_wireguard_controller_url: "https://openwisp.ihredomain.com"
    # Verzeichnis, in dem die Aktualisierungsskripte installiert werden sollen
    openwisp2_wireguard_path: "/opt/wireguard-openwisp"
    # Ermöglicht das Herunterladen von VPN-Konfigurationen mit "unsicheren" SSL-Verbindungen.
    # Es wird empfohlen, dies auf false zu belassen.
    openwisp2_wireguard_curl_insecure: false
    # UUID des VPN, die nach der Erstellung des VPN-Serverobjekts in OpenWISP generiert wurde
    openwisp2_wireguard_vpn_uuid: "fügen-sie-hier-vpn-uuid-ein"
    # Schlüssel des VPN, der nach der Erstellung des VPN-Serverobjekts in OpenWISP generiert wurde
    openwisp2_wireguard_vpn_key: "fügen-sie-hier-vpn-key-ein"
    # Flask-Endpunkt, der zur Auslösung von Aktualisierungen verwendet wird
    openwisp2_wireguard_flask_endpoint: "/trigger-update"
    # Autorisierungsschlüssel für den Aktualisierungspunkt
    openwisp2_wireguard_flask_key: "fügen-sie-hier-endpoint-auth-token-ein"
    # Port, auf dem der Flask-Endpunkt ausgeführt wird
    openwisp2_wireguard_flask_port: 8081
    # Host, auf dem der Flask-Endpunkt ausgeführt wird
    openwisp2_wireguard_flask_host: 0.0.0.0
    # Legt das Protokollniveau für das Flask-Logging fest.
    # Erlaubte Werte sind "INFO", "WARNING" und "ERROR"
    openwisp2_wireguard_logging_level: "WARNING"
    # Befehl, der von Supervisor verwendet wird, um uwsgi auszuführen
    openwisp2_wireguard_uwsgi_command: "{{ openwisp2_wireguard_path }}/env/bin/uwsgi uwsgi.ini"

    # Geben Sie den Pfad zu einem gültigen SSL-Zertifikat und Schlüssel an
    # (ein selbstsigniertes SSL-Zertifikat wird erzeugt, wenn es weggelassen wird)
    openwisp2_wireguard_ssl_cert: "/opt/wireguard-openwisp/ssl/server.crt"
    openwisp2_wireguard_ssl_key: "/opt/wireguard-openwisp/ssl/server.key"
    # Passen Sie die Informationen zum selbstsignierten SSL-Zertifikat bei Bedarf an
    openwisp2_wireguard_ssl_country: "DE"
    openwisp2_wireguard_ssl_state: "Bayern"
    openwisp2_wireguard_ssl_locality: "München"
    openwisp2_wireguard_ssl_organization: "IT-Abteilung"

    # Standardmäßig wird python3 verwendet. Möglicherweise müssen Sie dies auf python2.7 für ältere Systeme setzen
    openwisp2_wireguard_python: python2.7
    # Befehl für das virtualenv Ihrer Remote-Distribution, normalerweise automatisch festgelegt
    openwisp2_wireguard_virtualenv_command: "virtualenv"

    # Legt die ipv4.method der VXLAN-Verbindung fest, standardmäßig "link-local"
    openwisp2_wireguard_vxlan_ipv4_method: disabled
    openwisp2_wireguard_vxlan_ipv6_method: disabled

Fehlerbehebung

So lösen Sie das Konfigurationsproblem manuell, falls erforderlich:

sudo -u openwisp /opt/wireguard-openwisp/update_wireguard.sh check_config

Die Protokolle der Anwendung, die für die Aktualisierung der WireGuard-Konfiguration verantwortlich ist und die von dem OpenWISP-Server heruntergeladen wurde, finden Sie unter /opt/wireguard-openwisp/vpn_updater.log.

Mitwirken

Bitte lesen Sie die Beitragsrichtlinien von OpenWISP.

So führen Sie Tests aus

Wenn Sie zu ansible-wireguard-openwisp beitragen möchten, sollten Sie in Ihrer Entwicklungsumgebung Tests durchführen, um sicherzustellen, dass Ihre Änderungen nichts brechen.

Führen Sie dazu die folgenden Schritte aus:

Schritt 1: Klonen Sie ansible-wireguard-openwisp

Klonen Sie das Repository mit:

git clone https://github.com/<ihre_gabel>/ansible-wireguard-openwisp.git

Schritt 2: Installieren Sie Docker

Wenn Sie Docker noch nicht installiert haben, müssen Sie es installieren (Beispiel für Debian/Ubuntu-Systeme):

sudo apt-get install docker.io

Schritt 3: Installieren Sie Molecule und Abhängigkeiten

pip install molecule[docker,ansible] yamllint ansible-lint docker

Schritt 4: Laden Sie Docker-Images herunter

docker pull geerlingguy/docker-ubuntu2204-ansible:latest
docker pull geerlingguy/docker-ubuntu2004-ansible:latest
docker pull geerlingguy/docker-debian11-ansible:latest

Schritt 5: Führen Sie den Molecule-Test aus

molecule test -s local

Wenn Sie keine Fehlermeldungen erhalten, bedeutet dies, dass die Tests erfolgreich ohne Fehler ausgeführt wurden.

Tipp: Verwenden Sie molecule test -s local --destroy=never, um nachfolgende Testläufe zu beschleunigen.

Lizenz

Siehe Lizenz.

Unterstützung

Siehe Support-Kanäle von OpenWISP.

Über das Projekt

Role to install OpenWISP's Wireguard Updater

Installieren
ansible-galaxy install openwisp.wireguard_openwisp
Lizenz
bsd-3-clause
Downloads
505
Besitzer
Modular and Programmable Open Source Network Management System for Linux OpenWrt.