openwisp.wireguard_openwisp

ansible-wireguard-openwisp

Status budowy

Gitter

Rola Ansible, która instaluje WireGuard oraz skrypty zarządzające dla OpenWISP. Po prawidłowym zainstalowaniu i skonfigurowaniu z OpenWISP, węzły WireGuard są automatycznie zarządzane przez OpenWISP, co eliminuje potrzebę ręcznej interwencji.

Ta rola może również konfigurować skrypty, które umożliwiają OpenWISP zarządzanie tunelami VXLAN przez WireGuard.

Przetestowane na Debianie i Ubuntu.

UWAGA: zaleca się używanie tej procedury na czystych maszynach wirtualnych lub kontenerach linuxowych.

Minimalna wspierana wersja Ansible: 2.10.

Instrukcje instalacji i użycia

Dla uproszczenia, najłatwiej jest zainstalować tę rolę na swoim lokalnym komputerze za pomocą ansible-galaxy:

ansible-galaxy install openwisp.wireguard_openwisp

Zobacz przykładowy playbook w sekcji "Pełny przykładowy playbook z certyfikatem SSL", aby szybko rozpocząć pracę z tą rolą.

UWAGA: Ta rola nie skonfiguruje przekazywania pakietów ani nie doda statycznych lub dynamicznych tras na Twoim serwerze.

Ponieważ dokładny sposób, w jaki pakiety mogą być kierowane, może się różnić w zależności od różnych czynników, które mogą znacznie różnić się w zależności od organizacji, użytkownik powinien dostosować konfigurację zgodnie z własnymi potrzebami. W przyszłości możemy dodać domyślną konfigurację trasowania/przekazywania, gdy będziemy mieli więcej danych o użytkowaniu. Jeśli jesteś tym zainteresowany, daj nam znać.

Pełny przykład playbooka z certyfikatem SSL

Domyślnie playbook tworzy certyfikat SSL (nieważny) z własnym podpisem dla punktu końcowego VPN. Jeśli zachowasz nieważny certyfikat, będziesz musiał również wyłączyć weryfikację SSL w OpenWISP, chociaż odradzamy używanie tego rodzaju konfiguracji w środowisku produkcyjnym. Możesz zainstalować swój zaufany certyfikat, postępując zgodnie z krokami w tej sekcji.

Pierwszą rzeczą, którą musisz zrobić, jest ustawienie ważnej domeny dla Twojego VPN WireGuard, co oznacza, że Twój plik inwentarza (hosts) powinien wyglądać następująco:

[openwisp2_wireguard]
wireguard.yourdomain.com

Musisz być w stanie dodać rekord DNS dla wireguard.yourdomain.com, nie możesz używać adresu IP zamiast wireguard.yourdomain.com.

Kiedy Twoja domena jest skonfigurowana, a rekord DNS jest propagowany, przystąp do instalacji roli ansible geerlingguy.certbot

ansible-galaxy install geerlingguy.certbot

Następnie przystąp do utworzenia pliku playbook.yml, aby wyglądał podobnie do poniższego przykładu:

- hosts: openwisp2_wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - geerlingguy.certbot
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    openwisp2_wireguard_vpn_uuid: "wklej-tutaj-vpn-uuid"
    openwisp2_wireguard_vpn_key: "wklej-wlan-vpn-key"
    openwisp2_wireguard_flask_key: "wklej-token-autoryzacji-punktu-końcowego"

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

    # konfiguracja certbota
    certbot_auto_renew_user: "użytkownik-privileged-do-odnowy-certyfikatów"
    certbot_auto_renew_minute: "20"
    certbot_auto_renew_hour: "5"
    certbot_create_if_missing: true
    certbot_create_standalone_stop_services: []
    certbot_certs:
      - email: "wklej-swoj-email"
        domains:
          - wireguard.yourdomain.com

Przeczytaj dokumentację geerlingguy.certbot, aby dowiedzieć się więcej o konfiguracji roli certbota.

Aby poznać wszystkie zmienne ansible dostarczane przez openwisp.wireguard_openwisp, zapoznaj się z sekcją "Zmienne roli" w tej dokumentacji.

Konfigurowanie wielu interfejsów WireGuard

Korzystając z tej roli, możesz skonfigurować wiele interfejsów WireGuard na tej samej maszynie, które są zarządzane przez OpenWISP niezależnie. Musisz zapewnić, że następujące zmienne roli są unikalne dla każdego playbooka:

  • openwisp2_wireguard_path
  • openwisp2_wireguard_flask_port

Poniżej znajduje się przykład playbooka zawierającego dwa zadania do konfigurowania wielu interfejsów WireGuard.

- name: Ustaw pierwszy interfejs WireGuard
  hosts:
    - wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-1"
    openwisp2_wireguard_vpn_uuid: "wklej-tutaj-vpn1-uuid"
    openwisp2_wireguard_vpn_key: "wklej-tutaj-vpn1-key"
    openwisp2_wireguard_flask_key: "wklej-tutaj-vpn1-endpoint-auth-token"
    openwisp2_wireguard_flask_port: 8081

- name: Ustaw drugi interfejs WireGuard
  hosts:
    - wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-2"
    openwisp2_wireguard_vpn_uuid: "wklej-tutaj-vpn-2-uuid"
    openwisp2_wireguard_vpn_key: "wklej-tutaj-vpn-2-key"
    openwisp2_wireguard_flask_key: "wklej-tutaj-vpn-2-endpoint-auth-token"
    openwisp2_wireguard_flask_port: 8082

Uwaga

  • Podczas tworzenia obiektów serwera VPN w OpenWISP upewnij się, że nazwa interfejsu i port są unikalne dla każdego VPN. W przeciwnym razie skrypty aktualizujące nie będą działać poprawnie z powodu konfliktów.

Zmienne roli

Ta rola ma wiele zmiennych, które można dostosować, aby najlepiej odpowiadały Twoim potrzebom.

Poniżej przedstawione są wszystkie zmienne, które można dostosować (możesz także spojrzeć na domyślne wartości tych zmiennych).

- hosts: openwisp2_wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    # URL instancji OpenWISP, możesz to pominąć (usunąć), jeśli WireGuard
    # jest instalowany na tym samym hoście, na którym działa OpenWISP.
    # Jeśli używasz dwóch oddzielnych hostów (jednego dla OpenWISP i jednego dla WireGuard),
    # co jest dobrym pomysłem, musisz podać tutaj URL swojej
    # instancji OpenWISP (działającej z OpenWISP Controller >= 1.0.0)
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    # Katalog, w którym będą instalowane skrypty aktualizacji
    openwisp2_wireguard_path: "/opt/wireguard-openwisp"
    # Pozwala na pobieranie konfiguracji VPN używając "niepewnych" połączeń SSL.
    # Zaleca się, aby pozostawić to jako fałsz.
    openwisp2_wireguard_curl_insecure: false
    # UUID VPN wygenerowany po utworzeniu obiektu serwera VPN w OpenWISP
    openwisp2_wireguard_vpn_uuid: "wklej-tutaj-vpn-uuid"
    # Klucz VPN wygenerowany po utworzeniu obiektu serwera VPN w OpenWISP
    openwisp2_wireguard_vpn_key: "wklej-tutaj-vpn-key"
    # Punkt końcowy Flask, który będzie używany do wyzwalania aktualizacji
    openwisp2_wireguard_flask_endpoint: "/trigger-update"
    # Klucz autoryzacyjny punktu aktualizacji
    openwisp2_wireguard_flask_key: "wklej-tutaj-token-autoryzacji-punktu-końcowego"
    # Port, na którym działa punkt końcowy Flask
    openwisp2_wireguard_flask_port: 8081
    # Host, na którym działa punkt końcowy Flask
    openwisp2_wireguard_flask_host: 0.0.0.0
    # Ustaw poziom logowania dla logowania Flask.
    # Dozwolone wartości to "INFO", "WARNING" oraz "ERROR"
    openwisp2_wireguard_logging_level: "WARNING"
    # Komenda używana do uruchamiania uwsgi z supervisora
    openwisp2_wireguard_uwsgi_command: "{{ openwisp2_wireguard_path }}/env/bin/uwsgi uwsgi.ini"

    # ścieżka do ważnego certyfikatu SSL i klucza
    # (certyfikat SSL z własnym podpisem zostanie wygenerowany, jeśli to pominięto)
    openwisp2_wireguard_ssl_cert: "/opt/wireguard-openwisp/ssl/server.crt"
    openwisp2_wireguard_ssl_key: "/opt/wireguard-openwisp/ssl/server.key"
    # dostosuj informacje o certyfikacie SSL z własnym podpisem, jeśli to konieczne
    openwisp2_wireguard_ssl_country: "US"
    openwisp2_wireguard_ssl_state: "Kalifornia"
    openwisp2_wireguard_ssl_locality: "San Francisco"
    openwisp2_wireguard_ssl_organization: "IT dep."

    # domyślnie używany jest python3, możesz musieć ustawić to na python2.7 dla starszych systemów
    openwisp2_wireguard_python: python2.7
    # komenda wirtualenv dla Twojej dystrybucji zdalnej, zazwyczaj ustawiana automatycznie
    openwisp2_wireguard_virtualenv_command: "virtualenv"

    # Ustawia ipv4.method połączenia VXLAN, domyślnie na "link-local"
    openwisp2_wireguard_vxlan_ipv4_method: disabled
    openwisp2_wireguard_vxlan_ipv6_method: disabled

Rozwiązywanie problemów

Oto jak ręcznie wywołać sprawdzenie konfiguracji, jeśli zajdzie taka potrzeba:

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

Logi aplikacji, która odpowiada za aktualizację konfiguracji WireGuard pobranej z serwera OpenWISP, można znaleźć w /opt/wireguard-openwisp/vpn_updater.log.

Współpraca

Proszę zapoznać się z wytycznymi dla współpracowników OpenWISP.

Jak uruchomić testy

Jeśli chcesz przyczynić się do ansible-wireguard-openwisp, powinieneś uruchomić testy w swoim środowisku deweloperskim, aby upewnić się, że Twoje zmiany nie wprowadzają żadnych błędów.

Aby to zrobić, wykonaj następujące kroki:

Krok 1: Sklonuj ansible-wireguard-openwisp

Sklonuj repozytorium za pomocą:

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

Krok 2: Zainstaluj dockera

Jeśli jeszcze nie zainstalowałeś dockera, musisz go zainstalować (przykład dla systemów linux debian/ubuntu):

sudo apt-get install docker.io

Krok 3: Zainstaluj molekułę i zależności

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

Krok 4: Pobierz obrazy dockera

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

Krok 5: Uruchom testy molekuły

molecule test -s local

Jeśli nie otrzymasz żadnych wiadomości o błędach, oznacza to, że testy zostały pomyślnie uruchomione.

ProTip: Użyj molecule test -s local --destroy=never, aby przyspieszyć kolejne uruchomienia testów.

Licencja

Zobacz LICENCJA.

Wsparcie

Zobacz Kanały wsparcia OpenWISP.

O projekcie

Role to install OpenWISP's Wireguard Updater

Zainstaluj
ansible-galaxy install openwisp.wireguard_openwisp
Licencja
bsd-3-clause
Pobrania
505
Właściciel
Modular and Programmable Open Source Network Management System for Linux OpenWrt.