BIND: порт 53 занят systemd-resolved
На системах с systemd-resolved порт 53 на адресе 127.0.0.53 уже занят. BIND, настроенный слушать на всех адресах, не может открыть порт и не запускается.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
systemd-resolved держит порт 53
Локальный разрешатель слушает 127.0.0.53:53 и отвечает на запросы программ. BIND на всех интерфейсах с ним конфликтует.
-
BIND и resolved настроены на один адрес
Даже с отключённой заглушкой обе службы могут пытаться слушать один адрес, если настройки пересекаются.
-
Работает другой DNS-сервер
dnsmasq, unbound или контейнер с DNS тоже занимают порт 53.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Кто занимает порт: обычно тут и виден systemd-resolved.
sudo ss -tulnp | grep :53Проверка конфигурации BIND: отсекает вторую версию событий.
sudo named-checkconfНастройки локального разрешателя имён.
resolvectl status | head -12Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Локальный разрешатель слушает 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
- Почему происходит
- Даже с отключённой заглушкой обе службы могут пытаться слушать один адрес, если настройки пересекаются.
- Как проверить
-
Посмотрите настройки прослушивания BIND.
sudo grep -A3 "listen-on" /etc/bind/named.conf.options 2>/dev/null
- Как исправить
- Разведите адреса: BIND на внешние интерфейсы, resolved — на петлевой, либо откажитесь от одной из служб.
- Почему происходит
- 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
Связанные ошибки
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- Apache: could not bind to address Apache не занимает порт: конфликт с nginx, порт занят, нет прав на привилегированный порт.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Docker: имена не разрешаются внутри контейнера Контейнеры не разрешают имена: конфликт с локальным разрешателем, неверные серверы в daemon.json, отключённый проброс.
- PostgreSQL: could not bind IPv4 address Кластер PostgreSQL не занимает порт: адрес занят другим экземпляром или остался файл сокета. Разбор.
- Temporary failure in name resolution в журнале службы Служба не может разрешить имя: не готова сеть, нет сервера имён, мешает изоляция. Разбор при загрузке и в работе.
- Tomcat: порт занят или служба не останавливается Отказы Tomcat: занятые порты приложения и остановки, долгое завершение, права на каталоги.
Где встречается чаще всего
Источники
- Документация BIND 9: listen-on
-
systemd-resolved.service(8)
Заглушка на 127.0.0.53 и параметр DNSStubListener. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на Ubuntu 24.04 с включённым systemd-resolved.