mawalu.wireguard_private_networking
Prywatna sieć serwerów z użyciem ansible i wireguard
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.
Build your own multi server private network using wireguard and ansible
ansible-galaxy install mawalu.wireguard_private_networking