Post

⚙️🌌Nebula Defined Networking

⚙️🌌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.

  1. 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
  1. 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
  1. 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.

  1. 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
  1. 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, ou stopsous-commandes. Gérer le service avec systemctlà la place. Pour connecter l’hôte à plus d’un réseau, utilisez le dnclient@.serviceune unité de modèle, par exemple sudo 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

Au final

Roles

ping

ping pour ping entre hosts

user-nfs (parefeu)

user-nfs va 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-nfs pour 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 sur Enroll. Copier la ligne de commande sudo ./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

  1. Name: nom_host
    • Role: ping
    • Cliquer sur Save
    1. 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
Cet article est sous licence CC BY 4.0 par l'auteur.