mawalu.wireguard_private_networking
Réseau privé entre serveurs avec Ansible et WireGuard
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.
Build your own multi server private network using wireguard and ansible
ansible-galaxy install mawalu.wireguard_private_networking