Le problème : gérer dix tunnels WireGuard manuels
WireGuard est excellent — rapide, moderne, cryptographiquement solide. Mais son modèle de configuration est statique : chaque pair doit connaître l'IP publique et la clé publique de tous ses homologues. Dans un parc de dix clients avec des postes nomades, des bureaux derrière du CGNAT et des VPS à IPs variables, vous passez plus de temps à synchroniser des fichiers wg0.conf qu'à faire du travail productif. Ajoutez un VPS, modifiez la liste des pairs sur neuf machines. Retirez un technicien, révocationnez sa clé partout. Un sous-réseau change ? Recommencez. C'est le cauchemar opérationnel que NetBird a été conçu pour éliminer.
- Mesh automatique : NetBird gère le plan de contrôle — chaque nouveau pair s'annonce, les autres le découvrent sans intervention manuelle.
- Traversée NAT et CGNAT : NetBird utilise STUN pour établir des connexions pair-à-pair directes à travers les NAT résidentiels et d'entreprise.
- Relais TURN automatique : quand la connexion directe est impossible (pare-feu strict, double NAT), NetBird bascule silencieusement sur un relais chiffré.
- Audit d'accès granulaire : les politiques de contrôle d'accès définissent quels pairs peuvent joindre quels services — visible depuis le tableau de bord.
- Open source (BSD-3 pour le client, AGPLv3 pour le plan de contrôle) : pas de vendor lock-in, auto-hébergement possible.
Prérequis avant de commencer
Avant d'installer NetBird, vérifiez que votre infrastructure répond aux prérequis suivants.
- Un VPS ServOrbit sous Ubuntu 22.04/24.04 ou Debian 12, avec accès root.
- Un compte NetBird Cloud (gratuit jusqu'à 5 pairs) ou un plan de contrôle self-hosted déjà en place (voir l'article dédié au déploiement du contrôleur).
- Les ports sortants 443 (HTTPS/WSS) et 3478 (STUN/UDP) non bloqués depuis le VPS — vérifiable avec
nc -vzu stun.netbird.io 3478. - La feature Peer Expose activée sur votre compte (disponible sur les plans Team et supérieurs, ou sur un plan de contrôle self-hosted).
Connecter un VPS ServOrbit à un réseau NetBird
Voici la procédure complète pour connecter un VPS ServOrbit à votre réseau mesh NetBird.
Installer l'agent NetBird
Sur le VPS, ajoutez le dépôt officiel et installez le paquet :
curl -fsSL https://pkgs.netbird.io/install.sh | shVérifiez la version installée :
netbird versiondoit afficher0.76.x.Générer une clé d'activation
Dans le tableau de bord NetBird (app.netbird.io ou votre instance self-hosted), rendez-vous dans Setup Keys et créez une clé réutilisable ou à usage unique. Copiez-la — elle ne s'affiche qu'une fois.
Connecter le pair au plan de contrôle
Sur le VPS :
netbird up --setup-key <VOTRE_SETUP_KEY>Pour un plan de contrôle self-hosted, ajoutez
--management-url https://netbird.votre-domaine.com:443. La commande retourne immédiatement ; le pair apparaît dans le tableau de bord sous quelques secondes.Ajouter le pair au groupe réseau
Dans l'interface NetBird, naviguez vers Peers, sélectionnez le nouveau VPS et ajoutez-le au groupe souhaité (ex.
clients-agence). Les politiques d'accès liées à ce groupe s'appliquent immédiatement — pas de redémarrage nécessaire.Vérifier la connectivité mesh
Depuis un autre pair déjà dans le réseau :
netbird status # liste les pairs joignables avec leur IP mesh (100.x.x.x) et le statut de connexion ping 100.x.x.x # IP mesh du nouveau VPSUn ping qui répond confirme que le tunnel est établi. Si le pair est direct, vous verrez
directdans le statut ; sinonrelayedvia un serveur TURN.
`netbird expose` : un service interne sans port public
La commande netbird expose, disponible depuis la version 0.66 et consolidée dans la branche 0.76, permet de rendre un service qui écoute localement (sur 127.0.0.1 ou un réseau privé) accessible depuis Internet via le proxy inverse de NetBird — sans ouvrir un seul port sur le pare-feu du VPS. Le service créé est éphémère : il disparaît automatiquement à l'arrêt de la commande.
Exemple concret : votre panneau de supervision (Grafana, Netdata) écoute sur localhost:3000 et ne doit être accessible que depuis les membres autorisés du réseau mesh. Sans netbird expose, vous seriez tenté d'ouvrir le port 3000 publiquement ou de monter un tunnel SSH. Avec NetBird :
netbird expose --protocol http \
--local-address localhost:3000 \
--with-user-groups supervision-adminsNetBird génère une URL publique en *.tunnel.netbird.io (ou votre domaine custom avec --with-custom-domain). Seuls les utilisateurs authentifiés appartenant au groupe supervision-admins peuvent y accéder — les autres obtiennent une erreur 403. Le port 3000 du VPS reste fermé au niveau du pare-feu.
Pour un accès protégé par mot de passe sans SSO, ajoutez --with-password : NetBird affiche un mot de passe aléatoire que vous communiquez à vos collaborateurs. Pratique pour un accès d'urgence à un client sans compte dans votre tenant NetBird.
Cas d'usage agence : connecter VPS client, bureau et poste admin
Voici l'architecture type pour une agence qui gère dix clients indépendants. Chaque client dispose d'un VPS ServOrbit. L'agence a un bureau avec un accès Internet standard et plusieurs postes d'administrateurs nomades.
Topologie NetBird recommandée : Créez un groupe par client (ex. client-acme, client-contoso). Le VPS de chaque client est membre de son groupe client. Les postes d'admin sont membres de leur groupe client respectif — et uniquement celui-là. Une politique d'accès relie chaque groupe à lui-même. Résultat : l'admin du client ACME peut joindre le VPS ACME via son IP mesh (100.x.x.x) mais ne voit pas le VPS Contoso. Le bureau de l'agence est dans un groupe agence-ops qui a accès à tous les groupes clients — c'est le seul pair transversal.
Pour déployer depuis le bureau de l'agence vers le VPS d'un client, plus aucun port SSH public n'est nécessaire. La commande ssh [email protected] transite entièrement dans le tunnel mesh chiffré. Le pare-feu du VPS client ne voit que le trafic venant de l'IP mesh de l'agence — bloquez tout le reste avec une règle UFW simple :
ufw allow in on netbird0 to any port 22
ufw deny 22Le port 22 est fermé publiquement mais ouvert sur l'interface mesh netbird0.
Faites défiler le tableau
| Critère | NetBird 0.76 | Tailscale | WireGuard manuel |
|---|---|---|---|
| Gestion des pairs | Automatique (plan de contrôle centralisé) | Automatique (cloud Tailscale) | Manuelle (fichiers wg0.conf sur chaque nœud) |
| Traversée NAT/CGNAT | STUN + TURN automatique | STUN + DERP automatique | Requiert IP publique ou port-forward |
| Modèle de prix | Gratuit jusqu'à 5 pairs ; plans Team/Business ; self-hosted gratuit | Gratuit jusqu'à 3 utilisateurs ; plans payants pour équipes | Gratuit (logiciel), coût opérationnel en temps |
| Open source | Oui (BSD-3 client, AGPLv3 serveur) | Client open source (BSD-3), serveur propriétaire | Oui (GPLv2 kernel, MIT userland) |
| Expose un service sans port ouvert | Oui (`netbird expose`) | Non (Funnel disponible mais différent) | Non natif (tunnel SSH manuel) |
| Audit et politiques d'accès | Interface web complète, groupes et politiques | ACL via fichier HuJSON, interface web | Aucun — uniquement AllowedIPs par pair |
Dépannage : 3 problèmes fréquents
1. Pair non joignable (Status: Disconnected) — Lancez netbird status --detail pour voir l'état ICE. Si vous voyez no candidate pairs, le problème est réseau : vérifiez que le port 3478/UDP sortant est ouvert (nc -vzu stun.netbird.io 3478). Si la connexion directe échoue mais que le TURN est disponible, NetBird bascule automatiquement — un ping qui fonctionne mais avec une latence plus élevée indique un relais TURN actif.
2. STUN/TURN bloqué par le pare-feu d'entreprise — Certains réseaux d'entreprise bloquent UDP sortant. NetBird supporte TURN sur TCP/443, ce qui passe à travers la quasi-totalité des proxies HTTP. Configurez dans le tableau de bord : Settings → Relay → Force TCP. La connexion sera légèrement plus lente mais fonctionnelle.
3. Lire les logs pour un diagnostic précis — Sur Linux avec systemd :
journalctl -u netbird -f --since '5 minutes ago'Les messages à surveiller : failed to connect, signal disconnected (problème de plan de contrôle), peer connected via relay (TURN actif). Pour augmenter la verbosité : netbird up --log-level debug.
Politique de contrôle d'accès : dans Access Control → Policies, créez une règle qui autorise uniquement le groupe agence-ops à atteindre le port 22 des groupes clients. Les autres ports (80, 443) peuvent être accessibles au groupe client lui-même. Cette granularité évite qu'un poste compromis dans le mesh ne serve de pivot vers tous les VPS clients.
Conclusion : moins de règles de pare-feu, plus de sécurité réelle
NetBird 0.76 représente un changement de paradigme pour la gestion d'un parc VPS distribué. Au lieu de multiplier les règles UFW et les clés WireGuard statiques, vous définissez des groupes et des politiques une fois — et le plan de contrôle s'occupe du reste. La commande netbird expose va plus loin encore : elle retire physiquement des services de l'exposition Internet sans reconfigurer le pare-feu. Pour une agence qui gère dix clients ou une entreprise avec des bureaux distribués, c'est la réduction de surface d'attaque la plus impactante par heure investie. L'architecture mesh zero-trust de NetBird, combinée aux VPS ServOrbit, vous donne un réseau privé d'agence opérationnel en une heure.