DNS сайта LinuxBIND9DNS

DNS-сервер отвечает по IPv4, но недоступен по IPv6

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Проверяйте сначала наличие маршрута и ответа по протоколу IPv6, а затем конфигурацию listen-on-v6 и фильтрацию. Важно не открывать рекурсию в интернет: авторитетные ответы и рекурсивные запросы регулируются отдельно.

В этой статье
  1. Что произошло и как распознать неисправность
  2. Причины и отличительные признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить результат и что делать при неуспехе

#Что произошло и как распознать неисправность

Авторитетный BIND9 правильно отвечает по IPv4, но клиенты не могут получить DNS-ответ с его IPv6-адреса. При этом запись AAAA сайта может быть исправна: она указывает на веб-сервер, а не обязательно на DNS-сервер. Неисправность надо искать в IPv6-адресе самого NS, прослушивании порта 53 и доступности UDP/TCP по IPv6. Проверяйте сначала наличие маршрута и ответа по протоколу IPv6, а затем конфигурацию listen-on-v6 и фильтрацию. Важно не открывать рекурсию в интернет: авторитетные ответы и рекурсивные запросы регулируются отдельно.

#Причины и отличительные признаки

Возможная причинаКак узнатьЧто делать
На интерфейсе нет рабочего IPv6Адрес не назначен или шлюз IPv6 недоступен.ip -6 addr не показывает глобального адреса либо тесты маршрута дают недоступность.Настроить адрес и маршрут с сетевым администратором.
BIND не слушает IPv6В параметре listen-on-v6 задан none или другой адрес.Сокеты показывают только 0.0.0.0:53, а IPv6 нет.Указать нужный адрес прослушивания и проверить конфигурацию.
UDP/TCP 53 заблокирован по IPv6Правила nftables или внешняя фильтрация отличаются от IPv4.На сервере слушатель есть, а запрос с удалённого IPv6 узла ждёт до тайм-аута.Разрешить необходимый входящий DNS для авторитетных запросов.
Неверная AAAA адреса NSУ родительской делегации или в зоне указан старый IPv6.Прямой запрос по текущему IPv6 успешен, но NS через имя ведёт на другой адрес.Согласовать AAAA в зоне и при необходимости glue у регистратора.

#Пошаговая диагностика и исправление

  1. Сравните прямые запросы по обоим протоколамНа компьютере с IPv6 и dig выполните dig -4 @ns1.example.com example.com SOA и dig -6 @ns1.example.com example.com SOA. Замените имя NS и зону на свои. Флаги -4 и -6 выбирают семейство IP клиента; если IPv6 на вашем компьютере вообще недоступен, отсутствие ответа не доказывает ошибку сервера, сначала используйте другую проверочную сеть.
  2. Проверьте реальный IPv6-адрес сервера имёнВ терминале выполните dig ns1.example.com AAAA +short, затем dig -6 @2001:db8::53 example.com SOA, заменив демонстрационный адрес на реальный IPv6 вашего сервера. Если прямой запрос к правильному адресу работает, а через имя — нет, исправляйте AAAA имени NS и возможную glue-запись. Не путайте AAAA NS с AAAA сайта example.com.
  3. Проверьте интерфейсы и маршрутизацию на Linux-сервереПодключитесь по SSH и выполните ip -6 addr show и ip -6 route show. Убедитесь, что нужный глобальный адрес назначен сетевому интерфейсу и маршрут по умолчанию или путь до клиента существует. Адреса только fe80:: являются локальными для канала и не обеспечивают публичную доступность. При отсутствии маршрута не меняйте BIND — сначала требуется исправить сеть или конфигурацию провайдера.
  4. Убедитесь, что named действительно слушает IPv6На сервере с sudo выполните sudo ss -lnutp '( sport = :53 )'. Найдите строку UDP/TCP с IPv6 [::]:53 или конкретным глобальным IPv6. Если есть только IPv4, изучите listen-on-v6 внутри действующей конфигурации BIND и настройки запуска пакета. Права и ограничения рекурсии не зависят от появления слушателя, но могут менять ответы.
  5. Проверьте ограничения и конфигурацию зонВ BIND9 параметр listen-on-v6 определяет IPv6-адреса прослушивания, а allow-query, allow-query-on и views — кому и на каком адресе отвечать. Не заменяйте настройку ограничений на allow-query { any; }; без проверки назначения: публичная авторитетная зона должна быть доступна, рекурсия — только разрешённым сетям. Сохраните копию конфигурации до правки.
  6. Исследуйте firewall для IPv6, не отключая егоНа сервере под sudo выполните sudo nft list ruleset и просмотрите правила family inet/ip6 для входящих UDP 53 и TCP 53. Сопоставьте с адресами источника, которые должны получать ответы. Если локально все работает, но удалённо тайм-аут, дополнительно проверьте правила провайдера. Не очищайте набор nftables целиком, особенно при подключении по SSH.
  7. Внесите точечное исправление и безопасно перечитайте конфигурациюЕсли причина в listen-on-v6 или ACL, исправьте конкретный блок, сохранив резервную копию. Запустите sudo named-checkconf -z; при отсутствии ошибок выполните sudo rndc reconfig. Если проблема была в AAAA, измените запись у авторитетного оператора и дождитесь TTL; новую адресацию NS у регистратора проверьте отдельно. Не перезапускайте DNS-сервер без причин.
  8. Проверьте IPv4, IPv6 и возможность откатаС независимого IPv6-подключения выполните запрос к явному IPv6 NS через dig и дождитесь авторитетного ответа с AA, затем повторите через IPv4. Если IPv6 остаётся недоступен, верните исходную конфигурацию BIND, не меняя работоспособный IPv4, и соберите ss, ip -6 route и сообщения журнала для провайдера. Повторный тест из одной неисправной сети не является достаточным подтверждением.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Проверка из сети с IPv6 без sudo; укажите свой NS и зону.
    Linux · Терминал (Bash)Команда
    Проверка из сети с IPv6 без sudo; укажите свой NS и зону. Только читает DNS.
    dig -6 @ns1.example.com example.com SOA
    Вариант 2На DNS-сервере с sudo: слушатели порта 53 для TCP/UDP, без изменений.
    Linux · Терминал (Bash)КомандаНужен sudo
    На DNS-сервере с sudo: слушатели порта 53 для TCP/UDP, без изменений.
    sudo ss -lnutp '( sport = :53 )'
    Вариант 3На Linux-сервере без sudo: просмотр маршрутов IPv6, без изменений.
    Linux · Терминал (Bash)Команда
    На Linux-сервере без sudo: просмотр маршрутов IPv6, без изменений.
    ip -6 route show

#Как проверить результат и что делать при неуспехе

Результат — авторитетный SOA по конкретному IPv6-адресу DNS-сервера и прежний успешный ответ по IPv4. Если недоступен маршрут от отдельного клиента, проверяйте несколько независимых сетей.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.