Configuration du second réseau
Mise à jour :
Dans mon précédent guide, j’ai abordé la construction d’une machine de rebond sous Debian, un élément important pour sécuriser l’accès à nos machines du Homelab DevOps. Cette machine, équipée de deux cartes réseau, nous a permis de jeter les bases d’un système intermédiaire fiable et sécurisé pour la gestion du trafic réseau. Aujourd’hui, je vais vous guider à travers une suite logique de ce tutoriel : comment configurer cette même machine de rebond pour qu’elle serve non seulement de point de passage, mais également de passerelle Internet pour un réseau secondaire et pour fournir des adresses IP aux machines du second réseau.
Prérequis et matériel nécessaire
Avant de plonger dans la configuration de notre machine de rebond pour fournir un accès Internet et gérer les adresses IP et la résolution de noms, il est essentiel de s’assurer que nous disposons de tout le nécessaire, tant sur le plan matériel que logiciel. Voici ce dont vous aurez besoin :
Matériel
- Un ordinateur sous Debian : Cette machine fera office de serveur de
rebond. Elle doit être équipée de deux cartes réseau. La première sera
connectée à votre réseau principal (dans notre cas, le réseau
192.168.1.0/24
) et la seconde au réseau secondaire (192.168.20.0/24
) qui souhaite accéder à Internet via ce serveur. - Connexion Internet : Naturellement, votre serveur de rebond doit avoir accès à Internet pour pouvoir partager cette connexion avec le réseau secondaire.
- Switch ou routeur pour le réseau secondaire : Cela permettra de connecter plusieurs dispositifs au réseau secondaire et de les gérer via le serveur de rebond.
Connaissances préalables
Il est recommandé d’avoir une compréhension des bases des réseaux IP, du fonctionnement des pare-feux, des serveurs DHCP et des serveurs DNS. Une familiarité avec la ligne de commande Linux et la configuration réseau sur Debian sera également très utile pour suivre ce guide.
Configuration de base de Debian et des cartes réseau
Pour permettre à notre machine de rebond sous Debian de servir efficacement de
passerelle entre notre réseau principal (192.168.1.0/24
) et le réseau
secondaire (192.168.20.0/24
), il est essentiel de commencer par configurer
correctement les interfaces réseau. Cette configuration assure que notre serveur
peut communiquer à la fois avec les dispositifs internes sur les deux
sous-réseaux et avec l’Internet externe. Voici comment je procède pour
configurer les cartes réseau :
Étape 1 : Identification des interfaces réseau
Tout d’abord, je détermine les noms des interfaces réseau en utilisant la
commande ip link show
.
Dans ce guide, je suppose que enp1s0
est l’interface connectée au réseau
principal (192.168.1.0/24
) et que enp3s0
est celle connectée au réseau
secondaire (192.168.20.0/24
).
Étape 2 : Configuration des interfaces réseau
Ensuite, je configure les adresses IP statiques pour les deux interfaces dans le
fichier /etc/network/interfaces
. Cela garantit que notre serveur Debian a une
adresse IP fixe sur chaque réseau, ce qui est indispensable pour le rôle de
passerelle et de serveur DHCP/DNS.
Voici à quoi pourrait ressembler la configuration :
Dans cette configuration, enp1s0
est configurée avec une adresse IP statique
qui lui permet de communiquer avec le réseau principal. La passerelle par défaut
est également définie pour diriger le trafic Internet. Pour enp3s0
, une
adresse IP statique est configurée pour le réseau secondaire, mais sans
passerelle spécifiée, car le trafic Internet passera par enp1s0
.
Étape 3 : Activation du routage IP
Pour permettre à notre serveur de transmettre le trafic entre les deux réseaux
et vers Internet, je dois activer le routage IP. Cela se fait en modifiant le
fichier /etc/sysctl.conf
pour activer le transfert IP :
Après avoir modifié ce fichier, j’applique la modification avec la commande
sysctl -p
.
Étape 4 : Configuration du pare-feu
Il est également nécessaire d’installer et de configurer ufw
pour permettre et
contrôler le trafic entre les réseaux.
Il faut autoriser le forwarding dans la configuration d’ufw. Ouvrez le fichier
/etc/default/ufw
avec un vi. Recherchez la ligne commençant par
DEFAULT_FORWARD_POLICY
. Remplacez la valeur DROP
par ACCEPT
. Enregistrez
le fichier et quittez l’éditeur.
Avant de définir des règles spécifiques pour notre cas de routage, je configure les politiques par défaut de ufw pour refuser tout le trafic entrant et autoriser tout le trafic sortant. Cette configuration de base assure que notre serveur n’accepte pas de connexions non sollicitées, tout en permettant au trafic sortant de circuler librement :
Maintenant nous allons autoriser le flux ssh et dns :
Maintenant ajoutons les règles de forwarding entre l’interface enp3s0
et
enp1s0
pour permettre la mise à jour des packages sur les machines du second
réseau. Il faut édider le fichier /etc/ufw/before.rules
:
et ajouter ce bloc juste avant *filter
:
Activons le service ufw
:
Vérifions son status :
Mise en place de isc-dhcp-server
Après avoir configuré ufw
pour permettre le routage sécurisé entre les
réseaux, l’étape suivante consiste à mettre en place isc-dhcp-server
sur notre
serveur Debian. Ce serveur DHCP distribuera automatiquement des adresses IP, des
masques de sous-réseau, des gateways et des informations de serveurs DNS aux
dispositifs connectés au réseau secondaire. Voici comment je procède pour
configurer isc-dhcp-server
.
Étape 1 : Installation de isc-dhcp-server
Tout d’abord, je commence par installer le paquet isc-dhcp-server
:
Étape 2 : Configuration de l’interface réseau
Ensuite, je configure isc-dhcp-server
pour spécifier sur quelle interface
écouter les requêtes DHCP. Dans notre cas, il s’agit de enp3s0
, l’interface
connectée au réseau secondaire. Je modifie le fichier
/etc/default/isc-dhcp-server
pour y ajouter l’interface :
Étape 3 : Configuration du serveur DHCP
La partie la plus importante de la configuration de isc-dhcp-server
consiste à
définir la plage d’adresses IP à distribuer, ainsi que d’autres options pour le
réseau. Pour cela, je modifie le fichier /etc/dhcp/dhcpd.conf
pour ajouter la
configuration spécifique à notre réseau secondaire :
Dans cette configuration, range
spécifie la plage d’adresses IP disponibles
pour la distribution aux clients DHCP. option routers
définit la passerelle
par défaut, qui est l’adresse IP de notre serveur sur enp3s0
. option domain-name-servers
spécifie le serveur DNS que les clients utiliseront, que
nous avons également configuré pour pointer vers notre serveur Debian, agissant
comme serveur DNS avec bind9
. Les options default-lease-time
et
max-lease-time
définissent la durée de bail par défaut et maximale en
secondes.
Étape 4 : Démarrage et vérification du service
Après avoir configuré le serveur DHCP, je démarre le service et m’assure qu’il n’y a pas d’erreurs :
Je vérifie également les logs pour m’assurer que tout fonctionne comme prévu :
Étape 5 : Test de la configuration DHCP
Pour tester que le serveur DHCP fonctionne correctement, je connecte un dispositif au réseau secondaire et vérifie qu’il reçoit une adresse IP dans la plage définie, ainsi que les informations correctes de passerelle et de serveur DNS.
La mise en place de isc-dhcp-server
permet non seulement de fournir
automatiquement des adresses IP aux dispositifs du réseau secondaire, mais
simplifie également la gestion du réseau en centralisant la distribution des
configurations réseau essentielles.
Configuration de bind9 pour la résolution de noms
Après avoir configuré notre serveur Debian pour distribuer des adresses IP via
isc-dhcp-server
, il est temps de s’assurer que les dispositifs du réseau
secondaire peuvent résoudre les noms de domaine en adresses IP, en configurant
bind9
comme serveur DNS. bind9
est un logiciel de serveur DNS très répandu
et robuste, offrant une grande flexibilité pour gérer la résolution de noms dans
un réseau. Voici comment je procède pour configurer bind9
.
Étape 1 : Installation de bind9
La première étape consiste à installer bind9
sur notre serveur Debian :
Étape 2 : Configuration des zones DNS
bind9
utilise des zones pour gérer la résolution de noms dans différents
domaines. Pour notre réseau secondaire, je crée une zone de recherche directe
pour résoudre les noms de domaine en adresses IP et une zone de recherche
inverse pour faire l’inverse.
Dans un premier temps nous allons générer une clé rndc pour sécuriser le service
bind9
:
Cette commande crée automatiquement une clé rndc et stocke la configuration dans
/etc/bind/rndc.key
. bind9
est configuré par défaut pour utiliser cette clé,
facilitant la gestion sécurisée du serveur DNS.
On poursuit en éditant le fichier de configuration principal de bind9
,
/etc/bind/named.conf.local
, pour y ajouter la clé et nos zones :
Dans cet exemple, robert.priv
est le domaine que j’utilise pour le réseau
secondaire. La zone de recherche inverse est nommée d’après le renversement de
l’adresse IP du réseau secondaire, suivie de in-addr.arpa
, un domaine spécial
utilisé pour les requêtes de recherche inverse DNS.
Étape 3 : Création des fichiers de zone
Après avoir défini les zones dans le fichier de configuration, je crée les
fichiers de zone correspondants en m’inspirant des exemples fournis par bind9
.
Pour la zone de recherche directe (robert.priv.zone
) :
Pour la zone de recherche inverse (20.168.192.in-addr.arpa.zone
) :
Ces fichiers définissent la structure de base pour notre résolution de noms, y compris un enregistrement SOA (Start of Authority), un enregistrement NS (nameserver) pointant vers notre serveur et des enregistrements A ou PTR pour associer des noms de domaine à des adresses IP et vice-versa.
Étape 4 : Vérification et redémarrage de bind9
Après avoir configuré les zones et créé les fichiers de zone, je vérifie la
syntaxe de la configuration avec named-checkconf
et named-checkzone
pour
m’assurer qu’il n’y a pas d’erreurs :
Si tout est correct, je redémarre bind9
pour appliquer les changements :
Étape 5 : Test de la résolution DNS
Pour tester que la résolution DNS fonctionne comme prévu, je peux utiliser dig
ou nslookup
depuis un dispositif du réseau secondaire :
Cela devrait retourner l’adresse IP du serveur (192.168.20.1
), confirmant que
la résolution DNS est correctement configurée.
Étape 6 : Autoriser isc-dhcp-server à ajouter dynamiquement les adresses IP
Modifiez le fichier /etc/dhcp/dhcpd.conf
pour inclure la définition de la clé
et configurer les mises à jour dynamiques :
Après avoir configuré isc-dhcp-server
pour les mises à jour dynamiques,
redémarrez le service:
Étape 7 : Tester la configuration
Pour tester que tout est configuré correctement, connectez un dispositif au
réseau secondaire. Il devrait recevoir une adresse IP de isc-dhcp-server
et un
enregistrement DNS correspondant devrait être créé dans bind9 automatiquement.
Vous pouvez vérifier les enregistrements DNS avec dig ou consulter les logs de
bind9
et isc-dhcp-server
.
Cette configuration permet à isc-dhcp-server
de mettre à jour bind9 avec les
adresses IP attribuées dynamiquement, facilitant la gestion du réseau en
maintenant la correspondance entre les noms de dispositifs et leurs adresses IP
actuelles.
Etape 8 : Mise en place ProxyJump
Pour se connecter directement en ssh
au second réseau depuis votre machine vous
servant de machine d’administration, dans mon cas un pc portable, il faut mettre
en place un ProxyJump
:
Je sais me connecter à la machine de rebond, nommé bastion.robert.local
, et
donc pour accéder aux machines du réseau 192.168.20.*
il suffit de lui dire de
passer par ce bastion avec le paramètre ProxyJump
. Ensuite, tester avec la
commande ssh
d’accéder directement à cette machine et si vous avez bien fait
votre travail tout devrait fonctionner. Plus d’infos sur la configuration client
ssh
Conclusion
Au terme de ce guide, nous avons configuré avec succès un serveur Debian pour
qu’il serve de passerelle Internet à un réseau secondaire, tout en fournissant
des services DHCP et DNS via isc-dhcp-server
et bind9
. Grâce à cette
configuration, les dispositifs du réseau secondaire peuvent désormais obtenir
automatiquement des adresses IP, résoudre les noms de domaine et accéder à
Internet via la machine de rebond. La mise en place de ufw
a permis de
sécuriser le trafic entre les réseaux, en veillant à ce que seules les
communications autorisées puissent transiter. Il ne reste qu’à écrire un
playbook
ansible
réalisant cette configuration.
J’espère que ce guide vous a été utile et qu’il vous a fourni les connaissances
nécessaires pour configurer votre propre serveur Debian comme une passerelle
Internet, ainsi que pour gérer les services DHCP et DNS. N’hésitez pas à adapter
les étapes à votre propre environnement réseau et à explorer davantage les
fonctionnalités avancées de ufw
, isc-dhcp-server
et bind9
pour répondre à
vos besoins spécifiques.
L’administration système et la gestion de réseau sous Linux sont des compétences précieuses et en constante évolution. Continuez à apprendre, à expérimenter et à partager vos découvertes avec la communauté. Bonne configuration!