DNS на WB

Здравствуйте! Хочу поднять на контроллере (7.4) DNS, точнее нужно просто одному устройству из сети подсовывать по адресу не внешний IP, а локальный, где будет подменный сервер для управления устройством(На роутере это настроить оказалось проблематично, поэтому для этого устройства ДНС хочу сделать через контроллер WB). На контроллере вижу установленный dnsmasq, но он не запускается

# systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/dnsmasq.service.d
             └─99-disable-if-not-configured.conf
     Active: inactive (dead) (Result: exec-condition) since Fri 2025-10-17 08:08:29 UTC; 3h 37min ago
    Process: 1854 ExecCondition=/usr/lib/wb-nm-helper/disable-if-not-configured.sh (code=exited, status=1/FAILURE)
        CPU: 57ms

Oct 17 08:08:29 wirenboard-A47OFNVJ systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Oct 17 08:08:29 wirenboard-A47OFNVJ systemd[1]: dnsmasq.service: Control process exited, code=exited, status=1/FAILURE
Oct 17 08:08:29 wirenboard-A47OFNVJ systemd[1]: dnsmasq.service: Skipped due to 'exec-condition'.
Oct 17 08:08:29 wirenboard-A47OFNVJ systemd[1]: Condition check resulted in dnsmasq - A lightweight DHCP and caching DNS server being skipped.

Собственно вопрос, нужно ли реанимировать dnsmasq и как, или это какие-то легаси-остатки и лучше поднять новый dns(типа bind9) ?

Добрый день!
На контроллере dnsmasq не запускается специально: не проходит проверка допустимого условия запуска, из вашего лога:

Process: 1854 ExecCondition=/usr/lib/wb-nm-helper/disable-if-not-configured.sh (code=exited, status=1/FAILURE)

dnsmasq обслуживает, например, Wi-Fi клиентов, подключенных к контроллеру.

Чтобы не ломать внутренние механизмы, для такой простой задачи, думаю, проще поставить unbound (apt update && apt install unbound) и сконфигурировать, чтоб он слушал только на интерфейсе локальной сети.

Проверил на своем контролере, работает.
В файле /etc/unbound/unbound.conf пришлось закоометировать
#include-toplevel: “/etc/unbound/unbound.conf.d/*.conf”

а в файле /etc/unbound/unbound.conf.d/local-only.conf
записал примерно такое для настроек локального интерфейса:

server:
    interface: 192.168.1.235@53

    access-control: 192.168.1.0/24 allow

    local-zone: "google.com." redirect
    local-data: "google.com. 60 IN A 192.168.1.111"
    local-zone: "www.microsoft.com." redirect
    local-data: "www.microsoft.com. 60 IN A 192.168.1.112"

    local-zone: "." refuse

Спасибо! Попробую

Благодарю! Получилось!

А я все же решил “ломать внутренние механизмы” и просто убрал запуск этого скрипта проверки, переименовав файл стартующего этот скрипт в /usr/lib/systemd/system/dnsmasq.service.d/99-disable-if-not-configured.conf.bak

После чего системный dnsmasq попытался стартовать, но так как в его настройках был указан interface=wlan1, который у меня был в этот момент отключен, то получал ошибку на старте службы. Также в том же файле настроек были какие-то “хвосты” для настройки dhcp-сервера, видимо, от предыдущей версии контроллера, где не использовался NetworkManager.

В общем, после того как я закоментировал в /etc/dnsmasq.conf следующее:
#interface=wlan1

#dhcp-range=192.168.42.50,192.168.42.150,12h

И добавил свои настройки в него же:

interface=eth0

dhcp-range=10.42.0.10,10.42.0.100,12h

Все заработало так, как мне было надо. Теперь в системе работают два инстанса dnsmasq, один из которых управляется NetworkManager и отвечает за dhcp-сервер для встроенной точки доступа wi-fi, а второй - управляется системой (systemd) и раздает мне адреса из другого диапазона в проводной интерфейс eth0.

root@wirenboard-AN3NH7NU:~# ss -tulnp | grep 67
udp UNCONN 0 0 0.0.0.0:67 0.0.0.0:* users:((“dnsmasq”,pid=2273,fd=4))
udp UNCONN 0 0 0.0.0.0:67 0.0.0.0:* users:((“dnsmasq”,pid=1454,fd=4))
tcp LISTEN 0 10 *:6720 : users:((“knxd”,pid=1998,fd=4),(“systemd”,pid=1,fd=57))
root@wirenboard-AN3NH7NU:~# ps -f -p 1454
UID PID PPID C STIME TTY TIME CMD
nobody 1454 482 0 11:24 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/dev/null --no-hosts --keep-in-foreground --bind-interfaces --except-interface=lo --clear-on-reload --stric
root@wirenboard-AN3NH7NU:~# ps -p 482
PID TTY TIME CMD
482 ? 00:00:17 NetworkManager
root@wirenboard-AN3NH7NU:~# ps -f -p 2273
UID PID PPID C STIME TTY TIME CMD
dnsmasq 2273 1 0 11:24 ? 00:00:01 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=
root@wirenboard-AN3NH7NU:~# ps -p 1
PID TTY TIME CMD
1 ? 00:00:09 systemd

Ах, да. Забыл указать, что также перевел сам интерфейс eth0 из режима shared (общий с другими компьютерами) в режим manual (Статический IP-адрес), чтобы не возникало конфликтов за 67 порт со вторым инстансом службы dnsmasq, который в режиме shared обслуживает wi-fi сеть.