⚙️🌌Nebula Defined Networking
Nebula est un outil de réseau superposé évolutif axé sur les performances, la simplicité et la sécurité. Il vous permet de connecter de manière transparente des ordinateurs partout dans le monde. Nebula est portable et fonctionne sous Linux, OSX, Windows, iOS et Android. Nebula intègre un certain nombre de concepts existants tels que le chiffrement, les groupes de sécurité, les certificats, et le tunnel.
Connexion sur le site https://admin.defined.net (login + totp)
Choisir un CIDR pour votre réseau de nébuleuses gérées
Pour commencer avec Managed Neubla, vous devrez choisir une plage réseau. Lors de l’ajout d’hôtes au réseau, une adresse IP se verra attribuer une adresse IP dans cette plage. Il y a quelques exigences et facteurs importants à prendre en compte avant de faire votre choix, car la plage ne peut pas être modifiée une fois qu’elle est choisie (des réseaux supplémentaires avec différentes gammes peuvent être créés, mais les appareils ne peuvent pas communiquer entre les réseaux).
Considérations
La plage que vous choisissez doit faire partie de l’espace d’adresses privés RFC 1918 ou de l’espace d’adresses partagés RFC 6598. Cela signifie qu’il doit exister dans l’une des plages suivantes:
- 192.168.0.0/16
- 172.16.0.0/12
- 10.0.0.0/8
- 100.64.0.0/10
Comme ci-dessus, l’utilisation de la notation CIDR est utilisée pour spécifier la plage pour votre réseau de nébuleuses gérées.
CIDR: 10.139.100.0/24
Gérer son propre phare (lighthouse)
Le phare géré est le bon choix pour la plupart des réseaux. Vous voudrez peut-être gérer votre propre phare à la place (ou en plus) si vous avez besoin:
- Contrôle total sur l’infrastructure qui gère la découverte par les pairs
- Un phare à l’intérieur d’un réseau, d’une région ou d’un centre de données spécifique
- Pour conserver toute l’infrastructure de coordination sur le matériel que vous exploitez
Vous pouvez auto-héberger un ou plusieurs phares à côté du phare géré. Voir Inscription d’un phare pour la configuration auto-hébergée étape par étape.
Un réseau peut utiliser le phare géré, les phares auto-hébergés, ou les deux en même temps. L’ajout de votre propre phare ne supprime pas celui géré.
Nebula DNClient Debian RPM Arch
Sur les distributions Debian-, RPM- et Arch, installez dnclientd’un paquet. Le paquet met le binaire à /usr/bin/dnclient, enregistre un service système, et vous permet de prendre de nouvelles versions grâce à vos mises à jour système normales. Sur d’autres distributions, utilisez le binaire autonome.
DNClient - Debian
Pour Debian, Ubuntu, Linux Mint, Pop! _OS, et autres distributions basées sur APT.
- Ajoutez la clé de signature de réseau défini. Le
installLa commande crée le répertoire de keyring si votre distribution n’en a pas déjà.
1
2
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://dl.defined.net/gpg.asc -o /etc/apt/keyrings/defined-net.asc
- Ajouter le dépôt:
1
2
echo "deb [signed-by=/etc/apt/keyrings/defined-net.asc] https://dl.defined.net/stable/apt stable main" \
| sudo tee /etc/apt/sources.list.d/defined-net.list > /dev/null
- Installer
dnclientet activer le service pour qu’il démarre sur le démarrage:
1
2
3
sudo apt update
sudo apt install dnclient
sudo systemctl enable --now dnclient
Avec le service en cours d’exécution, inscrivez l’hôte, en remplaçant <ENROLL_CODE>avec le code d’inscription que vous recevez du panneau d’administration après avoir créé ou réinscruté l’hôte.
1
sudo dnclient enroll -code <ENROLL_CODE>
Confirmez que le service est en cours d’exécution et l’hôte a un certificat:
1
2
systemctl status dnclient
sudo dnclient info
DNClient - Archlinux (AUR)
Pour Arch Linux, Manjaro, EndeavourOS et d’autres distributions basées sur Arch, Defined Networking maintient le dnclientpackage dans le Référentiel d’utilisateurs Arch.
- Installez le package avec votre aide AUR, ou construisez-le manuellement avec
makepkg:
1
2
3
4
5
6
7
# with an AUR helper
yay -S dnclient
# or manually
git clone https://aur.archlinux.org/dnclient.git
cd dnclient
makepkg -si
- Activez le service pour qu’il démarre sur le démarrage:
1
sudo systemctl enable --now dnclient
Avec le service en cours d’exécution, inscrivez l’hôte, en remplaçant
<ENROLL_CODE>avec le code d’inscription que vous recevez du panneau d’administration après avoir créé ou réinscruté l’hôte.
1
sudo dnclient enroll -code <ENROLL_CODE>
Confirmez que le service est en cours d’exécution et l’hôte a un certificat:
1
2
systemctl status dnclient
sudo dnclient info
Configuration du service
Votre ordinateur est en marche dnclientet sera en mesure de communiquer avec d’autres machines sur votre réseau de nébuleuses gérées.
Note: Le paquet expédie sa propre unité systémique, de sorte que la construction emballée n’a pas
install,uninstall,start, oustopsous-commandes. Gérer le service avecsystemctlà la place. Pour connecter l’hôte à plus d’un réseau, utilisez lednclient@.serviceune unité de modèle, par exemplesudo systemctl enable --now dnclient@production.
Le service packagé prend ses paramètres à partir de variables d’environnement, qu’il lit à partir d’un fichier dont l’emplacement dépend de la distribution:
| Distribution | Dossier d’environnement |
|---|---|
| Debian, Ubuntu et autres APT-based | /etc/default/dnclient |
| RHEL, Fedora et autres RPM-based | /etc/sysconfig/dnclient |
| Arch-basé | /etc/conf.d/dnclient |
Le paquet envoie ce fichier à chaque paramètre commenté, de sorte que les valeurs défaillantes ci-dessous s’appliquent jusqu’à ce que vous le modifiiez. Une instance nommée lit son propre fichier avec le nom de l’instance ajouté, tel que /etc/default/dnclient.productionpour dnclient@production.service. Ce fichier est facultatif et le paquet ne le crée pas.
| Variable | Par défaut | Description |
|---|---|---|
DNCLIENT_STATE_DIR |
/var/lib/defined |
Annuaire tenant l’état d’inscription. Une instance nommée stocke son état dans un sous-répertoire, tel que /var/lib/defined/production/. |
DNCLIENT_LOG |
Unset | Fichier sur lequel écrire des journaux. Lorsqu’ils ne sont pas réglés, les journaux vont à stdout, où journald les capture. |
DNCLIENT_SERVER |
https://api.defined.net |
Serveur API utilisé pour l’inscription, la rotation des certificats et les mises à jour de configuration. |
DNCLIENT_NAME |
Unset | Nom de l’instance. L’unité de modèle définit cela par instance, alors activez dnclient@<name>.serviceplutôt que de le mettre ici. |
Redémarrez le service pour appliquer un changement:
1
sudo systemctl restart dnclient
Seul le service lit ce fichier.
dnclientLes commandes que vous exécutez vous-même utilisent les valeurs par défaut, sauf si vous définissez la variable dans votre propre shell ou passez le drapeau correspondant (-config,-log,-server,-name).
Nebula DNClient Binaire autonome
Utilisez cette méthode sur les distributions, le dépôt de paquets ne couvre pas, ou où vous ne voulez pas un paquet système. Vous devrez répéter ces étapes à la main pour chaque mise à niveau.
1- Obtenir l’URL pour la dernière version de la dnclientbinaire pour votre architecture à partir de https://admin.defined.net/downloads.
2 - À partir d’un répertoire où vous souhaitez télécharger dnclient, courir ce qui suit curlcommande, remplacement <DL_URL>avec le lien que vous avez obtenu à partir de la page de téléchargements.
1
curl -O <DL_URL>
3 - Faire dnclientexécutable:
1
sudo chmod +x dnclient
4 - Installer dnclientcomme un service. Cela utilisera le dnclientbinaire dans son répertoire actuel, alors déplacez-le d’abord si vous le souhaitez ailleurs.
1
sudo ./dnclient install
5 - Début dnclient. En tant que service, il sera démarré automatiquement sur les futurs redémarrages.
1
sudo ./dnclient start
6 - Inscrire l’hôte, en remplaçant <ENROLL_CODE>avec le code d’inscription que vous recevez du panneau d’administration de la nébuleuse gérée après avoir créé ou réinscrit l’hôte.
1
sudo ./dnclient enroll -code <ENROLL_CODE>
Votre ordinateur est en marche dnclientet sera en mesure de communiquer avec d’autres machines sur votre réseau de nébuleuses gérées.
Créer des pare-feu à l’aide de rôles et de balises
Même au sein d’un réseau privé comme Managed Nebula, c’est une bonne idée de restreindre les types de communication qui peuvent se produire entre différents types d’appareils. Par exemple, les machines de serveur Web peuvent avoir besoin de communiquer avec les machines de base de données sur certains ports, mais elles ne devraient pas pouvoir se lancer dans les ordinateurs portables utilisateurs. Dans la nébuleuse gérée, ces règles d’accès sont configurées via des règles de pare-feu sur les rôles et les balises. Ce guide expliquera quels sont les rôles et comment ils sont utilisés pour gérer à la fois l’identité et l’accès au sein d’un réseau de nébuleuses gérées.
Dans la nébuleuse gérée, un rôle représente l’objectif principal et l’identité de groupe d’un hôte. Par exemple, vous pouvez créer des rôles tels que user device, webserver, database, etc. Chaque machine que vous créez doit être assignée à un rôle lorsqu’elle est créée. Les règles de pare-feu sont configurées pour le trafic entrant au niveau du rôle. Les rôles nouvellement créés ne permettent que le trafic ICMP de sorte que pingLes demandes peuvent être utilisées pour le dépannage. Tout autre trafic entrant est refusé par défaut, et les règles peuvent être configurées pour permettre d’autres types de trafic à partir de machines appartenant à d’autres rôles spécifiques et/ou ayant des balises spécifiées.
Scénario
- serveur NFS CWWK , ouvrir port 2049
- Tous les hosts ont accès au NFS
Créer des rôles
Pour créer un rôle, visitez la page Rôles de votre panneau d’administration de réseau défini. Créons un nouveau webserver-internalrôle à utiliser pour les serveurs Web d’un site interne. Commencez par cliquer sur le Addbouton en haut à droite de la page et en remplissant le nom du rôle (obligatoire) et une description (facultatif). Nous reviendrons sur ce rôle et ajouterons des règles de pare-feu plus tard, mais pour l’instant, nous pouvons cliquer sur “Ajouter un rôle” pour le créer.
Nous allons créer un autre rôle pour user-nfsaussi, et nous pouvons voir les deux nouveaux rôles dans la page de liste de rôles:
Notez qu’en raison de la façon dont l’identité est gérée de manière sécurisée, les noms de rôle ne peuvent pas être modifiés après leur création, mais les hôtes peuvent être modifiés pour changer de rôle. Les règles de pare-feu des rôles peuvent être modifiées à tout moment, et les mises à jour seront automatiquement envoyées à toutes les machines concernées. Les rôles peuvent être supprimés tant qu’il n’y a pas d’hôtes, de phares ou de relais utilisant le rôle.
Ajout de règles de pare-feu
Par défaut, les rôles n’ont qu’une seule règle de pare-feu, pour autoriser les requêtes ping entre eux.
Ajout règle parefeu , ouverture port 2049
Cliquez sur le bouton “Ajouter une règle” pour appliquer la modification, mais notez que les modifications apportées aux rôles ne sont pas enregistrées jusqu’à ce que le bouton “Enregistrer le rôle” soit cliqué, afin de minimiser le nombre de mises à jour envoyées aux hôtes sur le réseau.
Appliquer des rôles aux hôtes
Commençons par ajouter un hébergeur de serveur nfs. Visitez la page Hôtes, puis cliquez sur le bouton « Ajouter ». Choisissez un nom et cliquez sur le menu déroulant Rôle. Les hôtes (ainsi que les phares et les relais) ne sont autorisés à avoir qu’un seul rôle.
Mise à jour ou création sur cwwk qui contient NFS
1
sudo dnclient enroll -code q_KalMjkPO2cCJMYHAvUSRbQr1pB3FRHK_GkVEyltkQ
Réseau Privé
Réseau nebula CIDR 10.139.100.0/24 créé via defined network web ui
Lighthouses (FACULTATIF)
Chaque réseau comprend déjà un phare géré, donc cette étape est optionnelle. Suivez ce guide si vous préférez gérer votre propre phare pour plus de contrôle sur votre infrastructure réseau.
Dans un réseau de nébuleuses gérées, les hôtes se découvrent via des phares. Pour créer un phare, vous aurez besoin d’un serveur léger sur une adresse IPv4 publique persistante. De plus, vous voudrez utiliser une machine qui est toujours allumée plutôt qu’une plate-forme sans serveur, car le phare est un processus d’état.
Pour commencer à inscrire un phare, visitez la page phares du panneau d’administration et cliquez sur le bouton “ajouter”.
Le formulaire « Ajouter un phare » dans le panneau d’administration. Nécessite un nom, une adresse IP publique, un port et un rôle sélectionnés dans une liste déroulante.
- Name: sxb
- Pubic IP: 164.132.198.38
- Role lighthouse
- Assigner les adresses IPV4 et IPV6 10.139.100.254, fdef:c0:c0:f38:3a0f:d5f9:79a8:254
- Port: 54254
- Role: ajouter role nommé “lighthouse”
Donnez un nom au phare et entrez l’adresse IPv4 publique de la machine et le port que vous avez ouvert pour autoriser les entrées UDP (par défaut 4242). Vous pouvez également attribuer au phare un rôle, qui contrôle le trafic entrant qu’il accepte des autres hôtes - choisissez un rôle existant ou créez-en un nouveau directement à partir de la liste déroulante. Les rôles nouvellement créés n’acceptent que pingdemandes d’autres hôtes, ce qui est pratique pour vérifier la connectivité. Vous pourrez modifier les règles du pare-feu du rôle plus tard si vous le souhaitez.
info: Vous devrez ouvrir le pare-feu de la machine pour le port UDP
4242(ou un autre port configuré) afin que n’importe quel hôte puisse interroger le phare, sur les ports IPv4 et IPv6 pour permettre aux hôtes sur tous les types de réseaux de communiquer.
Maintenant que vous avez créé votre phare, choisissez le système d’exploitation et la version de votre hôte, puis suivez les instructions dans le panneau d’administration pour installer DNClient, démarrez-le en tant que service de démarrage et inscrivez la machine dans le réseau de nébuleuse gérée.
- OS Linux
- APT repository
Linux Debian
1
2
3
4
5
sudo curl -fsSL https://dl.defined.net/gpg.asc -o /etc/apt/keyrings/defined-net.asc
echo "deb [signed-by=/etc/apt/keyrings/defined-net.asc] https://dl.defined.net/stable/apt stable main" | sudo tee /etc/apt/sources.list.d/defined-net.list > /dev/null
sudo apt-get update
sudo apt-get install dnclient
sudo systemctl enable --now dnclient
Puis enroler
1
sudo dnclient enroll -code Z8RD2vhw_Qi6twnNAp_3Utguo773su57RKkwkfs2saU
Roles
ping
pingpour ping entre hosts
user-nfs (parefeu)
user-nfsva servir à paramétrer le parefeu pour ouverture du port 2049 (NFS V4) sur le serveur cwwk
ssh-port-55215 (parefeu)
ssh-port-55215, ouverture du port tcp/55215 (port ssh de la machine proxmox)
Hosts
Host cwwk
Sur l’un des hosts (cwwk debian 13) est installé un serveur NFS V4 pour partager le dossier /sharenfs /etc/exports
1
/sharenfs 10.139.100.0/24(rw,no_root_squash,no_subtree_check)
Le port 2049 (NFV4) est ouvert : 2049/tcp ALLOW IN 10.139.100.0/24
Je souhaite que tous les autres hosts puissent accèder au partager
Comment configurer le host qui détient le serveur NFS ainsi que les autres host
Paramétrage sur “defined network web ui” host, role (parefeu) ,tag, etc…
Créer le host cwwk
- Name: cwwk
- Role:
user-nfspour ouverture du port 2049 - IPV4/IPV6 statique ➔ 10.139.100.1, fdef:c0:c0:f38:3a0f:d5f9:79a8:1
Après toute mofification du host, cliquer sur les
...à droite sur la ligne du host en question puis surEnroll. Copier la ligne de commandesudo ./dnclient enroll -code <ENROLL_CODE>et exécuter sur le host concerné
Autres Hosts
Création
Toutes les autres hosts sont créés de façon identique, adresses IPV4/IPV6 auto assignées
- Name: nom_host
- Role: ping
- Cliquer sur Save
- Select OS (Linux, Mobile , …)
- APT Repository (Debian) ou AUR ‘archlinux)
- Install dnclient
- Enroll host
Si l’opération s’est terminée correctement, on revient sur la page hosts et le host dernièrement créé apparaît dans la liste
Tester le partage NFS
Sur les hosts nouvellement créés, on peut tester le partage NFS
1
2
3
4
5
6
7
8
9
10
# Installer nfs-common
sudo apt install nfs-common -y
# Créer le point de montage
sudo mkdir -p /mnt/sharenfs
# Monter le partage
sudo mount -t nfs4 10.139.100.1:/sharenfs /mnt/sharenfs
# Vérifier
ls /mnt/sharenfs
# Démontage
sudo umount /mnt/sharenfs
Pour un montage permanent
Modifier le fstab
1
sudo nano /etc/fstab
Ajouter la ligne suivante
1
2
# Le montage NFS cwwk réseau privé nebula
10.139.100.1:/sharenfs /mnt/sharenfs nfs4 nofail,x-systemd.automount,x-systemd.device-timeout=10s 0 0
Recharger
1
2
sudo systemctl daemon-reload
sudo mount -a
Vérifier
1
ls /mnt/sharenfs










