J'ai fait un peu de recherche.
La première chose que j'ai apprise est qu'il est possible d'attribuer des baux DHCP en fonction de critères autres qu'une adresse MAC.
De la FAQ dhcp :
Qu'est-ce qu'un identifiant client?
Ce qui est appelé l'ID client aux fins du protocole DHCP est tout ce qui est utilisé par le protocole pour identifier l'ordinateur client. Par défaut, les implémentations DHCP utilisent généralement l'adresse MAC du client à cette fin, mais le protocole DHCP autorise d'autres options. Certaines implémentations DHCP ont une option de configuration pour spécifier l'ID client que vous souhaitez. Une alternative à l'adresse MAC est simplement une chaîne de caractères de votre choix. Dans tous les cas, pour que DHCP fonctionne, vous devez être certain qu'aucun autre client n'utilise l'ID client que vous choisissez et vous devez être sûr que le serveur DHCP l'acceptera.
Ensuite, bien qu'il ne soit apparemment pas pris en charge par l'interface Web de luci sur openWRT, dnsmasq lui-même prend en charge client_id et plusieurs adresses MAC (avec certaines mises en garde).
Depuis la page de manuel dnsmasq :
-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, hostname] [, lease_time] [, ignore] Spécifiez les paramètres par hôte pour le serveur DHCP . Cela permet à une machine avec une adresse matérielle particulière de toujours se voir attribuer le même nom d'hôte, la même adresse IP et la même durée de location. Un nom d'hôte spécifié comme celui-ci remplace tout celui fourni par le client DHCP sur la machine. Il est également possible de supprimer l'adresse matérielle et d'inclure le nom d'hôte, auquel cas l'adresse IP et les durées de location s'appliqueront à toute machine revendiquant ce nom. Par exemple --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite indique à dnsmasq de donner à la machine l'adresse matérielle 00: 20: e0: 3b: 13: af le nom wap, et un infini Bail DHCP. --dhcp-host = lap, 192.168.0.199 indique à dnsmasq de toujours allouer à la machine l'adresse IP 192.168.0.199.
(...)
Il est autorisé d'utiliser des identifiants client plutôt que des adresses matérielles pour identifier les hôtes en préfixant avec 'id:'. Ainsi: --dhcp-host = id: 01: 02: 03: 04, ..... fait référence à l'hôte avec l'identifiant client 01: 02: 03: 04. Il est également autorisé de spécifier l'ID client sous forme de texte, comme ceci: --dhcp-host = id: clientidastext, .....
(...)
Dans un cas particulier, il est possible d'inclure plusieurs adresses matérielles. par exemple: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12,192.168.0.2 Cela permet d'associer une adresse IP à plusieurs adresses matérielles et donne la permission à dnsmasq pour abandonner un bail DHCP à l'une des adresses matérielles lorsqu'une autre demande un bail. Attention, c'est une chose dangereuse à faire, cela ne fonctionnera de manière fiable que si une seule des adresses matérielles est active à tout moment et il n'y a aucun moyen pour dnsmasq de l'imposer. Il est, par exemple, utile d'attribuer une adresse IP stable à un ordinateur portable doté d'interfaces filaires et sans fil.
J'ai opté pour la solution multi-mac (car je n'ai pas essayé de savoir comment je pouvais spécifier l'ID client côté client, ce qui doit être fait pour chaque client séparé, et l'alternative multi-mac est une solution pour tous les portables de la maison.)
J'ai contourné l'interface luci et ajouté directement à /etc/dnsmasq.conf la ligne suivante:
dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf
et /etc/dnsmasq-dhcphosts.conf contient des lignes du format suivant:
mac1, mac2, ip
(Je garde cette config dans un fichier séparé pour éviter de la remplacer par la prochaine mise à jour.)
Fonctionne bien.