Прошло несколько дней, когда я изо всех сил старался правильно понять официальную документацию bind9:
http://ftp.isc.org/isc/bind9/cur/9.7/doc/arm/Bv9ARM.html
Есть много руководств по bind9. Однако у меня действительно много проблем с согласованием предлагаемых решений с любым официальным определением SOA RR, которое я могу найти.
Среди прочего я также проверил:
http://en.wikipedia.org/wiki/Resource_record#DNS_resource_records
http://en.wikipedia.org/wiki/List_of_DNS_record_types
http://tools.ietf.org/html/rfc1035#page-12
И, несмотря на все это, я все еще очень не уверен в правильном формате SOA RR.
Многие учебники, кажется, предлагают синтаксис, подобный этому:
example.com. 43200 IN SOA ns1.example.com. other.example.com. (
2011090302 ;Serial Number
86400 ;refresh
7200 ;retry
1814400 ;expire
86400 ;minimum
)
Я не совсем объясняю наличие двух доменов до открытия скобок. Однако, без второго, named-checkzone пожаловался.
Однако именно этот сайт:
http://forums.devshed.com/dns-36/bet-you-want-to-setup-a-dns-server-huh-141940.html
предлагает файл зоны с SOA RR следующим образом:
@ SOA ns1 ( ; ns1.basiczone.com is the primary server for basiczone.com
postmaster ; contact email for basiczone.com is postmaster@basiczone.com
2004041700 ; Serial ID in reverse date format
21600 ; Refresh interval for slave servers
1800 ; Retry interval for slave servers
604800 ; Expire limit for cached info on slave servers
900 ) ; Minimum Cache TTL in zone records
Обратите внимание на отсутствие класса IN. Кроме того, перед открывающей скобкой присутствует только один домен (ns1).
Итак, главный вопрос: какова точная, официальная или наиболее рекомендуемая грамматика для SOA RR? Где эта грамматика определена наиболее точно?
Наконец, когда использовать запись SOA? Насколько я понимаю, мне нужна запись SOA для любого домена, который я хочу разместить и для которого я хочу быть авторитетным сервером имен.
Первое имя после слова SOA - MNAME
, сервер имен, который является полномочным для зоны - например, имя вашего сервера имен.
Второе имя, RNAME
, похоже на доменное имя, но на самом деле это не так. Это строка, которую вы получите, если замените символ «@» на «.» в адресе электронной почты ответственного за зону. (Надеюсь, в вашем адресе электронной почты нет символа «.» Перед знаком «@».)
Для обоих этих имен (и других имен в файлах зоны) само имя зоны добавляется неявно, если только имя не заканчивается точкой: foo
средства foo.example.com
, пока foo.
средства foo
. Распространенная ошибка - писать foo.example.com
, который публикует в мире как foo.example.com.example.com
, когда вы должны были написать foo.example.com.
.
Скобки позволяют вам писать ресурсную запись, занимающую несколько строк в текстовом файле. Один из приведенных вами примеров помещает открывающую скобку между MNAME
и RNAME
, а другой ставит его после RNAME
, но функциональной разницы нет.
«IN» определяет класс «Интернет», который используется по умолчанию, поэтому вы можете не указывать его.
Рекомендуемая грамматика: следуйте пример википедии и используйте такой инструмент, как dig
или dnsq
чтобы показать, что ваш сервер имен на самом деле сообщает миру, вместо того, чтобы тратить слишком много усилий на повторное предположение, как bind анализирует ваш файл зоны.
Точная грамматика: исходный код BIND. (Только если вы действительно пытаетесь быть педантичным - в этом нет необходимости, если вы просто пытаетесь заставить файл зоны работать.)
Официальная грамматика (или, по крайней мере, интернет-эквивалент официальной):
В каждой зоне должна быть SOA. Если вы обслуживаете эту зону («авторитетную» или нет), у вас должна быть SOA вместе со всеми другими записями в зоне. Фактически, если вы пишете файл зоны, поместите туда SOA - и если вы копируете весь файл зоны у кого-то другого, вы получите SOA таким образом, поэтому вам не нужно беспокоиться об этом.