Ho fatto un po 'di ricerche.
La prima cosa che ho imparato è che è possibile assegnare i lease DHCP in base a criteri diversi da un indirizzo MAC.
Dalle FAQ su dhcp :
Che cos'è un ID cliente?
Quello che viene definito l'ID client ai fini del protocollo DHCP è tutto ciò che viene utilizzato dal protocollo per identificare il computer client. Per impostazione predefinita, le implementazioni DHCP in genere utilizzano l'indirizzo MAC del client per questo scopo, ma il protocollo DHCP consente altre opzioni. Alcune implementazioni DHCP hanno un'opzione di installazione per specificare l'ID client desiderato. Un'alternativa all'indirizzo MAC è semplicemente una stringa di caratteri a scelta. In ogni caso, affinché DHCP funzioni, è necessario essere certi che nessun altro client stia utilizzando l'ID client scelto e che il server DHCP lo accetti.
Quindi, sebbene apparentemente non sia supportato dall'interfaccia web di luci su openWRT, dnsmasq stesso supporta client_id e più indirizzi MAC (con qualche avvertimento).
Dalla pagina man di dnsmasq :
-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, hostname] [, lease_time] [, ignore] Specifica i parametri per host per il server DHCP . Ciò consente a una macchina con un determinato indirizzo hardware di assegnare sempre lo stesso nome host, indirizzo IP e tempo di leasing. Un nome host specificato in questo modo sostituisce qualsiasi fornito dal client DHCP sulla macchina. È anche possibile inserire l'indirizzo hardware e includere il nome host, nel qual caso l'indirizzo IP e i tempi di noleggio si applicheranno a qualsiasi macchina che rivendichi quel nome. Ad esempio --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite dice a dnsmasq di dare alla macchina l'indirizzo hardware 00: 20: e0: 3b: 13: af il nome wap e un infinito Leasing DHCP. --dhcp-host = lap, 192.168.0.199 dice a dnsmasq di allocare sempre sul giro macchina l'indirizzo IP 192.168.0.199.
(...)
È consentito utilizzare identificativi client anziché indirizzi hardware per identificare gli host con il prefisso "id:". Pertanto: --dhcp-host = id: 01: 02: 03: 04, ..... si riferisce all'host con identificativo client 01: 02: 03: 04. È anche consentito specificare l'ID client come testo, in questo modo: --dhcp-host = id: clientidastext, .....
(...)
Come caso speciale, è possibile includere più di un indirizzo hardware. ad es .: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12.192.168.0.2 Ciò consente di associare un indirizzo IP a più indirizzi hardware e concede l'autorizzazione dnsmasq abbandonare un lease DHCP a uno degli indirizzi hardware quando un altro richiede un lease. Attenzione che questa è una cosa pericolosa da fare, funzionerà in modo affidabile solo se uno degli indirizzi hardware è attivo in qualsiasi momento e non c'è modo per dnsmasq di imporlo. Ad esempio, è utile allocare un indirizzo IP stabile a un laptop con interfacce sia cablate che wireless.
Ho optato per la soluzione multi-mac (perché non ho provato a scoprire come avrei potuto specificare l'id client sul lato client, cosa che deve essere fatta per ciascun client separato, e l'alternativa multi-mac è una soluzione per tutti i portatili in casa.)
Ho eluso l'interfaccia di luci e ho aggiunto direttamente a /etc/dnsmasq.conf la seguente riga:
dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf
e /etc/dnsmasq-dhcphosts.conf contiene righe del seguente formato:
MAC1, mac2, ip
(Conservo questa configurazione in un file separato per evitare che venga sovrascritto dal prossimo aggiornamento.)
Funziona bene.