Я трохи провів дослідження.
Перше, що я дізнався, це те, що можна призначати оренду DHCP на основі критеріїв, відмінних від MAC-адреси.
З FAQ про dhcp :
Що таке ідентифікатор клієнта?
Ідентифікатор клієнта для цілей протоколу DHCP - це те, що використовується протоколом для ідентифікації клієнтського комп'ютера. За замовчуванням реалізація DHCP зазвичай використовує MAC-адресу клієнта для цієї мети, але протокол DHCP дозволяє інші варіанти. У деяких реалізаціях DHCP є опція настройки, щоб вказати потрібний ідентифікатор клієнта. Однією з альтернатив MAC-адреси є просто символьна рядок на ваш вибір. У будь-якому випадку, щоб DHCP функціонував, ви повинні бути впевнені, що жоден інший клієнт не використовує вибраний вами ідентифікатор клієнта, і ви повинні бути впевнені, що сервер DHCP прийме його.
Тоді, хоча це, мабуть, не підтримується веб-інтерфейсом luci на openWRT, сам dnsmasq підтримує client_id та кілька MAC-адрес (з певною обережністю).
Зі сторінки dnsmasq man :
-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, ім'я хоста] [, lease_time] [, ігнорувати] Вкажіть параметри хоста для сервера DHCP . Це дозволяє машині з певною апаратною адресою завжди мати однакове ім'я хоста, IP-адресу та час оренди. Ім'я хоста, вказане таким чином, переосмислює будь-яке, що надається клієнтом DHCP. Також можна опустити апаратну адресу та включити ім'я хоста, і в цьому випадку IP-адреса та терміни оренди застосовуватимуться до будь-якої машини, яка претендує на це ім’я. Наприклад --dhcp-host = 00: 20: e0: 3b: 13: af, wap, нескінченно повідомляє 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 = / etc / dnsmasq-dhcphosts.conf
та /etc/dnsmasq-dhcphosts.conf містить рядки наступного формату:
mac1, mac2, ip
(Я зберігаю цю конфігурацію в окремому файлі, щоб запобігти перезапису наступного оновлення.)
Добре працює.