BIND 9.16.1-Ubuntu ‘::1/64′: несоответствие адреса и длины префикса ’64’

Вопрос или проблема

Я настроил новый сервер Ubuntu 20.04 и установил BIND 9.16.1-Ubuntu. Затем я скопировал конфигурацию BIND с моего старого сервера на Ubuntu 16.04.7, на котором работает BIND 9.10.3-P4-Ubuntu.

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

/etc/bind/named.conf.options:15: '::1/64': несоответствие адреса/длины префикса '64'

Вот мой файл /etc/bind/named.conf.options.

options {
        directory "/var/cache/bind";
        dnssec-validation auto;
        auth-nxdomain no;

        dump-file "/var/cache/bind/named_dump.db";
        statistics-file "/var/cache/bind/named.stats";

        listen-on port 53 { 0.0.0.0/0; };
        listen-on-v6 port 53 { any; };
        allow-query { 0.0.0.0/0; ::/0; };
        version "DNS";

        allow-recursion {
                127.0.0.0/8;            ::1/64;
                10.10.0.0/24;           1000:1000:1000:1000::/56;
        };

        allow-transfer {
                127.0.0.1;              ::1;
        };

        disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa";

        notify yes;
        masterfile-format text;
};

Что не так с этим префиксом?

Что изменилось в BIND 9.16, если тот же файл прекрасно работает с BIND 9.10?

Во многих местах в опциях вы можете управлять тем, какие устройства или какие сети могут взаимодействовать с DNS-сервером.
При указании единственного IP-адреса вам необходимо использовать либо двоичную маску из всех 1, длиной 32 бита для IPv4 (CIDR /32) и 128 бит для IPv6 (CIDR /128), либо опустить маску.
Если вы указываете сеть, не следует переусердствовать с ее описанием.

::1 — это IP-адрес, в то время как маска /64 предполагает сеть, поэтому маска переусердствована.
Если вы хотите использовать IP-адрес ::1, маска должна быть /128 или опущена, как в разделе “allow-transfer”.

Подсеть 1000:1000:1000:1000::/56 некорректна, потому что она из диапазона, зарезервированного IETF.

Глобальные униicast-адреса находятся в диапазоне 2000::/3,
Уникальные локальные униicast-адреса fc00::/7,
Link-scoped униicast-адреса fe80::/10,
Мультикаст ff00::/8.
Другие адреса зарезервированы.
Если вы не используете IPv6 в своей сети, я рекомендую удалить их из вашей конфигурации.

Ответ или решение

Проблема, с которой вы столкнулись, связана с использованием неверной маски подсети для адреса ::1 в вашем конфигурационном файле BIND. Ошибка address/prefix length mismatch '64' указывает на то, что вы пытаетесь применить маску подсети /64 к адресу, который является адресом самого хоста (localhost), и для IPv6 это должен быть адрес с маской /128.

Вот основные моменты, которые следует учесть:

  1. Корректная маска для адреса ::1:
    Адрес ::1 — это специальный адрес IPv6 для ссылки на локальный хост (localhost). При его использовании, маска подсети должна быть /128, или вы можете полностью опустить маску, как в частях вашего конфигурационного файла allow-transfer. Исправьте строку в allow-recursion следующим образом:

    allow-recursion {
       127.0.0.0/8;            ::1;  // исправлено
       10.10.0.0/24;           1000:1000:1000:1000::/56;  // дополнительное исправление предложено ниже
    };
  2. Сетевые адреса:
    Адрес 1000:1000:1000:1000::/56 находится в диапазоне зарезервированных адресов IETF и не является корректным глобальным уникальным адресом. Если вы используете адреса IPv6, убедитесь, что они попадают в диапазон глобальных уникальных адресов, который начинается с префикса 2000::/3, или в диапазон уникальных локальных адресов (fc00::/7). Если эти адреса не предназначены для использования в вашей сети, рекомендуется либо удалить эту запись, либо заменить её на корректный адрес.

  3. Рекомендации по слабой поддержке IPv6:
    Если вы не используете IPv6 в вашей сети, вы можете полностью исключить настройки для IPv6 из вашего конфигурационного файла. Это упростит вашу конфигурацию и уменьшит возможности возникновения подобных ошибок.

В результате исправленная часть конфигурационного файла named.conf.options может выглядеть так:

allow-recursion {
    127.0.0.0/8;            ::1;   // скорректировано
    10.10.0.0/24;           // удален некорректный адрес
};

// и так далее...

После внесения этих изменений сохраните файл и перезапустите BIND, чтобы применить изменения:

sudo systemctl restart bind9

Эти шаги должны устранить проблемы в конфигурации и позволить вашему серверу DNS успешно запуститься.

Оцените материал
Добавить комментарий

Капча загружается...