openwisp.wireguard_openwisp
ansible-wireguard-openwisp
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 auchPort
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.
Role to install OpenWISP's Wireguard Updater
ansible-galaxy install openwisp.wireguard_openwisp