DHCP personnalisé avec dnsmasq.conf.add

Publié le 16 juin 2026·3’ de lecture

dnsmasq.png

Sur Asus-Merlin (et sans doute d'autres distributions non discutées ici), des attributions DHCP personnalisées peuvent être ajoutées sans modifier la configuration principale. Trois méthodes sont disponibles :

  • Basée sur le nom de l’appareil
  • Basée sur la MAC address avec un tag optionnel
  • Plusieurs adresses MAC pour une même machine (par exemple, un portable avec deux connections possible Wi-Fi ou Ethernet)

Configuration

Pour cela, il suffit de modifier ou créer un fichier dnsmasq.conf.add qui sera automatiquement fusionné avec dnsmasq.conf au démarrage. Le fichier se trouve dans /jffs/configs/ :

vi /jffs/configs/dnsmasq.conf.add

Après l’enregistrement, redémarrez le service dnsmasq pour appliquer immédiatement les changements (aucun redémarrage du routeur n’est nécessaire) :

service restart_dnsmasq

Exemples

Attribuer une IP fixe / nom d’appareil

dhcp-host=mon-laptop,192.168.0.10
dhcp-host=mon-mobile,192.168.0.11

Le nom doit correspondre au hostname que l'appareil transmet dans sa requête DHCP.

Note : Cette méthode ne fonctionne que si l'appareil fournit effectivement un hostname stable. Si l'appareil n'envoie pas de hostname, utilisez plutôt son adresse MAC ou son DHCP client identifier. Attention également aux appareils utilisant une MAC address randomization : si leur adresse MAC change régulièrement, une réservation DHCP basée sur la MAC ne sera pas fiable.

Une IP fixe / adresse MAC

dhcp-host=AA:BB:CC:DD:EE:FF,192.168.0.20,mon-desktop,12h

Format : MAC,IP,hostname,durée-du-bail

Une IP fixe / appareil sur un VLAN spécifique (avec un tag)

dhcp-host=BB:CC:DD:EE:FF:AA,set:guest1,192.168.2.100,tapo-cam,12h

set:guest1 attribue l’appareil au tag guest1 — il s’agit d'un tag interne à dnsmasq, pas d'un VLAN réseau (802.1Q). C’est dnsmasq qui utilise ce tag pour appliquer des options DHCP spécifiques à un groupe d'appareils. L'isolation réseau réelle est gérée par le firewall du routeur, pas par le tag lui-même.

Par exemple, on peut forcer l’utilisation d’un DNS alternatif pour tous les appareils tagués guest1 :

# Cloudflare avec protection malwares
dhcp-option=tag:guest1,6,1.1.1.2,1.0.0.2
 
# Cloudflare avec protection malwares + contenus adultes
dhcp-option=tag:guest1,6,1.1.1.3,1.0.0.3
 
# Forcer les appareils IoT vers un DNS filtrant (Pi-hole, NextDNS) :
dhcp-option=tag:iot,6,192.168.0.5

Le deuxième paramètre (l’option 6) correspond au DNS (primaire + secondaire).

Plusieurs adresses MAC pour une même machine

Utile lorsqu’un appareil possède une interface filaire et une interface sans fil et que vous souhaitez qu’elles obtiennent toujours la même IP :

dhcp-host=AA:BB:CC:DD:EE:FF,11:22:33:44:55:66,192.168.0.50

Les deux adresses MAC seront associées à 192.168.0.50. ⚠️ Attention : Avec cette configuration, il n'est pas permis d'activer Wi-Fi et Ethernet simultanément sur la même machine. dnsmasq attribue l'IP à la première interface qui fait une requête DHCP — si les deux interfaces sont actives en même temps, le routeur ne peut pas garantir que les deux obtiennent la même IP, ce qui peut provoquer des conflits réseau.

Exemple complet

# IP fixe par hostname
dhcp-host=Mon-Mobile,192.168.0.7
dhcp-host=DESKTOP001,192.168.0.121
 
# IP fixe par MAC + tag VLAN
dhcp-host=BB:CC:DD:EE:FF:AA,set:guest1,192.168.2.100,tapo-garden,12h
dhcp-host=CC:DD:EE:FF:AA:BB,set:guest1,192.168.2.101,tapo-kitchen,12h
 
# Plusieurs MAC → même IP
dhcp-host=AA:BB:CC:DD:EE:FF,11:22:33:44:55:66,192.168.1.50

Conseils

  • Les changements prennent effet immédiatement après service restart_dnsmasq — aucun redémarrage nécessaire
  • La durée du bail (12h, 24h, infinite) est facultative — omettez-la pour utiliser la valeur par défaut du routeur
  • Utilisez cat /var/lib/misc/dnsmasq.leases pour voir les baux DHCP actifs
cat /var/lib/misc/dnsmasq.leases
  • Utilisez nslookup ou cat /var/lib/misc/dnsmasq.leases pour tester la résolution DNS locale
nslookup nas.home 192.168.0.1

Commentaires

Les commentaires sont fournis par GitHub via Giscus. En les affichant, vous acceptez que GitHub traite des données conformément à sa politique de confidentialité.