oukooveu.wireguard

Rola Ansible WireGuard

Molecule

To jest prosta rola do instalacji WireGuard i skonfigurowania pełnej łączności mesh (domyślnie) pomiędzy wszystkimi hostami w playbooku.

Rola została zainspirowana implementacją, jednak z powodu jej nieaktualności oraz braku akceptacji pull requestów postanowiono napisać ją od początku.

Wymagania

Nie ma specjalnych wymagań. Nie ma domyślnej wartości dla wireguard_vpn_ip, ta zmienna musi być zdefiniowana dla każdego hosta.

Zmienne roli

Zmienna Opis Wartość domyślna
wireguard_vpn_ip adres prywatny N/A, musi być podany w zmiennych hosta
wireguard_port port do nasłuchu 51820
wireguard_path ścieżka do plików konfiguracyjnych /etc/wireguard
wireguard_public_ip adres publiczny {{ ansible_default_ipv4.address }}
wireguard_post_up skrypt po uruchomieniu N/A
wireguard_post_down skrypt po zatrzymaniu N/A
wireguard_network topologia sieci, zobacz przykłady poniżej {}
wireguard_network_name nazwa interfejsu wg0
wireguard_additional_peers dodatkowi partnerzy []
wireguard_mtu_enabled zarządzaj opcją MTU false
wireguard_mtu wartość opcji MTU N/A
wireguard_fw_mark_enabled zarządzaj opcją FwMark false
wireguard_fw_mark wartość opcji FwMark {{ wireguard_port }}
wireguard_hosts_enabled dodaj siebie i partnerów WireGuard do /etc/hosts false
wireguard_hosts_domain domena dla rekordów /etc/hosts wg.internal

Opcja FwMark w WireGuard może być przydatna, gdy potrzebujesz odfiltrować cały niezaszyfrowany ruch, na przykład:

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

Przykłady playbooków

pełna sieć mesh

- name: konfiguracja sieci full-mesh w WireGuard
  hosts: cluster
  roles:
    - role: oukooveu.wireguard

niestandardowa topologia sieci z dodatkowym partnerem

- name: konfiguracja niestandardowej sieci WireGuard
  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: 'komentarz'
  roles:
    - role: oukooveu.wireguard

W powyższym przykładzie hosty node1 i node4 mają dostęp do wszystkich hostów, a hosty node2 i node3 nie mają dostępu do siebie nawzajem. Konfiguracja powinna być symetryczna (jeśli łączność dla jednego węzła jest określona, to powinna być określona także dla drugiego węzła) i nie ma dodatkowych sprawdzeń w tym zakresie, więc bądź ostrożny.

Testy Molecule

Aby uruchomić testy lokalnie:

python -m venv .venv
. .venv/bin/activate
pip install -r molecule/default/requirements.txt
molecule test

Aby uruchomić testy dla niestandardowego obrazu (debian:11), ustaw zmienną środowiskową MOLECULE_IMAGE na odpowiednią wartość, na przykład:

export MOLECULE_IMAGE=rockylinux:9

Aby usunąć środowisko testowe, uruchom molecule destroy.

Licencja

Apache 2.0

O projekcie

wireguard ansible role

Zainstaluj
ansible-galaxy install oukooveu.wireguard
Licencja
Unknown
Pobrania
162
Właściciel