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