mawalu.wireguard_private_networking

Prywatna sieć serwerów z użyciem ansible i wireguard

Rola Ansible

Ta rola umożliwia wdrożenie szybkiej, bezpiecznej i niezależnej od dostawcy prywatnej sieci między wieloma serwerami. Jest to przydatne w przypadku dostawców, którzy nie oferują prywatnej sieci lub gdy chcesz połączyć serwery rozproszone w różnych regionach i u różnych dostawców.

Jak to działa

Rola instaluje wireguard na Debianie lub Ubuntu, tworzy sieć mesh między wszystkimi serwerami, dodając je jako peer, oraz konfiguruje usługę wg-quick w systemie systemd.

Instalacja

Instalację można przeprowadzić za pomocą ansible galaxy:

$ ansible-galaxy install mawalu.wireguard_private_networking

Konfiguracja

Zainstaluj tę rolę, przypisz zmienną vpn_ip do każdego hosta, który ma być częścią sieci, i uruchom rolę. Upewnij się, że pozwalasz na ruch na porcie VPN (domyślnie 5888) w swoim firewallu. Oto mały przykład konfiguracji:

Opcjonalnie możesz ustawić public_addr dla każdego hosta. Ten adres będzie używany do łączenia się z peerem wireguard zamiast adresu w inwentarzu. Przydatne, jeśli konfigurujesz przez inną sieć niż ta używana przez wireguard. np. ansible łączy się przez LAN z twoim peerem.

# plik inwentarza

wireguard:
  hosts:
    1.1.1.1:
      vpn_ip: 10.1.0.1/32
      public_addr: "example.com" # opcjonalne
    2.2.2.2:
      vpn_ip: 10.1.0.2/32
# playbook

- name: Skonfiguruj sieć wireguard
  hosts: wireguard
  remote_user: root
  roles:
    - mawalu.wireguard_private_networking
# playbook (z konfiguracją klienta)
- name: Skonfiguruj sieć wireguard
  hosts: wireguard
  remote_user: root
  vars:
    client_vpn_ip: 10.1.0.100
    client_wireguard_path: "~/my-client-config.conf"
  roles:
    - mawalu.wireguard_private_networking

Dodatkowa konfiguracja

Istnieje niewielka liczba zmiennych roli, które można nadpisać.

wireguard_port: "5888" # port do użycia dla połączeń serwer-serwer
wireguard_path: "/etc/wireguard" # lokalizacja wszystkich konfiguracji wireguard

wireguard_network_name: "private" # nazwa używana w pliku konfiguracyjnym i wg-quick

wireguard_mtu: 1500 # Opcjonalnie MTU do ustawienia w pliku wg-quick. Nie ustawione domyślnie. Może być ustawione dla każdego hosta.

debian_enable_backports: true # czy repozytoria backports powinny być dodane na maszynach debianowych

# Wsparcie dla Raspberry Pi Zero
# Wymaga nagłówków jądra i ręcznej kompilacji wireguard, opcjonalne przez flagę, zainstaluj kolekcję `community.general`
# Uwaga: Może spowodować ponowne uruchomienie.
allow_build_from_source: true

wireguard_sources_path: "/var/cache" # Lokalizacja do klonowania źródeł WireGuard, jeśli wymagana jest ręczna budowa

client_vpn_ip: "" # jeśli ustawione, dodatkowy plik konfiguracyjny wireguard zostanie wygenerowany w określonej ścieżce na localhost
client_wireguard_path: "~/wg.conf" # ścieżka na localhost do zapisu konfiguracji klienta, jeśli client_vpn_ip jest ustawione

# lista dodatkowych peerów, którzy zostaną dodani do każdego serwera
wireguard_additional_peers:
  - comment: martin
    ip: 10.2.3.4
    key: your_wireguard_public_key
  - comment: other_network
    ip: 10.32.0.0/16
    key: their_wireguard_public_key
    keepalive: 20 
    endpoint: some.endpoint:2230 

wireguard_post_up: "iptables ..." # Komenda PostUp
wireguard_post_down: "iptables"   # Komenda PostDown

Testowanie

Ta rola ma mały zestaw testowy, który jest tworzony za pomocą molecule. Aby uruchomić testy, postępuj zgodnie z przewodnikiem instalacji molecule tutaj, upewnij się, że demon dockera jest uruchomiony na twojej maszynie, a następnie wykonaj molecule test.

Współpraca

Nie wahaj się otwierać zgłoszeń lub MR w przypadku napotkania problemów lub chęci podzielenia się pomysłami na ulepszenia. Jestem szczególnie otwarty na MRs, które dodają wsparcie dla dodatkowych systemów operacyjnych i więcej testów.

O projekcie

Build your own multi server private network using wireguard and ansible

Zainstaluj
ansible-galaxy install mawalu.wireguard_private_networking
Licencja
mit
Pobrania
12.7k
Właściciel
Webdev, DevOps & Security. Btw I use Arch and Nix