Я провел небольшое исследование.
Первое, что я узнал, это то, что можно назначать аренду DHCP на основе критериев, отличных от MAC-адреса.
Из dhcp FAQ :
Что такое идентификатор клиента?
Идентификатор клиента для целей протокола DHCP называется тем, что используется протоколом для идентификации клиентского компьютера. По умолчанию реализации DHCP обычно используют MAC-адрес клиента для этой цели, но протокол DHCP допускает другие варианты. В некоторых реализациях DHCP есть опция настройки, позволяющая указать желаемый идентификатор клиента. Одной альтернативой MAC-адресу является просто строка символов на ваш выбор. В любом случае, чтобы DHCP работал, вы должны быть уверены, что ни один другой клиент не использует выбранный вами идентификатор клиента, и вы должны быть уверены, что DHCP-сервер его примет.
Затем, хотя он, очевидно, не поддерживается веб-интерфейсом luci в openWRT, сам dnsmasq поддерживает client_id и несколько MAC-адресов (с некоторыми предостережениями).
Со страницы руководства dnsmasq :
-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, установить: тег] [, ipaddr] [, имя хоста] [, lease_time] [, игнорировать] Указать параметры каждого хоста для сервера DHCP , Это позволяет машине с определенным аппаратным адресом всегда назначать одно и то же имя хоста, IP-адрес и время аренды. Указанное здесь имя хоста переопределяет любое имя, предоставленное клиентом DHCP на компьютере. Также допустимо пропускать аппаратный адрес и включать имя хоста, и в этом случае IP-адрес и время аренды будут применяться к любой машине, претендующей на это имя. Например, --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite сообщает dnsmasq дать компьютеру с аппаратным адресом 00: 20: e0: 3b: 13: af имя wap и бесконечный Аренда DHCP. --dhcp-host = lap, 192.168.0.199 указывает dnsmasq всегда выделять машине круг IP-адрес 192.168.0.199.
(...)
Разрешается использовать идентификаторы клиентов, а не аппаратные адреса, чтобы идентифицировать хосты, используя префикс «id:». Таким образом: --dhcp-host = id: 01: 02: 03: 04, ..... ссылается на хост с идентификатором клиента 01: 02: 03: 04. Также можно указывать идентификатор клиента в виде текста, например: --dhcp-host = id: clientidastext, .....
(...)
В качестве особого случая можно включить более одного аппаратного адреса. Например: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12 192.168.0.2. Это позволяет IP-адресу связываться с несколькими аппаратными адресами и дает разрешение dnsmasq. отказаться от аренды DHCP на один из аппаратных адресов, когда другой запрашивает аренду. Помните, что это опасная вещь, она будет надежно работать только в том случае, если в любой момент активен только один из аппаратных адресов, и dnsmasq не сможет применить это. Например, полезно выделить стабильный IP-адрес для ноутбука, который имеет как проводной, так и беспроводной интерфейсы.
Я выбрал решение для Multi-Mac (потому что я не пытался выяснить, как я могу указать идентификатор клиента на стороне клиента, что необходимо сделать для каждого отдельного клиента, и альтернатива для Multi-Mac одно решение для всех портативных компьютеров в доме.)
Я обошел интерфейс luci и добавил в /etc/dnsmasq.conf следующую строку:
DHCP-hostsfile = / и т.д. / Dnsmasq-dhcphosts.conf
и /etc/dnsmasq-dhcphosts.conf содержит строки следующего формата:
mac1, mac2, ф
(Я храню этот конфиг в отдельном файле, чтобы предотвратить его перезапись при следующем обновлении.)
Работает отлично.