openwisp.wireguard_openwisp
ansible-wireguard-openwisp
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
iport
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.
ansible-galaxy install openwisp.wireguard_openwisp