При указании директивы $ 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, указывающей на внешний домен, вы просто добавляете точку.