Petit utilitaire pour synchroniser des peers WireGuard à partir d'un annuaire LDAP et générer une configuration nftables.
Commandes principales
-
wg-ldap- Usage principal pour synchroniser et générer :
uv run wg-ldap -- sync --config /etc/wg-ldap/config.toml: récupère les utilisateurs LDAP, attribue des IPs et écrit les fichiers de config (WireGuard + nftables).uv run wg-ldap -- sync --apply: idem + applique les configs (wg syncconfetnft -f).uv run wg-ldap -- generate: génère les fichiers sans persister l'état ni appliquer.uv run wg-ldap -- init-config: écrit un exemple de config dans/etc/wg-ldap/config.toml.
- Usage principal pour synchroniser et générer :
-
wg-ldap-web- Petit serveur HTTP local qui répond
GET /<username>avec l'IP attribuée (plain text). Utile pour vérifications rapides. - Démarrer :
uv run wg-ldap-web(lit lestate_filedéfini dans la config).
- Petit serveur HTTP local qui répond
-
gen-nft-base(viawg-ldap gen-nft-base)- Génère un fichier
nftables.base.confpour les interfaces données et l'écrit dansnftables.base_pathdéfini dans la config.
- Génère un fichier
Notes rapides
- Les chemins et options sont définis dans le fichier TOML de configuration (
/etc/wg-ldap/config.tomlpar défaut). uv run <script>est utilisé pour lancer les scripts sans installation système.
-
Générer une clé privée et publique WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
-
Ajouter un utilisateur dans LDAP avec les attributs :
uid: nom d'utilisateur (ex:alice)sshdPublicKey: contenu depublickey
-
Lancer la synchronisation pour que
wg-ldaprécupère les utilisateurs et génère les configs :uv run wg-ldap -- sync --apply
-
Vérifier que l'utilisateur a une IP attribuée :
uv run wg-ldap-web curl http://localhost:8080/alice # devrait retourner l'IP attribuée à aliceEn pratique, beaucoup de ces étapes peuvent être automatisées avec des services systemd. La partie génération de la config wireguard côté client et récupération de l'addresse IP peuvent être faites très facilement depuis la page du serveur web.