Назад | Перейти на главную страницу

Почему в конфигурационном файле BIND named.conf нет конечной точки для имени зоны?

При указании директивы $ ORIGIN в файле зоны DNS, если то, что вы указываете, является FQDN (полное доменное имя), то по определению оно должно заканчиваться конечной точкой (например, $ORIGIN example.com. вместо того $ORIGIN example.com). Это имеет смысл, поскольку конечная точка однозначно указывает, что «com» ​​или другой домен верхнего уровня является поддоменом корня DNS (который имеет пустое имя или «» и отделен от домена верхнего уровня точкой).

Но в конфигурационном файле BIND (в современных версиях с именем named.conf) имя зоны помечается без конечной точки следующим образом:

zone "example.com" IN {
    type master;
    file "master.example.com";
}

В частности, если директива $ ORIGIN не указана в файле зоны, то $ ORIGIN неявно предполагается (BIND) как имя зоны, указанное в файле named.conf. Из моих наблюдений кажется, что BIND добавляет конечную точку к $ ORIGIN, если это предполагается из имени зоны.

У меня вопрос: почему вы указываете имя зоны без конечной точки? Почему указанное выше название зоны не указано как zone "example.com."? Разве example.com не является технически неоднозначным идентификатором имени зоны?

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

Использование конечной точки действительно используется только внутри файла зоны. Путем автоматического добавления $ORIGIN к любой записи в файле, это избавляет вас от необходимости постоянно вводить имя зоны снова и снова. Если вам действительно нужно использовать полное доменное имя, например, для CNAME, указывающей на внешний домен, вы просто добавляете точку.