Запуск named.

Программа, которая обеспечивает обслуживание имени области на   большинстве Unix машин обычно называется named. Эта программа   первоначально  разработанна  для  BSD  обеспечения клиентуры, и ,возможно,   для  других  серверов.  Эта  версия  в настоящее время используется на большинстве Linux  инст аляционных  пакетов, как мне кажеться это BIND

4.8.3. Новая версия, BIND-4.9.3, тестируется бетой в этот момент, и должна   быть скоро доступна на Linux.
Этот раздел требует некоторого понимания как работает Domain   Name  System. Если следующее изложение будет  не  совсем  Вам  понятно,  то   Вам  следует перечитать главу 3., которая имеет более подробную  информацию   по  основам DNS.
Named обычно запускается при начальной загрузке сичтемы,  и  работает   пока машина вновь не перезагрузится. Она черпает информацию из   конфигурационного файла называемого /etc/named.boot, и из различных файлов,   которые  содержат набор данных имен областей адресов. Далее они будут   называться  zone files. Форматы и семантика этих файлов будут объяснены в   следующем разделе.   Для запуска named, просто введите в командной строке:

# /usr/sbin/named

Появится named, читает  named.boot  файл  и  zone  file,   установленные  там. Он  записывает    идентичность    процесса    id    к   /var/run/named.pid в  ASCII,  выгружая любые  zone  files  из  основных   серверов, в случае необходимости запускает  listening  на  порт  53  для   запросов DNS. (1)   


Файл named.boot.

Файл named.boot в основном очень мал и содержит еще немного   информации,  но содержит  указатели на главные файлы, содержащие zone   информацию, и указатели к другим серверам. Комментарии в файле начальной   загрузки  начинаются  с  точки  с  запятой  и простираются вплоть до   следующей линии.  
Кэш и основные команды, показанные в этом примере  загружают   информацию  в named. Эта информация берется из главного файла,   определенного  во  втором аргументе. Он  содержат  текстовые  представления   DNS  источника  записи, которые мы рассмотрим ниже.   
1. Имеются различные named  binaries  касающиеся  Linux  FTP  sites,   каждые из которых не намного, но  отличаются  друг  от  друга.  Некоторые   имеют свой собственный pid файл, некоторые хранят его в /tmp или /var/tmp.   2. Заметьте, что имена областей в этом примере даны без конечной   точки. Более ранние версии named принимают конечные точки в named.boot за   ошибку, и их отбрасывают. BIND-4.9.3, как уже упоминалось, устраняет это.  

; /etc/named.boot file for vlager.vbrew.com

directory     /var/named
domain                   file
;---------------------------------------------------
cache         .                        named.ca
primary       vbrew.com                named.hosts
primary       0.0.127.in-addr.arpa     named.local
primary       72.191.in-addr.arpa      named.rev

В этом примере, мы сконфигурировали named  как  основной  сервер  для   трех областей, как обозначено основными операторами в  конце  файла.   Первая  из этих строк, например, инструктирует named действовать как   основной  сервер для vbrew.com, принимая zone данные из файла  named.hosts.   Ключевое  слово каталога сообщает ему, что все zone files размещаются в   /var/named.   
Кеш запись очень особа и должна присутствовать фактически на  всех   машинах, запускающих сервер. Его функция - двукратная: она инструктирует   named  для отмены кэша, и загружает основной сервер hints  из  кэш  файла   (named.ca  в нашем примере). Мы вернемся к серверам hints ниже.

Также  имеется  список  наиболее  важных  опций, которые   Вы   можете   использовать named.boot:   

  • directory - определяет директорию, в которой zone files постоянно   находятся. Имена файлов  могут  быть  даны  относительно  этой   директории.Несколько  директорий  могут  быть  определены    неоднократно   используя directory. Согласно стандарту Linux filesystem, эта директория   должна быть /var/named.   
  • primary  - берет  имя  области  и  имя  файла  как  аргумент,   объявленный  локальным  сервером  авторитарно  для  named  области. Как   основной сервер, named загружает zone информацию из данного главного файла.   

В основном будет всегда, по крайней мере хотя бы  одна  основная   запичь  в каждом boot-файле, а именно для обратного  отбора  сети   127.0.0.0,  которая является локальной замкнутой сетью.

  • secondary  - берет имя области, список адресов, и имя файла как   аргумент. Он объявляет локальный сервер вторичным главным сервером для   установленной области.Вторичный сервер задерживает авторитарные данные   поступающие  на  область, но он не собирает их из файла, и пробует   загрузить их  из  основного сервера. IP адрес, по крайней мере одного   основного  сервера,  должен  быть дан named(у) в списке адресов. Локальный   сервер войдет в контакт  с  каждым из них, пока он успешно не перенесет всю   зональную базу данных,  которая  затем будет сохранена в файле с резервной   копией,  данной  как  третий  аргумент. Если  ни  один  из  основных   серверов  не  отвечает,то  зональные   данные восстановятся из файла с   резервной копией взамен.named затем пытается обновить зональные данные  в   постоянные  интервалы. Это объясняется ниже с SOA типом записи.   
  • cache -Эта опция берет область и имя файла как аргументы.  Этот файл   содержит подсказки сервера hints, который является списком  записей,   указывающих  на серверы. Но только NS и А записи будут признаны. Аргумент   области, в основном ,- источник имени области.Эта очень важно: если кэш   оператор не  пояляется в boot-файле, named не начинает  разрабатывать   локальный  кэш  вообще.  Это  строго ухудшит характеристику и увеличит   сетевую загрузку,  если  следующий  сервер делает запрос не на локальную   сеть. Кроме того,  named  не  будет  способен достичь всех серверов, и   таким образом это не  решит  проблему  адресов  за исключением тех, которые   авторитарны. Исключение из  этого  правила  -  это когда используются   серверы пересылки  (опция  механизмов  продвижения  дана ниже).
  •   forwarders -Этот оператор берет список адреса как аргумент.  IP   адреса в этом списке точно определяют список серверов, на  которые  named   может  сделать запрос, решается ли запрос из его локального  кэша.  Они   тестируются  по порядку, пока один из них не отвечает на запрос. 
  •  slave - это оператор делает главный сервер подчиненным сервером. То   есть  он никогда не будет выполнять рекурсивные запросы  самостоятельно, и   будет  только направлять их к серверам определенных с forwarders   оператором.

Имеются две опции, которые мы не будем описывать здесь, это sortlist   и  domain.  Дополнительно,  имеются   две    директивы,    которые    могут   использоваться внутри zone файлов базы данных. Это -  $INCLUDE  и  $ORIGIN.
Так как они редко когда понадобятся, то мы не будем описывать их здесь.


DNS файл базы данных.

Основной файл включаемый named, подобно named.hosts, всегда  имеет   область соединенную с ним,  которая  называется  origin.  Это  -  область   название которой определено с кэшем и с основными командами. Внутри   основного  файла Вам  дозволено  определить  область  и  имена  хостов   относительно  этой области. Имя, данное в файле конфигурации, считается   абсолютным,  если оно  заканчивается  в  единственной  точке,  иначе   она   будет   рассматривается относительно origin. Весь оrigin может быть упомянут, если Вы используете "@".

Все данные, содержащиеся в основном файле определены в источнике   записей, или Rrs(resource records) для краткости. Они составляют самую   малую единицу информации доступную через DNS. Каждый способ  записи  имеет   тип.  Запись, например отображение имени хоста к IP адресу, и CNAME запись   ассоциируется с псевдонимом для хоста с его официальным именем. Например,   посмотрите на рисунок 7.2.3 на странице 116, которая показывает named.hosts   основной файл для virtual brewery.
Способ записи в  основых  файлах  является  общим  форматом:  

[domain] [ttl] [class] type rdata

Поля отделены пробелами или табуляцией. Запись может быть продолжена   через   несколько строк, если открываящая"фигурная скобка появляется  перед   первой строкой, и последнее поле оканчивается закрывающей фигурной скобкой.
Что-либо между точкой с запятой и новой строкой игнорируется.

  • domain Это имя области в которой появляется запись. Если  имя   области не дано, RR попытается обратиться к области из предыдущего RR.
  • ttl Необходим для того чтобы заставить решающие устройства
  •  information имеет силу после того, как она была найдено на  сервере.  Это - десятичное число с восемью разрядами.

Если ttl значение не дано, то  будет  использоваться значение по   умолчанию  к значению минимального поля предшествующей SOA записи.   

  • class Это - класс адреса, подобно IN для IP адресов, или HS для   объекта  в Hesoid классе. Для TCP/IP сетей, Вам необходимо сделать это IN.   Если никакой класс поля не дан, то будет принят класс предшествующего RR.   
  • type Это описывает тип  RR.  Наиболее  общие  типы:  A,  SOA,  PTR,   и  NS. Следующие разделы описывают различные типы RR.
  •  rdata Это задерживает данные связанные с RR. Формат этого поля   зависит  от типа RR. Ниже, это будет описано для каждого RR поотдельности.
  •   following - незавершенный список RR,  который  нужно  использовать  в   DNS основном  файле.  Имеется  несколько  пар  из  них,  которые  мы  не   будем объяснять. Они  являются   экспериментальными, и вообще, небольшого   использования.
  •    SOA   Это описывает зону власти  (SOA  означает  "  Start  of   Authority'').  Он сообщает что запись следующая за  SOA RR содержите   авторитарную информацию  для области.  Каждый  основной  файл,  включенный   основным  оператором  должен содержать SOA запись для этой зоны.  Источники   данных  содержат  следующиз поля:
    •   origin Это - каноническое имя хоста основного сервера для этой   области. Обычно дается как абсолютное имя.
    •   contact Это - email адрес человека ответственного за  поддержания   области, со знаком "@" в качестве точки.  Например,  если  ответственный в   Virtual Brewery - janet, то тогда это поле содержало бы janet.vbrew.com.
    •   serial Это - номер версии зонального  файла,  выраженный  как   единственное десятичное число. Всякий раз, когда данные меняются в   зональном  файле,  то это число должно быть увеличено.

Серийный номер используется вторичными серверами, чтобы распознать,   когда зональная информация была изменена. Чтобы оставаться  на  уровне   современных требований, вторичные серверы запрашивают SOA запись   примарного  сервера  в определенные промежутки времени, и сравнивают   порядковый  номер  с кэшируемой  SOA  записью.  Если  номер  изменился,  то вторичные   серверы переносут целую зону баз данных из основного сервера.   

  • refresh Определяет  интервал,  в  секундах,  который  вторичные   серверы должны использовать между проверками SOA записей основного сервера.  Это - десятичный номер более чем с восемью разрядами.

В основном, сетевая топология слишком часто не изменяется для того,   чтобы этот номер точно определял интервал для слишком бурных дней больших   сетей,  и даже  для меньших сетей.

  • retry Этот номер определяет интервалы за которые  вторичный  сервер   должен повторить  соединение с  основным  сервером,  если  запрос   или   зональная регенерация терпит неудачу. Он не должно быть  слишком   маленьким, потому что даже временный отказ сервера или сетевая проблема   могут  потратить  впустую  все сетевые ресурсы. Один час, или возможно   полчаса,  могли  бы  быть  хорошим выбором.
  •   expire - определяет  время  в  секундах  после  которого  сервер   должен наконец-то отбросить все зональные данные, если невозможно  было   войти  в контакт с основным сервером. Этот промежуток времени в основном   должен быть очень большим.
  •  Craig Hunt (GETS "hunt - tcpip"]) рекомендует 42   дня.
  •   minimum - задает по  умолчанию  ttl  значение  для  исходных   записей, которые точно  не  определяют  его. Требует  другого  сервера,   чтобы отбросить RR при проверки после определенного кол-ва времени.  Ничего нельзя сделать с  временем  после  которого  вторичный  сервер   попробует модифицировать зональную информацию.   minimum должен быть большим  значением,  особенно  для  LANs,  где   сетевая топология почти никогда не меняется. Значение в неделю или в месяц.   В случае, когда единственные Rrs могут часто изменяться, то Вы все еще   можете приписывать им различные ttl.
  •  A   Ассоциирует IP адрес с hostname. Источник полей данных содержит адрес   в dotted quad notation.

Для каждого хоста должна быть только одна запись. Hostname   используемый  в этой А записи рассматривается  служебным  или  каноническим   hostname.  Все другие hostnames - псевдонимы и должны  быть  отображены  на   каноническом hostname используя CNAME запись.   

  • NS  Указывает на главный сервер подчиненной зоны.  Для  объяснения,   почему, каждый должен иметь NS  запись.  Источник  полей данных содержит hostname сервера. Можно разрешить   дополнительный hostname к A записи, так называемый glue, которая  дает  IP   адрес сервера.
  •  CNAME  Ассоциирует  псевдоним  хоста  с  его   каноническим hostname.   Каноническиий hostname - главный файл, который обеспечивает  А  запись;   псевдонимы просто связаны с этим именем CNAME записью, но  не  имеют   собственные записи.
  •   PTR   Этот тип записи используется, для того, чтобы  соединить  имя  в   Addr.arpa области с hostnaoes. Это используется для обратного отображения   IP  адресов к hostnames. Данный hostname должен быть каноническим hostname.    
  •  MX   Эта RR объявляет преобразователь почты для области.  Для  чего  надо   иметь преобразователи почты  Синтаксис MX записи следующий:   [domain] [ttl] [class] MX preference host.  host объявляет преобразователь почты для  области.  Каждый   преобразователь почты предпочитает целое число, связанное с этим хостом.   Агент переноса почты, то кто желает доставить почту к области, будет   перебирать все  хосты,  не  имеющие  MX записей в  этой  области,  пока   все  не  пойдет  успешно.  Сначала  будет пробоваться тот хост, у которого   самое низкое число, а дальше  все  хосты  с числом по возрастанию (это   число называется-preference value).
  • HINFO Эта запись предоставляет информацию относительно  аппаратных   средств системы и программного обеспечения. Синтаксис этой записи:   

  [domain] [ttl] [class] HINFO hardware software

Аппаратная область идентифицирует аппаратные  средства,  используемые   этим хостом. Имеются специальные соглашения, чтобы точно определить  ее.   Список подходящих имен дан в "Assigned Numbers'' (RFС 1340). Если область   содержит пробелы, то это надо заключить  в  двойные  кавычки.  Имена   областей программного обеспечения  используються  операционной  системой.   И  снова, подходящее имя может быть выбрано из "Assigned Numbers'' RFC.
Вследствие характера   обсуждаемой сети  (единственная  локальная  вычислительная  сеть),  пример   -  довольно простой. Если ваши требования чересчур сложны, и  Вы  не   можете  запустить named, то вам поможет "DNS and BIND'' by Cricket Liu  and   Paul  Albitz  ([GETST "liu-dns"]).
&   "
Кэш файл named.ca,  показывает   пример hint записи для root name сервера. Типичный кеш файл обычно   описывает около дюжины серверов, или около того. Вы можете получить текущий   список серверов для root области, используя nslookup, описанный ближе к   концу этой главы
;
; /var/named/named.ca          Cache file for the brewery.
;                We're not on the Internet, so we don't need
;                any root servers. To activate these
;                records, remove the semicolons.
;
; .                99999999   IN    NS  NS.NIC.DDN.MIL
; NS.NIC.DDN.MIL   99999999   IN    A   26.3.0.103
; .                99999999   IN    NS  NS.NASA.GOV
; NS.NASA.GOV      99999999   IN    A   128.102.16.10
Файл named.ca.


Проверка установки сервера(Name Server Setup).

Заметьте, что Вы не  сможете  сделать  запрос  для Вашего  сервера   на  root серверы,  если Вы не имеете какие-нибудь root server  hints:   Захватите  22! Чтобы выйти из этой дилеммы, Вы можете также попробовать   заставите nslookup использовать другой сервер, или Вы можете использовать   примерный  файл  на рисунке 7.2.3, и затем получить полный список   подходящих серверов.   
;
; /var/named/named.hosts       Local hosts at the brewery
;                               Origin is vbrew.com
;
@                   IN  SOA   vlager.vbrew.com. (
janet.vbrew.com.
16         ; serial
86400      ; refresh: once per
day
3600       ; retry:   ong howr
3600000    ; expire:  42 days
604800     ; minimum: 1 week
)
IN  NS    vlager.vbrew.com.
;
; local mail is distributed on vlager
IN  MX    10 vlager
;
; loopback address
localhost.          IN  A     127.0.0.1
; brewery Ethernet
vlager              IN  A     191.72.1.1
vlager-if1          IN  CNAME vlager
; vlager is also news server
news                IN  CNAME vlager
vstout              IN  A     191.72.1.2
vale                IN  A     191.72.1.3
; winery Ethernet
vlager-if2          IN  A     191.72.2.1
vbardolino          IN  A     191.72.2.2
vchianti            IN  A     191.72.2.3
vbeaujolais         IN  A     191.72.2.4

Файл named.hosts.

Существует  прекрасное  средство  для  проверки  действия установки   Вашего сервера(server setup). Оно называется nslookup, и может быть   использовано и в интерактивном режиме и из командной строки. В последнем   случае, Вы просто вызываете ее как   
nslookup hostname  и она сделает запрос на сервер, определенный в resolv.conf,  для   hostname. (Если эти имена файла больше чем один сервер, nslookup выберет   какой-нибудь один)

;
; /var/named/named.local       Reverse mapping of 127.0.0
;                               Origin is 0.0.127.in-
addr.arpa.
;
@                   IN  SOA   vlager.vbrew.com. (
joe.vbrew.com.
1          ; serial
"   "                          360000     ; refresh: 100 hrs
3600       ; retry:   one hour
3600000    ; expire:  42 days
; minimum: 100 hrs
)
IN  NS    vlager.vbrew.com.
1                   IN  PTR   localhost.

Файл named.local.

Интерактивный режим, является намного  более  захватывающим.  Кроме   того при просмотре индивидуальных хостов,  Вы  можете  сделать  запрос  для   любого типа DNS записи, и перенести зональную информацию для области.

Когда он вызывается без аргумента, nslookup отобразит  название   используемого сервера, и вступить в интерактивный режим. В " > "   приглашении(prompt),  Вы можете ввести любое имя для которого должен  быть   сделан  запрос.  По умолчанию, он опросит класс A записи,  содержащий  IP    адреса  в  отношении названия области.    Вы можете изменить этот  тип,  используя  "set  type=type",  где   type(тип) является одним из исходных названий записи.

Например, у Вас мог бы получиться следующий диалог:
;
; /var/named/named.rev         Reverse mapping of our IP
addresses
;                               Origin is 72.191.in-addr.arpa.
;
@                   IN  SOA   vlager.vbrew.com. (
joe.vbrew.com.
16         ; serial
86400      ; refresh: once per
day
3600       ; retry:   one hour
3600000    ; expire:  42 days
604800     ; minimum; 1 week
)
IN  NS    vlager.vbrew.com.
; brewery
1.1                 IN  PTR   vlager.vbrew.com.
2.1                 IN  PTR   vstout.vbrew.com.
3.1                 IN  PTR   vale.vbrew.com.
; winery
1.2                 IN  PTR   vlager-if1.vbrew.com.
2.2                 IN  PTR   vbardolino.vbrew.com.
3.2                 IN  PTR   vchianti.vbrew.com.
4.2                 IN  PTR   vbeaujolais.vbrew.com.
Файл named.rev.
$ nslookup
Default Name Server:  rs10.hrz.th-darmstadt.de
Address:  130.83.56.60

> sunsite.unc.edu
Name Server:  rs10.hrz.th-darmstadt.de
Address:  130.83.56.60
Non-authoritative answer:
Name:    sunsite.unc.edu
Address:  152.2.22.81

Если Вы попробуете  сделать  запрос  на  имя,  которое  не  имеет   никакого связанного IP адреса, но другие записи были  найдены  в  DNS  базе   данных, то nslookup сообщит об ошибке: "No type A records found''. Однако,   Вы  можете заставить сделать запрос для записей других типов (не А), введя   "set  type" команду. Например, чтобы получить SOA запись unc.edu, Вы бы
ввели:   
> unc.edu
*** No address (A) records available for unc.edu
Name Server:  rs10.hrz.th-darmstadt.de
Address:  130.83.56.60
> set type=SOA
> unc.edu
Name Server:  rs10.hrz.th-darmstadt.de
Address:  130.83.56.60
Non-authoritative answer:
unc.edu
origin = ns.unc.edu
&  mcil addr = shava.ns.unc.edu
serial = 930408
refresh = 28800 (8 hours)
retry   = 3600 (1 hour)
expire  = 1209600 (14 days)
minimum ttl = 86400 (1 day)
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU       internet address = 128.109.157.30

Таким образом Вы можете сделать запрос для MX записей, и т.д.   Использование типа ANY вернет все исходные записи, связанные с данным   именем.

> set type=MX
> unc.edu
Non-authoritative answer:
unc.edu preference = 10, mail exchanger =
lambada.oit.unc.edu
lambada.oit.unc.edu     internet address = 152.2.22.80
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU       internet address = 128.109.157.30
Практическое применение nslookup, помимо отладки, - получить текущий
список root серверов для файла named.ca. Вы можете  сделать  это,
запрашивая  все типы NS записей, связанные с root областью:
> set typ=NS
> .
Name Server:  fb0430.mathematik.th-darmstadt.de
Address:  130.83.2.30
Non-authoritative answer:
(root)  nameserver = NS.INTERNIC.NET
(root)  nameserver = AOS.ARL.ARMY.MIL
(root)  nameserver = C.NYSER.NET
(root)  nameserver = TERP.UMD.EDU
(root)  nameserver = NS.NASA.GOV
(root)  nameserver = NIC.NORDU.NET
(root)  nameserver = NS.NIC.DDN.MIL

Authoritative answers can be found from:
(root)  nameserver = NS.INTERNIC.NET
(root)  nameserver = AOS.ARL.ARMY.MIL
(root)  nameserver = C.NYSER.NET
(root)  nameserver = TERP.UMD.EDU
(root)  nameserver = NS.NASA.GOV
(root)  nameserver = NIC.NORDU.NET
(root)  nameserver = NS.NIC.DDN.MIL
NS.INTERNIC.NET internet address = 198.41.0.4
AOS.ARL.ARMY.MIL        internet address = 128.63.4.82
AOS.ARL.ARMY.MIL        internet address = 192.5.25.82
AOS.ARL.ARMY.MIL        internet address = 26.3.0.29
C.NYSER.NET     internet address = 192.33.4.12
TERP.UMD.EDU    internet address = 128.8.10.90
NS.NASA.GOV     internet address = 128.102.16.10
NS.NASA.GOV     internet address = 192.52.195.10
NS.NASA.GOV     internet address = 45.13.10.121
NIC.NORDU.NET   internet address = 192.36.148.17
NS.NIC.DDN.MIL  internet address = 192.112.36.4


Полная система команд, доступных с nslookup может быть  получена  при   использовании команды help изнутри nslookup.

Другие полезные инструментальные средства

Имеется несколько инструментальных средств, которые помогут  Вам  с   Вашими задачами как BIND администратор. Я кратко опишу два из  них.   Пожалуйста  обратитесь к документации, которая  прилагается  с  этими   инструментальными средствами для выяснения того, как их использовать.   

hostcvt - средство,  которое  помогает  Вам  с   Вашей    начальной    BIND конфигурации, преобразовывая ваш /etc/hosts файл в главный файл  для   named. Оно генерирует оба и прямое (A) и обратное отбражение (PTR), и   заботится  о псевдонимах и т.п.  Конечно,  оно  не  будет  делать  всю   работу  за  Вас, поскольку Вы можете все еще захотеть настроить значения   блокировки по втемепи в SOA записи сами, например, или прибавить MX запись   и т.п. Но оно может  помочь сохранить Вам несколько таблеток аспирина.

Hostcvt - часть BIND  источника, но может также быть использован как   автономный пакет на несколько Linux FTP серверах.   
После установки  вашего  сервера,  Вы  можт  быть  захотите   проверить  Вашу конфигурацию. Идеальным (и, по  моему  мнению  тоже)   средством  для  этого является dnswalk, perl-based пакет который   прогуливается по вашей DNS  базе данных, выискивая  общие  ошибки  и   проверяет  совместимость  информации. Dnswalk был выпущен на   comp.sources.misc недавно, и должен быть доступен на всех FTP, которые   архивируют эту группу.