Eu fiz um pouco de pesquisa.
A primeira coisa que aprendi é que é possível atribuir concessões DHCP com base em critérios diferentes de um endereço MAC.
No FAQ do dhcp :
O que é um ID de cliente?
O que é denominado ID do Cliente para os fins do protocolo DHCP é o que for usado pelo protocolo para identificar o computador cliente. Por padrão, as implementações de DHCP normalmente empregam o endereço MAC do cliente para esse fim, mas o protocolo DHCP permite outras opções. Algumas implementações de DHCP têm uma opção de configuração para especificar o ID do cliente que você deseja. Uma alternativa ao endereço MAC é simplesmente uma sequência de caracteres de sua escolha. Em qualquer caso, para que o DHCP funcione, você deve ter certeza de que nenhum outro cliente está usando o ID do cliente que você escolher e deve ter certeza de que o servidor DHCP o aceitará.
Então, embora aparentemente não seja suportado pela interface da web luci no openWRT, o próprio dnsmasq suporta client_id e vários endereços MAC (com alguns cuidados).
Na página do manual dnsmasq :
-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, defina: tag] [, ipaddr] [, hostname] [, lease_time] [, ignore] Especifique por parâmetros de host para o servidor DHCP . Isso permite que uma máquina com um endereço de hardware específico seja sempre alocada com o mesmo nome de host, endereço IP e tempo de concessão. Um nome de host especificado como esse substitui qualquer fornecido pelo cliente DHCP na máquina. Também é permitido omitir o endereço de hardware e incluir o nome do host; nesse caso, o endereço IP e os tempos de concessão serão aplicados a qualquer máquina que reivindique esse nome. Por exemplo --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinito, diz ao dnsmasq para fornecer à máquina o endereço de hardware 00: 20: e0: 3b: 13: af, o nome wap e um infinito Concessão de DHCP. --dhcp-host = lap, 192.168.0.199 diz ao dnsmasq para sempre alocar a máquina no endereço IP 192.168.0.199.
(...)
É permitido usar identificadores de clientes em vez de endereços de hardware para identificar hosts, prefixando com 'id:'. Assim: --dhcp-host = id: 01: 02: 03: 04, ..... refere-se ao host com identificador de cliente 01: 02: 03: 04. Também é permitido especificar o ID do cliente como texto, assim: --dhcp-host = id: clientidastext, .....
(...)
Como um caso especial, é possível incluir mais de um endereço de hardware. por exemplo: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12,192.168.0.2 Isso permite que um endereço IP seja associado a vários endereços de hardware e concede permissão ao dnsmasq abandonar uma concessão de DHCP para um dos endereços de hardware quando outro solicitar uma concessão. Lembre-se de que isso é uma coisa perigosa, pois ele funcionará apenas de maneira confiável se apenas um dos endereços de hardware estiver ativo a qualquer momento e se o dnsmasq não conseguir aplicar isso. É, por exemplo, útil alocar um endereço IP estável para um laptop com interfaces com e sem fio.
Optei pela solução multi-mac (porque não tentei descobrir como poderia especificar o ID do cliente no lado do cliente, o que deve ser feito para cada cliente separado, e a alternativa multi-mac é uma solução para todos os portáteis da casa.)
Eu contornei a interface luci e adicionei diretamente ao /etc/dnsmasq.conf a seguinte linha:
dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf
e /etc/dnsmasq-dhcphosts.conf contém linhas com o seguinte formato:
mac1, mac2, ip
(Eu mantenho essa configuração em um arquivo separado para evitar que ela seja substituída pela próxima atualização.)
Funciona bem.