Configuration du second réseau
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.
Ce guide ne fonctionne que si votre machine possède deux cartes réseaux ! Si vous voulez en acheter un à un prix raisonnable je vous conseille le DivinPC T9 plus.
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
.
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 68:1d:ef:38:f6:e5 brd ff:ff:ff:ff:ff:ff
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 68:1d:ef:38:f6:e6 brd ff:ff:ff:ff:ff:ff
bob@bastion ~
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 crucial pour le rôle de passerelle
et de serveur DHCP/DNS.
Voici à quoi pourrait ressembler la configuration :
# Interface pour le réseau principal
auto enp1s0
iface enp1s0 inet static
address 192.168.1.92
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.92 192.168.1.1
# Interface pour le réseau secondaire
auto enp3s0
iface enp3s0 inet static
address 192.168.20.1
netmask 255.255.255.0
# Pas de gateway spécifié pour cette interface, car elle ne se connecte pas directement à Internet
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 :
net.ipv4.ip_forward=1
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.
sudo apt install ufw
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.
DEFAULT_FORWARD_POLICY="ACCEPT"
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 :
sudo ufw --force disable
sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
Maintenant nous allons autoriser le flux ssh et dns :
sudo ufw allow ssh
sudo ufw allow dns
sudo ufw allow out to any port 53
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
:
sudo vi /etc/ufw/before.rules
et ajouter ce bloc juste avant *filter
:
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change to match you out-interface
-A POSTROUTING -s 192.168.20.0/24 -o enp1s0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't
# be processed
COMMIT
Activons le service ufw
:
sudo ufw enable
Vérifions son status :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
DNS ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
DNS (v6) ALLOW Anywhere (v6)
53 ALLOW OUT Anywhere
53 (v6) ALLOW OUT Anywhere (v6)
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
:
sudo apt update
sudo apt install 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 :
INTERFACESv4="enp3s0"
INTERFACESv6=""
É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 :
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.10 192.168.20.100;
option routers 192.168.20.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.20.1;
option domain-name "robert.priv";
default-lease-time 600;
max-lease-time 7200;
}
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 :
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server
Je vérifie également les logs pour m'assurer que tout fonctionne comme prévu :
sudo journalctl -u isc-dhcp-server
É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 :
sudo apt update
sudo apt install bind9