SystemdDoctor
служба не работает разрешение имён сеть порты

dnsmasq: failed to create listening socket for port 53

На системах с systemd-resolved порт 53 занят его слушателем на петлевом адресе. Попытка поднять dnsmasq на том же адресе отказывает. Полностью отключать встроенную службу не обязательно: достаточно освободить порт и оставить ей работу с локальными запросами.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Слушатель встроенной службы занимает порт

    systemd-resolved слушает петлевой адрес на порту разрешения имён. Второму процессу тот же адрес не достанется.

  2. dnsmasq слушает все адреса и упирается в занятый

    Без явного указания адреса служба пытается занять все, включая тот, где уже есть слушатель.

  3. Файл разрешения имён перезаписывается

    После разведения служб остаётся вопрос, кого спрашивает сама система. Ссылка на файл может вести к встроенной службе.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Кто слушает порт разрешения имён.

sudo ss -ulnp | grep :53

Какие службы разрешения имён работают одновременно.

systemctl is-active systemd-resolved dnsmasq

Как система разрешает имена сейчас.

resolvectl status | head -15

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Слушатель встроенной службы занимает порт
Почему происходит
systemd-resolved слушает петлевой адрес на порту разрешения имён. Второму процессу тот же адрес не достанется.
Как проверить
Посмотрите, кто держит порт.
sudo ss -ulnp | grep :53
systemctl is-active systemd-resolved
Как исправить
Отключите слушатель встроенной службы параметром DNSStubListener=no и перезапустите её. Сама служба продолжит работать для локальных запросов.
[Resolve]
DNSStubListener=no
2. dnsmasq слушает все адреса и упирается в занятый
Почему происходит
Без явного указания адреса служба пытается занять все, включая тот, где уже есть слушатель.
Как проверить
Посмотрите настройки прослушивания.
grep -hE "^(listen-address|interface|bind-interfaces)" /etc/dnsmasq.conf /etc/dnsmasq.d/* 2>/dev/null
Как исправить
Укажите конкретные адреса прослушивания и привязку к интерфейсам. Это правильнее, чем отключать встроенную службу целиком.
3. Файл разрешения имён перезаписывается
Почему происходит
После разведения служб остаётся вопрос, кого спрашивает сама система. Ссылка на файл может вести к встроенной службе.
Как проверить
Посмотрите, куда ведёт файл разрешения имён.
ls -l /etc/resolv.conf; head -3 /etc/resolv.conf
Как исправить
Направьте файл на нужный слушатель. Менять его содержимое вручную бесполезно: он перезаписывается при следующем изменении сети.

Пример вывода

Порт занят слушателем встроенной службы. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

dnsmasq[4800]: failed to create listening socket for port 53: Address already in use
dnsmasq[4800]: FAILED to start up
systemd[1]: dnsmasq.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

Связанные ошибки

Где встречается чаще всего

Источники

  • resolved.conf(5)
    Параметр DNSStubListener= и слушатель на петлевом адресе.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Документация dnsmasq документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено запуском dnsmasq при работающем слушателе встроенной службы.
    собственная проверка, systemd 255
    сверено 15 сентября 2026