Voici le guide de déploiement d'une miniBox, à partir d'une machine Debian 13 disposant de deux interfaces réseaux (WAN et LAN).
On reprend donc notre debian-core, à laquelle on ajoute une interface réseau. Nous aurons donc
Les commandes ou scripts suivants sont à lancer en root :
sudo -i
192.168.1.1/24nano /etc/network/interfaces
Attention au nom des interfaces qui peuvent varier selon votre contexte. Ci-dessous nous aurons
enp0s3pour le WAN etenp0s8pour le LAN.
Contenu du fichier :
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# LAN
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.1.1/24
# WAN
allow-hotplug enp0s3
iface enp0s3 inet dhcp
On commence par l'interface LAN (statique) puis la WAN (dhcp). Pourquoi ? si le bail DHCP pour WAN tarde à arriver, le service kea-dhcp que l'on met en place ensuite va se lancer alors que l'interface LAN ne sera pas encore up, et le service ne fonctionnera pas. Il faut donc configurer le LAN avant le WAN.
systemctl restart networking
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-ip-forward.conf
sysctl -p /etc/sysctl.d/99-ip-forward.conf
apt update
apt install iptables
# effacement des règles (préventif, pas besoin sur une machine "neuve")
iptables -F
iptables -t nat -F
iptables -t mangle -F
## Supprime les chaînes personnalisées (idem)
iptables -X
## Remet à zéro les compteurs (idem)
iptables -Z
## Politiques par défaut permissives
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.1.0/24 -j MASQUERADE
Pour rendre persistantes les règles.
apt install iptables-persistent
répondre Oui pour enregistrer les règles actuelles.
Si on veut exposer un service depuis le WAN, par exemple tcp/80 sur l'IP 192.168.1.40 :
iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.40:80
On sauvegarde les modifications :
netfilter-persistent save
Maintenant que le routage est en place, ajoutons un service bien utile sur le LAN, un serveur DHCP ; nous utiliserons kea, le remplaçant de l'historique ISC, déprecié.
On installe le service (toujours sudoer) :
apt update
apt install kea-dhcp4-server
nano /etc/kea/kea-dhcp4.conf
Le fichier de configuration kea-dhcp4.conf
192.168.1.0/24enp0s8192.168.1.100 et 192.168.1.1991.1.1.1 et 1.0.0.1 (CloudFlare)Remplacez le contenu par ceci :
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp0s8" ]
},
"lease-database": {
"type": "memfile",
"lfc-interval": 3600
},
"expired-leases-processing": {
"reclaim-timer-wait-time": 10,
"flush-reclaimed-timer-wait-time": 25,
"hold-reclaimed-time": 3600,
"max-reclaim-leases": 100,
"max-reclaim-time": 250,
"unwarned-reclaim-cycles": 5
},
"renew-timer": 900,
"rebind-timer": 1800,
"valid-lifetime": 3600,
"option-data": [
{
"name": "domain-name-servers",
"data": "1.1.1.1, 1.0.0.1"
}
],
"subnet4": [
{
"id": 1,
"subnet": "192.168.1.0/24",
"pools": [ { "pool": "192.168.1.100 - 192.168.1.199" } ],
"option-data": [
{
"name": "routers",
"data": "192.168.1.1"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/var/log/kea/kea-dhcp4.log"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
On relance le service :
systemctl restart kea-dhcp4-server
systemctl status kea-dhcp4-server
Il peut arriver que le service kea se lance trop tôt, avant que l'interface LAN soit active. Dans ce cas, le service semble correct (systemctl status kea-dhcp4-server, mais aucun bail dhcp n'est donnée). On va donc retarder le lancement du service :
systemctl edit kea-dhcp4-server
Ajouter ceci entre les lignes indiquées (### Anything between... et ### Edits below...) :
[Service]
# On attend 10 secondes avant de lancer le programme
ExecStartPre=/usr/bin/sleep 10
Il reste un petit warning (une info en fait) sur le status du service ; pour le faire disparaître on peut faire ce qui est proposé par le message (mais ce n'est pas nécessaire, car moins restrictif) :
chmod 755 /etc/kea/
En cas de pépin, vérifier notamment les droits sur les logs :
mkdir -p /var/log/kea
# donner les droits à l'utilisateur Kea sur ce dossier :
chown _kea:root /var/log/kea
chmod 750 /var/log/kea
Un autre service que l'on peut mettre en place est le DNS, si on veut notamment centraliser certaines résolutions de noms sur le lab ainsi créé. Mais sans ce besoin, inutile s'ajouter le service.
En cas d'installation du service, il faut alors modifier le serveur DNS dans la configuration DHCP (voir à la fin)
sudo apt update
sudo apt install bind9 bind9utils
sudo nano /etc/bind/named.conf.options
Le fichier de configuration :
options {
directory "/var/cache/bind";
// Écouter sur l'interface réseau local uniquement
listen-on { 127.0.0.1; 192.168.1.1; };
listen-on-v6 { none; };
// Permettre les requêtes uniquement du réseau local
allow-query { localhost; 192.168.1.0/24; };
// Configurer les redirecteurs (forwarders)
forwarders {
1.1.1.1;
1.0.0.1;
};
// Activer la récursion pour le réseau local
recursion yes;
allow-recursion { localhost; 192.168.1.0/24; };
// Sécurité et performance
dnssec-validation auto;
auth-nxdomain no;
version none;
};
named.conf.localOuvrez le fichier /etc/bind/named.conf.local et ajoute la définition de votre domaine local (appelons-le par exemple monreseau.local) :
DNS Zone file
zone "monreseau.local" {
type master;
file "/etc/bind/db.monreseau.local";
};
Créez maintenant le fichier /etc/bind/db.monreseau.local (on peut copier le modèle db.local pour gagner du temps) et configurez-le comme ceci :
DNS Zone file
$TTL 604800
@ IN SOA ns1.monreseau.local. admin.monreseau.local. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.monreseau.local.
ns1 IN A 192.168.1.1
; Exemple d'une résolution spécifique
serveurweb IN A 192.168.1.40
named-checkconf # ne doit rien renvoyer si c'est OK
named-checkzone monreseau.local /etc/bind/db.monreseau.local
sudo systemctl restart bind9
sudo nano /etc/kea/kea-dhcp4.conf
Modifier cette section :
"option-data": [
{
"name": "domain-name-servers",
"data": "192.168.1.1"
}
]
Puis on relance les services :
sudo systemctl restart bind9
sudo systemctl restart kea-dhcp4-server
sudo systemctl status bind9
sudo systemctl status kea-dhcp4-server