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

bind: что такое грамматика SOA RR для файловых зон?

Прошло несколько дней, когда я изо всех сил старался правильно понять официальную документацию 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 таким образом, поэтому вам не нужно беспокоиться об этом.