DNS: трейлинг-периоды
Когда я редактирую свои записи dns привязки, мне нужно добавить период ожидания для его работы. В чем смысл этого?
Почему, когда я использую everydns.net, они не требуют, чтобы я добавлял конечный период?
Является ли это причудой реализации?
8 ответов
Сам DNS имеет корневую зону. эта зона называется буквально ".". Bind требует, чтобы вы полностью квалифицировали DNS-имя (включая зону. Или корневую зону). Другие пользовательские интерфейсы упрощают это, предполагая для вас корневую зону.
Внутри Bind вы можете определить переменную ORIGIN
, которая будет автоматически добавлена, если вы не укажете полное доменное имя (полное доменное имя , включая трейлинг.). Alnitak имеет отличный пример синтаксиса и различных применений этого.
Конечный '.' делает имя «Полностью квалифицированным доменным именем», то есть абсолютным доменным именем.
В стандартных файлах «файл основного файла», если вы не добавляете конечный «.». то предполагается, что это имя относится к текущему файлу зоны $ORIGIN
(который либо указан в файле зоны, как показано ниже, либо принят из инструкции zone
в named.conf
в противном случае) .
то есть.
$ORIGIN example.com.
mail IN A 192.168.1.1
mail2 IN A 192.168.1.2
server IN A 192.168.1.3
@ IN MX 10 mail ; not FQDN - example.com. appended
IN MX 20 mail2.example.com. ; FQDN
IN MX 30 mail.example.net. ; FQDN in another domain
IN MX 40 mail2.example.net ; ERROR - not FQDN - example.com appended
www IN CNAME server ; not FQDN - example.com. appended
. делает имя относительно корневого, без него оно будет относиться к текущей зоне. Стандартный формат зоны определяется в rfc1035 и rfc1034 .
Почему, когда я использую everydns.net, они не требуйте, чтобы я добавлял трейлинг период?
Является ли это причудой реализации?
Да, похоже, что easydns.net делает это немного причудливо.
Если вы не введете конечный символ "." то сервер добавит значение $ ORIGIN в конец записи. Это может быть очень полезным ярлыком и сэкономить много набрав при правильном использовании.
К сожалению, также легко забыть о "." что может затруднить диагностику проблем.
Технически «.» в конце записи, например, www.serverfault.com. указывает разделитель между gTLD «com» и «корневой зоной».
Конечная точка указывает DNS-серверу, что это полное имя. Точка является корнем DNS-иерархии. Если вы не используете точку, DNS-сервер будет считать, что это запись в текущей зоне и добавит ее для вас. Например, если у вас есть CNAME на exmaple.com, который указывает на host.example.org, когда вы запрашиваете это, вы получите файл host.example.org.example.com, который, вероятно, не тот, который вам нужен.
Причина, по которой вам не приходилось сталкиваться с everydns.net, - это то, что они, вероятно, написали свой интерфейс, поэтому вам не пришлось беспокоиться об этой технической детали.
Оригинальные дизайнеры хотели иметь возможность указывать хосты в файлах зон с минимальным набором символов, поэтому по умолчанию он добавляет зону к каждой записи, если она не полностью соответствует конечной точке. Это реализация quirk, которую реализует everydns.net, приводит к ошибкам и путанице новичков; поэтому они устранили его.
Короткий ответ .. Ну, честно уже здесь было задокументировано. :) В принципе, и кратко изложил: «Это говорит в RFC, помощник».
Посмотрите на эту ссылку
«Нет, эта точка в доменном имени URL-адреса не является ошибкой».