DNS HOWTO: Простой домен.

Next Previous Contents

## 4. Простой домен.

Как установить свой собственный домен

## 4.1 Но сначала некоторое количество сухой теории

До того как мы в действительности начнем этот раздел, я хочу дать вам некоторые теоретические сведения о том как работает DNS. И вы должны читать дальше, потому что это полезно для вас. Если вы не `хотите' делать это, то вы по крайней мере должны быстро просмотреть его. Остановитесь, когда вы увидите указания о том, что вы должны делать с вашим файлом `named.conf`.

DNS -- это иерархическая система. Вершина записывается как ``.`' и произносится как `root (корень)'. В . существует некоторое количество Доменов верхнего уровня (Top Level Domains, TLDs), наиболее известными из которых являются ORG, COM, EDU и NET, но на самом деле их намного больше.

При поиске машины, запрос обрабатывается рекурсивно, начиная с корня. Если вы хотите найти адрес машины `prep.ai.mit.edu`, то ваш сервер имен должен найти сервер имен, который обслуживает `edu`. Он запрашивает корневой сервер (`.`) (он уже знает корневые `.` сервера -- они перечислены в файле `root.hints`), корневой сервер `.` дает список серверов `edu`:

> `

>     $ nslookup

>     Default Server:  localhost

>     Address:  127.0.0.1

> `

Запросите корневой сервер:

> `

>     > server c.root-servers.net.

>     Default Server:  c.root-servers.net

>     Address:  192.33.4.12

> `

Установите тип запроса (Query type) в NS (записи о серверах имен):

> `

>     > set q=ns

> `

Запросите его о edu:

> `

>     > edu.

> `

Заключительная точка `.` очень важна, она сообщает серверу, что мы запрашиваем о edu находящемся прямо под корневым сервером `.` (это ограничивает поиск).

> `

>     edu     nameserver = A.ROOT-SERVERS.NET

>     edu     nameserver = H.ROOT-SERVERS.NET

>     edu     nameserver = B.ROOT-SERVERS.NET

>     edu     nameserver = C.ROOT-SERVERS.NET

>     edu     nameserver = D.ROOT-SERVERS.NET

>     edu     nameserver = E.ROOT-SERVERS.NET

>     edu     nameserver = I.ROOT-SERVERS.NET

>     edu     nameserver = F.ROOT-SERVERS.NET

>     edu     nameserver = G.ROOT-SERVERS.NET

>     A.ROOT-SERVERS.NET      internet address = 198.41.0.4

>     H.ROOT-SERVERS.NET      internet address = 128.63.2.53

>     B.ROOT-SERVERS.NET      internet address = 128.9.0.107

>     C.ROOT-SERVERS.NET      internet address = 192.33.4.12

>     D.ROOT-SERVERS.NET      internet address = 128.8.10.90

>     E.ROOT-SERVERS.NET      internet address = 192.203.230.10

>     I.ROOT-SERVERS.NET      internet address = 192.36.148.17

>     F.ROOT-SERVERS.NET      internet address = 192.5.5.241

>     G.ROOT-SERVERS.NET      internet address = 192.112.36.4

> `

Это дает нам информацию о том, что `*.root-servers.net` обслуживают `edu.`, так что мы можем продолжать опрашивать сервер `c`. Теперь мы хотим знать кто обслуживает следующий уровень имени домена: `mit.edu.`:

> `

>     > mit.edu.

>     Server:  c.root-servers.net

>     Address:  192.33.4.12

>     Non-authoritative answer:

>     mit.edu nameserver = W20NS.mit.edu

>     mit.edu nameserver = BITSY.mit.edu

>     mit.edu nameserver = STRAWB.mit.edu

>     Authoritative answers can be found from:

>     W20NS.mit.edu   internet address = 18.70.0.160

>     BITSY.mit.edu   internet address = 18.72.0.3

>     STRAWB.mit.edu  internet address = 18.71.0.151

> `

Сервера `steawb`, `w20ns` и `bitsy` обслуживают `mit`, выберите один из них и запросите у него информацию о `ai.mit.edu`:

> `

>     > server W20NS.mit.edu.

> `

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

> `

>     Server:  W20NS.mit.edu

>     Address:  18.70.0.160

>     > ai.mit.edu.

>     Server:  W20NS.mit.edu

>     Address:  18.70.0.160

>     Non-authoritative answer:

>     ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU

>     ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU

>     ai.mit.edu      nameserver = TRIX.AI.MIT.EDU

>     ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU

>     ai.mit.edu      nameserver = LIFE.AI.MIT.EDU

>     ai.mit.edu      nameserver = BEET-CHEX.AI.MIT.EDU

>     ai.mit.edu      nameserver = MINI-WHEATS.AI.MIT.EDU

>     ai.mit.edu      nameserver = COUNT-CHOCULA.AI.MIT.EDU

>     ai.mit.edu      nameserver = MINTAKA.LCS.MIT.EDU

>     Authoritative answers can be found from:

>     AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = LIFE.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = BEET-CHEX.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = MINI-WHEATS.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = COUNT-CHOCULA.AI.MIT.EDU

>     AI.MIT.EDU      nameserver = MINTAKA.LCS.MIT.EDU

>     ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5

>     GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4

>     TRIX.AI.MIT.EDU internet address = 128.52.37.6

>     MUESLI.AI.MIT.EDU       internet address = 128.52.39.7

>     LIFE.AI.MIT.EDU internet address = 128.52.32.80

>     BEET-CHEX.AI.MIT.EDU    internet address = 128.52.32.22

>     MINI-WHEATS.AI.MIT.EDU  internet address = 128.52.54.11

>     COUNT-CHOCULA.AI.MIT.EDU        internet address = 128.52.38.22

>     MINTAKA.LCS.MIT.EDU     internet address = 18.26.0.36

> `

Так что `museli.ai.mit.edu` является сервером имен для `ai.mit.edu`:

> `

>     > server MUESLI.AI.MIT.EDU

>     Default Server:  MUESLI.AI.MIT.EDU

>     Address:  128.52.39.7

> `

Теперь я изменил тип запроса, поскольку мы нашли сервер имен и можем опрашивать его том, что мы хотим знать о `prep.ai.mit.edu`.

> `

>     > set q=any

>     > prep.ai.mit.edu.

>     Server:  MUESLI.AI.MIT.EDU

>     Address:  128.52.39.7

>     prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix

>     prep.ai.mit.edu

>             inet address = 18.159.0.42, protocol = tcp

>               ftp  telnet  smtp  finger

>     prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu

>     prep.ai.mit.edu internet address = 18.159.0.42

>     ai.mit.edu      nameserver = beet-chex.ai.mit.edu

>     ai.mit.edu      nameserver = alpha-bits.ai.mit.edu

>     ai.mit.edu      nameserver = mini-wheats.ai.mit.edu

>     ai.mit.edu      nameserver = trix.ai.mit.edu

>     ai.mit.edu      nameserver = muesli.ai.mit.edu

>     ai.mit.edu      nameserver = count-chocula.ai.mit.edu

>     ai.mit.edu      nameserver = mintaka.lcs.mit.edu

>     ai.mit.edu      nameserver = life.ai.mit.edu

>     gnu-life.ai.mit.edu     internet address = 128.52.32.60

>     beet-chex.ai.mit.edu    internet address = 128.52.32.22

>     alpha-bits.ai.mit.edu   internet address = 128.52.32.5

>     mini-wheats.ai.mit.edu  internet address = 128.52.54.11

>     trix.ai.mit.edu internet address = 128.52.37.6

>     muesli.ai.mit.edu       internet address = 128.52.39.7

>     count-chocula.ai.mit.edu        internet address = 128.52.38.22

>     mintaka.lcs.mit.edu     internet address = 18.26.0.36

>     life.ai.mit.edu internet address = 128.52.32.80

> `

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

Менее обсуждаемым, но все равно важным является домен `in-addr.arpa`. Он также имеет иерархическую структуру, подобно `обычным' доменам. `in-addr.arpa` позволяет нам получить имя машины, по ее адресу. Необходимо заметить, то что ip-адреса в домене in-addr.arpa записаны в обратном порядке. Например, Если у вас есть машина с адресом: 192.128.52.43, то named обрабатывает ее точно также как в примере для `prep.ai.mit.edu`: находит сервера `arpa.`. Находит сервера для домена `in-addr.arpa.`, находит сервера `192.in-addr.arpa.`, находит сервера для `128.192.in-addr.arpa.`, сервера для `52.128.192.in-addr.arpa.`. А потом уже находит необходимые записи о `43.52.128.192.in-addr.arpa.` Ловко? (скажите 'да'). Хотя обратный порядок может смущать, но это только первые два года.

Я вам солгал. DNS не работает точно так, как я это описал. Но достаточно близко к описанному процессу.

## 4.2 Наш собственный домен

Теперь определим наш собственный домен. Мы будем делать домен linux.bogus и определим машины в нем. Я использую полностью поддельное имя домена, для того чтобы быть уверенным, что мы не побеспокоим никого во внешнем мире.

Одно важное замечание до того как мы начнем: Не все символы разрешено использовать в именах машин. Мы ограничимся символами английского алфавита: a-z, цифрами: 0-9 и символом '-' (тире). Придерживайтесь сипользования этих символов. Прописные и строчные символы не различаются DNS, так что `pat.uio.no` является равным `Pat.UiO.No`.

Мы уже начали эту часть строкой в `named.conf`:

    zone "0.0.127.in-addr.arpa" {

            type master;

            file "pz/127.0.0";

    };

Заметьте отсутствие ``.`' в конце имен доменов в этом файле. Это указывает, что мы сейчас будем определять зону `0.0.127.in-addr.arpa`, и что мы будем основным сервером для нее, а также то, что она хранится в файле, названном `pz/127.0.0`. Мы уже сделали этот файл, в нем записано:

    @               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                                    1       ; Serial

                                    8H      ; Refresh

                                    2H      ; Retry

                                    1W      ; Expire

                                    1D)     ; Minimum TTL

                            NS      ns.linux.bogus.

    1                       PTR     localhost.

Заметьте наличие символа ``.`' в конце полных имен доменов в этом файле, в противоположность вышеприведенному файлу `named.conf`. Некоторые люди любят начинать каждый файл зон с директивы `$ORIGIN`, но это является излишним. Расположение (origin) (место зоны в иерархии DNS) файла зоны указывается в разделе зон в файле `named.conf`, в данном случае это `0.0.127.in-addr.arpa`.

Этот `файл зоны' содержит 3 `записи ресурсов (resource records)' (`RR`s): `A SOA RR`, `A NS RR` и `PTR RR`. `SOA` это сокращение для Начала Полномочий (Start Of Authority). Символ `@' это специальный символ обозначающий расположение, и поскольку в колонке `домен (domain)' для этого файла записано `0.0.127.in-addr.arpa`, то первая строка на самом деле значит

> `

>     0.0.127.in-addr.arpa.   IN      SOA ...

> `

NS это RR для сервера имен (Name Server). В начале строки символ '@' не указывается, это подразумевается, поскольку предыдущая строка начиналась с символа '@'. Это съэкономит нам несколько нажатий на клавиши. Так что строка NS в действительности читается как

> `

>     0.0.127.in-addr.arpa.   IN      NS      ns.linux.bogus

> `

Эта строка сообщает DNS, что машина является сервером имен домена `0.0.127.in-addr.arpa`, это `ns.linux.bogus`. 'ns' традиционное имя для серверов имен, но как и для web-серверов, чьим традиционным именем является `www.`что-нибудь, данное имя может быть любым.

И в в окончание - запись PTR гласит, что машина с адресом 1 в подсети `0.0.127.in-addr.arpa`, например, 127.0.0.1 называется `localhost`.

Запись SOA находится в преамбуле каждого из файлов зон, и она должна первой записью в файле. Она описывает зону -- откуда она появляется (машина, названная `ns.linux.bogus`), кто отвечает за содержимое зоны (`hostmaster@linux.bogus`), какая версия файла зоны текущая (serial: 1), и другие вещи, которые надо сделать для кеширующих и вторичных серверов DNS. Для полей refresh, retry, expire и minimum используйте числа приведенные в этом документе и вы должны быть в безопасности, используя их.

Затем перезапустите ваш named (команда `ndc restart`) и используйте программу nslookup для проверки того, что сделано:

> `

>     $ nslookup

>     Default Server:  localhost

>     Address:  127.0.0.1

>     > 127.0.0.1

>     Server:  localhost

>     Address:  127.0.0.1

>     Name:    localhost

>     Address:  127.0.0.1

> `

мы видим, что named работает и можно получить данные о `localhost` из домена 127.0.0.1, это очень хорошо. Теперь приступим к нашей основной задаче, домену `linux.bogus`, вставим новый раздел '(zone)' в файл `named.conf`:

    zone "linux.bogus" {

            notify no;

            type master;

            file "pz/linux.bogus";

    };

Заметим, что мы опять не написали завершающий символ ``.`' в имени домена в файле `named.conf`.

В файле зоны linux.bogus мы поместим некоторые поддельные данные:

    ;

    ; Файл зоны для linux.bogus

    ;

    ; Полный файл зоны

    ;

    @       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                            199802151       ; serial, todays date + todays serial #

                            8H              ; refresh, seconds

                            2H              ; retry, seconds

                            1W              ; expire, seconds

                            1D )            ; minimum, seconds

    ;

                    NS      ns              ; Internet адрес сервера имен

                    MX      10 mail.linux.bogus     ; Основной почтовый сервер

                    MX      20 mail.friend.bogus.   ; Дополнительный почтовый сервер

    ;

    localhost       A       127.0.0.1

    ns              A       192.168.196.2

    mail            A       192.168.196.4

Необходимо упомянуть две вещи о записи SOA. ns.linux.bogus должен быть настоящей машиной с записью A. Не разрешается указывать машину с записью CNAME в записи SOA. Это имя не обязательно должно быть `ns', оно может быть любым правильным именем машины. Далее, hostmaster.linux.bogus должен читаться как hostmaster@linux.bogus, это должен быть почтовый псевдоним или почтовый ящик для человека сопровождающего DNS и читающего почту достаточно часто. Любая почта, относительно домена будет посылаться на адрес указаный здесь. Имя не обязательно должно быт `hostmaster', это может быть любой правильный адрес электронной почты, но адрес с именем `hostmaster' как ожидается будет работать.

В этом файле приведен еще один новый тип записи о ресурсах (RR) -- MX, или запись ресурса Почтовый Сервер (Mail eXchanger). Она сообщает почтовой системе куда посылать почту адресованную `someone@linux.bogus`, а именно серверам `mail.linux.bogus` или `mail.friend.bogus`. Число перед каждым именем машины -- это приоритет записи MX RR. Запись ресурса с наименьшим номером (10) -- это машины куда почта должна посылаться в первую очередь. Если происходит ошибка, то почта может быть послана на машину с большим номером, вторичному почтовому серверу, например, `mail.friend.bogus` для которого приоритет установлен равным 20.

Перезапустите named с помощью команды `ndc restart`. Проверьте результаты работы используя команду nslookup:

> `

>     $ nslookup

>     > set q=any

>     > linux.bogus

>     Server:  localhost

>     Address:  127.0.0.1

>     linux.bogus

>             origin = ns.linux.bogus

>             mail addr = hostmaster.linux.bogus

>             serial = 199802151

>             refresh = 28800 (8 hours)

>             retry   = 7200 (2 hours)

>             expire  = 604800 (7 days)

>             minimum ttl = 86400 (1 day)

>     linux.bogus     nameserver = ns.linux.bogus

>     linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

>     linux.bogus     preference = 20, mail exchanger = mail.friend.bogus

>     linux.bogus     nameserver = ns.linux.bogus

>     ns.linux.bogus  internet address = 192.168.196.2

>     mail.linux.bogus        internet address = 192.168.196.4

> `

При внимательном тестировании вы обнаружите ошибку. Строка

> `

>     linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

> `

является полностью неправильной. Она должна выглядеть следующим образом

> `

>     linux.bogus     preference = 10, mail exchanger = mail.linux.bogus

> `

Я сознательно сделал ошибку, чтобы вы смогли получить некоторый опыт --:-) Глядя в файл зоны мы обнаружим, что в строке

> `

>                     MX      10 mail.linux.bogus     ; Основной почтовый сервер

> `

отсутствует точка. Или лишний раз написано 'linux.bogus'. Если имя машины не заканчивается на символ точки в файле зоны, то к концу этого имени добавляется текущее расположение (origin), вызывая в итоге дублирование текста `linux.bogus.linux.bogus`. Так запись

                    MX      10 mail.linux.bogus.    ; Основной почтовый сервер

или

                    MX      10 mail                 ; Основной почтовый сервер

является правильной. Я предпочитаю последнюю форму, поскольку надо меньше набирать на клавиатуре. Существуют пользователи bind, которые не согласны с этим подходом, но есть и те, которые согласны с этим. В файле зоны имя домена должно быть написано и закачиваться на символ ``.`' или домен не должен быть указан, в этом случае по умолчанию доменом будет текущее расположение (origin) машины.

Я должен подчеркнуть, что в файле named.conf не должно быть символа ``.`' после имен доменов. У вас может не быть понятия про символ ``.`' -- это слишком часто или наоборот слишком редко заполняет разные вещи и смущает много людей.

Так что опираясь на мою точку зрения мы напишем новый файл зоны, с некоторой дополнительной информацией.

    ;

    ; Файл зоны для linux.bogus

    ;

    ; Полный файл зоны

    ;

    @       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                            199802151       ; serial, todays date + todays serial #

                            8H              ; refresh, seconds

                            2H              ; retry, seconds

                            1W              ; expire, seconds

                            1D )            ; minimum, seconds

    ;

                    TXT     "Linux.Bogus, your DNS consultants"

                    NS      ns              ; Internet адрес сервера имен

                    NS      ns.friend.bogus.

                    MX      10 mail.linux.bogus     ; Основной почтовый сервер

                    MX      20 mail.friend.bogus.   ; Дополнительный почтовый сервер

    localhost       A       127.0.0.1

    gw              A       192.168.196.1

                    HINFO   "Cisco" "IOS"

                    TXT     "The router"

    ns              A       192.168.196.2

                    MX      10 mail

                    MX      20 mail.friend.bogus.

                    HINFO   "Pentium" "Linux 2.0"

    www             CNAME   ns

    donald          A       192.168.196.3

                    MX      10 mail

                    MX      20 mail.friend.bogus.

                    HINFO   "i486"  "Linux 2.0"

                    TXT     "DEK"

    mail            A       192.168.196.4

                    MX      10 mail

                    MX      20 mail.friend.bogus.

                    HINFO   "386sx" "Linux 1.2"

    ftp             A       192.168.196.5

                    MX      10 mail

                    MX      20 mail.friend.bogus.

                    HINFO   "P6" "Linux 2.1.86"

Здесь присутствует несколько новых записей о ресурсах (RR): запись HINFO (Информация о машине, Host INFOrmation) имеет две части, хорошей привычкой является заключение каждой из этих частей в кавычки. Первая часть -- это информация об оборудовании машины, а вторая часть описывает программное обеспечение и операционную систему данной машины. Машина, названная 'ns', имеет процессор Pentium и работает под управлением Linux 2.0. CNAME (Каноническое имя, Canonical NAME) -- это способ присвоить каждой машине несколько имен. Так, что www является алиасом для ns.

Использование записи CNAME является немного неоднозначным. Но безопасным способом будет следовать правилу, что записи MX, CNAME или SOA никогда не должны ссылаться на имя, указанное как запись CNAME, они должны ссылаться на имя определенное записью A, так что будет неправильно записать

    foobar          CNAME   www                     ; NO!

но вместо этого необходимо записать

    foobar          CNAME   ns                      ; Yes!

Также лучше считать, что запись CNAME не является настоящим именем машины для использования в адресе электронной почты: адрес `webmaster@www.linux.bogus` является неправильным адресом электронной почты. Вы можете ожидать, что некоторые администраторы электронной почты во внешнем мире следят за моблюдением этого правила, даже если у вас все работает нормально. Для того, чтобы избежать этого используйте запись A (и возможно также некоторые другие записи, такие как MX) вместо:

    www             A       192.168.196.2

Некоторые из разработчиков архитектуры bind (arch-bind-wizards), рекомендуют не использовать запись CNAME. Так, что ее использование надо рассматривать серьезно.

Но как вы видите, этот документ также как и множество других серверов не следуют этому правилу.

Загрузите новую базу данных выполнив команду `ndc reload`, это заставит named перечитать файлы зон заново.

> `

>     $ nslookup

>     Default Server:  localhost

>     Address:  127.0.0.1

>     > ls -d linux.bogus

> `

Это означает, что должны быть перечислены все записи в данном домене. В результате получится следующее:

> `

>     [localhost]

>     $ORIGIN linux.bogus.

>     @                       1D IN SOA       ns hostmaster (

>                                             199802151       ; serial

>                                             8H              ; refresh

>                                             2H              ; retry

>                                             1W              ; expiry

>                                             1D )            ; minimum

>                             1D IN NS        ns

>                             1D IN NS        ns.friend.bogus.

>                             1D IN TXT       "Linux.Bogus, your DNS consultants"

>                             1D IN MX        10 mail

>                             1D IN MX        20 mail.friend.bogus.

>     gw                      1D IN A         192.168.196.1

>                             1D IN HINFO     "Cisco" "IOS"

>                             1D IN TXT       "The router"

>     mail                    1D IN A         192.168.196.4

>                             1D IN MX        10 mail

>                             1D IN MX        20 mail.friend.bogus.

>                             1D IN HINFO     "386sx" "Linux 1.0.9"

>     localhost               1D IN A         127.0.0.1

>     www                     1D IN CNAME     ns

>     donald                  1D IN A         192.168.196.3

>                             1D IN MX        10 mail

>                             1D IN MX        20 mail.friend.bogus.

>                             1D IN HINFO     "i486" "Linux 1.2"

>                             1D IN TXT       "DEK"

>     ftp                     1D IN A         192.168.196.5

>                             1D IN MX        10 mail

>                             1D IN MX        20 mail.friend.bogus.

>                             1D IN HINFO     "P6" "Linux 1.3.59"

>     ns                      1D IN A         192.168.196.2

>                             1D IN MX        10 mail

>                             1D IN MX        20 mail.friend.bogus.

>                             1D IN HINFO     "Pentium" "Linux 1.2"

>     @                       1D IN SOA       ns hostmaster (

>                                             199802151       ; serial

>                                             8H              ; refresh

>                                             2H              ; retry

>                                             1W              ; expiry

>                                             1D )            ; minimum

> `

Это хорошо. Как вы видите, это выглядит почти как сам файл зоны. Теперь проверим какой будет ответ только для машины с именем www:

> `

>     > set q=any

>     > www.linux.bogus.

>     Server:  localhost

>     Address:  127.0.0.1

>     www.linux.bogus canonical name = ns.linux.bogus

>     linux.bogus     nameserver = ns.linux.bogus

>     linux.bogus     nameserver = ns.friend.bogus

>     ns.linux.bogus  internet address = 192.168.196.2

> `

Другими словами, настоящим именем для `www.linux.bogus` является `ns.linux.bogus`, и он также дается некоторая дополнительная информацию о машине ns, достаточная, чтобы соединиться с ней.

Теперь мы находимся на середине пути.

## 4.3 Обратная (reverse) зона

Теперь программы могут преобразовывать имена машин в домене linux.bogus в адреса, по которым они могут связаться с этими машинами. Но также, кроме этого, требуется обратная зона, которая дает возможность DNS преобразовывать адреса в имена машин. Эти имена используются достаточным количеством серверов различного рода (FTP, IRC, WWW и другими) для того, чтобы решить, хотят ли они с вами общаться или нет, и даже иногда имя машины используется для того, чтобы решить какой приоритет вам дать. Обратная зона требуется для полного доступа к различным сервисам в Internet.

Поместите следующие строки в файл `named.conf`:

    zone "196.168.192.in-addr.arpa" {

            notify no;

            type master;

            file "pz/192.168.196";

    };

Эти строки похожи на описание зоны `0.0.127.in-addr.arpa`, а файл зоны также имеет сходное содержание:

    @       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                            199802151 ; Serial, todays date + todays serial

                            8H      ; Refresh

                            2H      ; Retry

                            1W      ; Expire

                            1D)     ; Minimum TTL

                    NS      ns.linux.bogus.

    1               PTR     gw.linux.bogus.

    2               PTR     ns.linux.bogus.

    3               PTR     donald.linux.bogus.

    4               PTR     mail.linux.bogus.

    5               PTR     ftp.linux.bogus.

Теперь перезапустите ваш named (`ndc restart`) и снова проверьте его работу с помощью программы nslookup:

    > 192.168.196.4

    Server:  localhost

    Address:  127.0.0.1

    Name:    mail.linux.bogus

    Address:  192.168.196.4

так, это выглядит нормально, теперь выдайте полный список машин в домене, для того чтобы проверить правильность информации:

    > ls -d 196.168.192.in-addr.arpa

    [localhost]

    $ORIGIN 196.168.192.in-addr.arpa.

    @                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (

                                            199802151       ; serial

                                            8H              ; refresh

                                            2H              ; retry

                                            1W              ; expiry

                                            1D )            ; minimum

                            1D IN NS        ns.linux.bogus.

    1                       1D IN PTR       gw.linux.bogus.

    2                       1D IN PTR       ns.linux.bogus.

    3                       1D IN PTR       donald.linux.bogus.

    4                       1D IN PTR       mail.linux.bogus.

    5                       1D IN PTR       ftp.linux.bogus.

    @                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (

                                            199802151       ; serial

                                            8H              ; refresh

                                            2H              ; retry

                                            1W              ; expiry

                                            1D )            ; minimum

Выглядит хорошо!

Существует несколько вещей, которые я должен добавить здесь. Сетевые адреса, используемые здесь взяты из одного из блоков 'личных (private) сетей', их не разрешается публично использовать в internet. Так, что их можно спокойно использовать как пример в этом документе. Вторая вещь это строка `notify no;`. Она заставляет named не извещать вторичные (ведомые) сервера, когда вы обновляете один из файлов зон. В bind-8, named может уведомлять другие сервера, перечисленные в записях NS в файлах зон, когда конкретная зона обновляется. Это является удобным для обычного использования, но для личных экспериментов с зонами эта возможность должна быть отключена, мы же не хотим, чтобы наш эксперимент загрязнял internet?

И конечно, этот домен является фиктивным, также как и все адреса в нем. Для настоящего примера действующего домена смотрите следующий раздел.

Next Previous Contents