mawalu.wireguard_private_networking

Réseau privé entre serveurs avec Ansible et WireGuard

Rôle Ansible

Ce rôle vous permet de déployer un réseau privé rapide, sécurisé et indépendant du fournisseur entre plusieurs serveurs. Ceci est utile pour les fournisseurs qui ne vous offrent pas de réseau privé ou si vous souhaitez connecter des serveurs répartis sur plusieurs régions et fournisseurs.

Comment

Le rôle installe WireGuard sur Debian ou Ubuntu, crée un maillage entre tous les serveurs en les ajoutant comme pairs et configure le service systemd wg-quick.

Installation

L'installation peut se faire en utilisant Ansible Galaxy :

$ ansible-galaxy install mawalu.wireguard_private_networking

Configuration

Installez ce rôle, assignez une variable vpn_ip à chaque hôte qui devrait faire partie du réseau et exécutez le rôle. Veuillez vous assurer d'autoriser le port VPN (par défaut 5888) dans votre pare-feu. Voici un petit exemple de configuration :

Optionnellement, vous pouvez définir une public_addr sur chaque hôte. Cette adresse sera utilisée pour se connecter au pair WireGuard au lieu de l'adresse dans l'inventaire. Utile si vous configurez via un autre réseau que celui utilisé par WireGuard. Par exemple, Ansible se connecte via un LAN à votre pair.

# fichier d'inventaire

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

- name: Configurer le maillage WireGuard
  hosts: wireguard
  remote_user: root
  roles:
    - mawalu.wireguard_private_networking
# playbook (avec configuration client)
- name: Configurer le maillage 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

Configuration supplémentaire

Il existe un petit nombre de variables de rôle qui peuvent être écrasées.

wireguard_port: "5888" # le port à utiliser pour les connexions entre serveurs
wireguard_path: "/etc/wireguard" # emplacement de toutes les configurations WireGuard

wireguard_network_name: "privé" # le nom à utiliser pour le fichier de config et wg-quick

wireguard_mtu: 1500 # Optionnel ; un MTU à définir dans le fichier wg-quick. Non défini par défaut. Peut également être défini par hôte

debian_enable_backports: true # si les dépôts backports de Debian doivent être ajoutés sur les machines Debian

# Support Raspberry Pi Zero
# Nécessite les en-têtes kernel et la compilation manuelle de WireGuard, option via un flag, installer la collection `community.general`
# Attention : Peut provoquer un redémarrage.
allow_build_from_source: true

wireguard_sources_path: "/var/cache" # Emplacement pour cloner les sources de WireGuard si une compilation manuelle est requise

client_vpn_ip: "" # si défini, un fichier de configuration WireGuard supplémentaire sera généré au chemin spécifié sur localhost
client_wireguard_path: "~/wg.conf" # chemin sur localhost pour écrire la configuration du client, si client_vpn_ip est défini

# une liste de pairs supplémentaires qui seront ajoutés à chaque serveur
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 ..." # Commande hook PostUp
wireguard_post_down: "iptables"   # Commande hook PostDown

Tests

Ce rôle dispose d'une petite configuration de test créée avec Molecule. Pour exécuter les tests, suivez le guide d'installation de Molecule, assurez-vous qu'un démon Docker fonctionne sur votre machine et exécutez molecule test.

Contribution

N'hésitez pas à ouvrir des problèmes ou des MR si vous rencontrez des problèmes ou avez des idées d'amélioration. Je suis particulièrement ouvert aux MR qui ajoutent du support pour d'autres systèmes d'exploitation et plus de tests.

À propos du projet

Build your own multi server private network using wireguard and ansible

Installer
ansible-galaxy install mawalu.wireguard_private_networking
Licence
mit
Téléchargements
12.7k
Propriétaire
Webdev, DevOps & Security. Btw I use Arch and Nix