SystemdDoctor
служба не работает bind dns порты

BIND: порт 53 занят systemd-resolved

На системах с systemd-resolved порт 53 на адресе 127.0.0.53 уже занят. BIND, настроенный слушать на всех адресах, не может открыть порт и не запускается.

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

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

  1. systemd-resolved держит порт 53

    Локальный разрешатель слушает 127.0.0.53:53 и отвечает на запросы программ. BIND на всех интерфейсах с ним конфликтует.

  2. BIND и resolved настроены на один адрес

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

  3. Работает другой DNS-сервер

    dnsmasq, unbound или контейнер с DNS тоже занимают порт 53.

Диагностика

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

Кто занимает порт: обычно тут и виден systemd-resolved.

sudo ss -tulnp | grep :53

Проверка конфигурации BIND: отсекает вторую версию событий.

sudo named-checkconf

Настройки локального разрешателя имён.

resolvectl status | head -12

Решение

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

1. systemd-resolved держит порт 53
Почему происходит
Локальный разрешатель слушает 127.0.0.53:53 и отвечает на запросы программ. BIND на всех интерфейсах с ним конфликтует.
Как проверить
Посмотрите, кто занимает порт.
sudo ss -tulnp | grep :53
Как исправить
Если BIND должен обслуживать сеть, отключите заглушку resolved и настройте систему на использование BIND. Если BIND нужен только для части адресов, ограничьте прослушивание в его настройках.
# /etc/systemd/resolved.conf: DNSStubListener=no
sudo systemctl restart systemd-resolved && sudo systemctl start named
2. BIND и resolved настроены на один адрес
Почему происходит
Даже с отключённой заглушкой обе службы могут пытаться слушать один адрес, если настройки пересекаются.
Как проверить
Посмотрите настройки прослушивания BIND.
sudo grep -A3 "listen-on" /etc/bind/named.conf.options 2>/dev/null
Как исправить
Разведите адреса: BIND на внешние интерфейсы, resolved — на петлевой, либо откажитесь от одной из служб.
3. Работает другой DNS-сервер
Почему происходит
dnsmasq, unbound или контейнер с DNS тоже занимают порт 53.
Как проверить
Посмотрите все процессы на порту.
sudo ss -tulnp | grep :53
systemctl list-units --state=running --no-pager | grep -iE "dns|unbound|dnsmasq"
Как исправить
Оставьте один DNS-сервер на машине: два на одном порту не работают.

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

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

× named.service - BIND Domain Name Server
     Active: failed (Result: exit-code) since Mon 2026-09-15 17:02:41 MSK; 2s ago

named[4600]: could not listen on UDP socket: address in use
named[4600]: creating IPv4 interface lo failed; interface ignored
named[4600]: loading configuration: failure

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

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

Источники

  • Документация BIND 9: listen-on документация программы
    сверено 15 сентября 2026
  • systemd-resolved.service(8)
    Заглушка на 127.0.0.53 и параметр DNSStubListener.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено на Ubuntu 24.04 с включённым systemd-resolved.
    собственная проверка, systemd 255
    сверено 15 сентября 2026