📡 Serveur DHCP/DNS/NAT avec Dnsmasq Link to heading

“Un serveur bien configuré est la base d’une infrastructure réseau fiable.”


🔍 Introduction Link to heading

La mise en place d’un serveur DHCP + DNS + NAT est une compétence essentielle pour tout administrateur réseau. Avec Dnsmasq, nous allons créer un serveur tout-en-un léger et performant.

Dans cette deuxième partie, je vous guide pas à pas pour configurer votre propre serveur avec un domaine personnalisé.


🛠️ Prérequis Link to heading

  • Linux (Debian/Ubuntu)
  • Deux interfaces réseau :
    • eth0 : Connexion Internet (WAN)
    • eth1 : Réseau local (LAN)
  • Accès root (sudo)
  • Connaissances de base en réseau et Linux

🔧 Étape 1 : Configuration des interfaces Link to heading

Fichier : /etc/network/interfaces

# Interface WAN (eth0) - DHCP
auto eth0
iface eth0 inet dhcp

# Interface LAN (eth1) - Statique
auto eth1
iface eth1 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    network 10.0.0.0
    broadcast 10.0.0.255

Redémarrer les interfaces :

sudo systemctl restart networking
# ou
sudo ifdown eth0 eth1 && sudo ifup eth0 eth1

📦 Étape 2 : Installation de Dnsmasq Link to heading

# Mise à jour
sudo apt update

# Installation
sudo apt install dnsmasq -y

# Vérification
dnsmasq --version

⚙️ Étape 3 : Configuration de Dnsmasq Link to heading

Sauvegarder la configuration par défaut :

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
sudo nano /etc/dnsmasq.conf

Configuration complète :

# ==========================================
# CONFIGURATION DNSMASQ
# Serveur DHCP + DNS + NAT
# Domaine : atte-thm.cg
# ==========================================

# ---------- INTERFACE ----------
interface=eth1
listen-address=10.0.0.1
bind-interfaces

# ---------- DHCP ----------
dhcp-range=10.0.0.10,10.0.0.200,12h
dhcp-option=3,10.0.0.1          # Passerelle
dhcp-option=6,10.0.0.1          # DNS
dhcp-option=15,atte-thm.cg      # Domaine
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-authoritative

# ---------- DNS ----------
domain=atte-thm.cg
expand-hosts
local=/atte-thm.cg/

# ---------- Enregistrements DNS ----------
# Serveur
address=/server.atte-thm.cg/10.0.0.1
address=/srv.atte-thm.cg/10.0.0.1

# Services
address=/www.atte-thm.cg/10.0.0.1
address=/mail.atte-thm.cg/10.0.0.1
address=/ftp.atte-thm.cg/10.0.0.1
address=/vpn.atte-thm.cg/10.0.0.1

# Clients statiques (optionnel)
# dhcp-host=00:11:22:33:44:55,client1,10.0.0.10,infinite
# dhcp-host=00:11:22:33:44:66,client2,10.0.0.11,infinite

# ---------- Serveurs DNS externes ----------
no-resolv
server=1.1.1.1          # Cloudflare
server=1.0.0.1          # Cloudflare
server=8.8.8.8          # Google
server=8.8.4.4          # Google

# ---------- Cache ----------
cache-size=1000
neg-ttl=60

# ---------- Logs ----------
log-queries
log-facility=/var/log/dnsmasq.log
log-async

# ---------- Sécurité ----------
domain-needed
bogus-priv

Redémarrer Dnsmasq :

sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq

🔥 Étape 4 : Configuration du NAT Link to heading

Activer le forwarding IP :

# Temporaire
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

# Permanent
sudo nano /etc/sysctl.conf
# Ajouter : net.ipv4.ip_forward=1
sudo sysctl -p

Configurer iptables (NAT) :

# NAT (Masquerade)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Forwarding
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Sauvegarder les règles :

sudo apt install iptables-persistent -y
sudo netfilter-persistent save

🚀 Étape 5 : Tester et vérifier Link to heading

Tester le DHCP :

# Depuis un client
sudo dhclient -v eth1

# Voir les leases
sudo cat /var/lib/misc/dnsmasq.leases

Tester la résolution DNS :

# Depuis le serveur
nslookup server.atte-thm.cg 10.0.0.1
dig server.atte-thm.cg @10.0.0.1

# Depuis un client
ping -c 4 server.atte-thm.cg
ping -c 4 www.atte-thm.cg

Tester le NAT :

# Depuis un client
ping -c 4 8.8.8.8
ping -c 4 google.com
curl -I http://google.com

📊 Vérification complète Link to heading

echo "=== VÉRIFICATION DU SERVEUR ==="

echo -e "\n🔍 Services :"
sudo systemctl status dnsmasq --no-pager

echo -e "\n🔍 Forwarding IP :"
cat /proc/sys/net/ipv4/ip_forward

echo -e "\n🔍 Règles NAT :"
sudo iptables -t nat -L -v | grep MASQUERADE

echo -e "\n🔍 Leases DHCP :"
sudo cat /var/lib/misc/dnsmasq.leases

echo -e "\n🔍 Résolution DNS :"
dig server.atte-thm.cg @10.0.0.1 +short

echo -e "\n🔍 Connectivité Internet :"
ping -c 2 8.8.8.8

echo -e "\n=== VÉRIFICATION TERMINÉE ==="

🔧 Dépannage Link to heading

Problème : Le DHCP ne fonctionne pas

# Vérifier les logs
sudo tail -f /var/log/dnsmasq.log

# Tester la configuration
sudo dnsmasq --test

# Redémarrer
sudo systemctl restart dnsmasq

Problème : Le NAT ne fonctionne pas

# Vérifier le forwarding
cat /proc/sys/net/ipv4/ip_forward
# Doit afficher 1

# Vérifier les règles
sudo iptables -t nat -L -v
sudo iptables -L FORWARD -v

Problème : DNS ne résout pas

# Vérifier resolv.conf
cat /etc/resolv.conf

# Tester directement
nslookup google.com 10.0.0.1

🔐 Sécurisation du serveur Link to heading

Pare-feu UFW :

sudo apt install ufw -y

# Autoriser les services
sudo ufw allow 53/tcp   # DNS
sudo ufw allow 53/udp   # DNS
sudo ufw allow 67/udp   # DHCP
sudo ufw allow 68/udp   # DHCP
sudo ufw allow 22/tcp   # SSH

# Activer
sudo ufw enable

Sécuriser SSH :

sudo nano /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
sudo systemctl restart sshd

📚 Pour aller plus loin (Serveur) Link to heading

  • 🔒 Ajouter un serveur VPN (WireGuard/OpenVPN)
  • 📊 Mettre en place un monitoring (Grafana/Prometheus)
  • 🛡️ Configurer un pare-feu avancé
  • 📝 Mettre en place des backups

📡 Ressources (Serveur) Link to heading


🎯 Conclusion Link to heading

Vous avez maintenant les compétences pour :

Auditer vos réseaux WiFi avec Kali Linux
Sécuriser vos réseaux sans fil
Configurer un serveur DHCP + DNS + NAT avec Dnsmasq
Tester et dépanner votre infrastructure


“La sécurité et l’infrastructure sont les piliers d’un système fiable.” 🔒

Merci d’avoir lu cet article ! N’hésitez pas à partager vos retours. 🔒