Для тестирования правильности построения зоны используется программа nslookup. Она сообщает IP-адрес по доменному имени, а при запуске без параметров она переходит в командный режим, где проявляет все свои незаурядные качества - читай `man nslookup`.
Спланируем нашу зону так: - наша фирма получила зону "фирма.домен";
- в ней будет три машины со следующими функциями:
- troll
- первичный Name-сервер; почтовая машина;
- ogre
- вторичный Name-сервер; FTP- и WWW-сервер;
- goblin
- просто машина без каких-либо функций, да еще расположенная совершенно в другом месте.
- Имеется группа "группа.фирма.домен" с двумя машинами:
- dwarf
- почтовый шлюз группы
- elf
- просто машина
- Имеется отдел "отдел.фирма.домен" со своим Name-сервером.
- Имеется удаленный филиал "филиал.фирма.домен" со своим Name-сервером, который надо дублировать.
Старт При старте машины запускается DNS-сервер: named -b /etc/namedb/named.boot В качестве аргумента ему передается имя файла с описанием рабочей конфигурации. Формат файлов |<- | Текст файла начинается с этой позиции. |<-
Формат файла: имяаргументы
В качестве разделителя используются пробелы и табуляции. Пустые строки игнорируются. Точка с запятой ";" - признак комментария; все от нее до конца строки игнорируется. Если строка начинается с пробела или с табуляции, она относится к тому же имени, что и предыдущая строка. Файл named.boot directory/etc/namedb
Это - указание на то, в какой директории находятся все упоминаемые дальше файлы. primary 0.0.127.in-addr.arpalocalhost.rev Каждый Name-сервер должен обслуживать зону 0.0.127.in-addr.arpa, ибо каждая машина должна знать свой внутренний номер как localhost. primary фирма.доменфирма.домен.hosts Это - домен, выделенный нашей организации. primary 1.168.192.in-addr.arpa1_168_192.rev Это - обратное преобразование IP-адресов в имена. secondary филиал.фирма.домен 192.168.1.193 филиал_фирма_домен.hosts Для ускорения обращений к Name-серверу филиала на нашем сервере должна быть копия содержимого его зоны. Файл localhost.rev @IN SOAtroll.фирма.домен. ответственный_за_зону. ( 19970315 ; Serial 3600 ; Refresh 300 ; Retry 3600000 ; Expire 3600 ; Minimum IN NStroll.фирма.домен. 1IN PTRlocalhost.домен.
Пояснения: - @
- текущий исходный домен, от которого будут отсчитываться все имена, которые не заканчиваются на точку. в данном случае - 0.0.127.in-addr.arpa.
- IN
- Запись относится к InterNet. Должно присутствовать во всех записях, но часто это игнорируют.
- SOA
- Start Of Authorisation - Начало Полномочий.
- первичный_сервер_зоны.
- Имя первичного сервера зоны. Так как мы создаем этот файл на первичном серере, здесь должно быть доменное имя самОй машины; точка в конце обязательна.
- ответственный_за_зону.
- Почтовый адрес лица, отвественного за зону; "@" в адресе заменяется на ".".
- В скобки заключаются параметры, растянутые на несколько строк:
- 19970315 ; Serial
- Серийный номер версии; должен увеличиваться при каждом изменении в зоне - по нему вторичный сервер обнаруживает, что надо обновить информацию. Обычно пишется в виде <год><месяц><число><номер>.
- 3600 ; Refresh
- Временной интервал в секундах, через который вторичный сервер будет проверять необходимость обновления информации.
- 300 ; Retry
- Временной интервал в секундах, через который вторичный сервер будет повторять обращения при неудаче.
- 3600000 ; Expire
- Временной интервал в секундах, через который вторичный сервер будет считать имеющуюся у него информацию устаревшей.
- 3600 ) ; Minimum
- Значение времени жизни информации на кэширующих серверах.
- IN NS первичный_сервер_зоны.
- Запись NS авторизует сервер как ответственный за зону. Естественно, надо авторизовать самогО себя.
1 IN PTR localhost.домен. Номер 127.0.0.1 всегда должен быть localhost. .0.0.127. автоматически приписывается к 1, ибо она не кончается на точку. Файл фирма_домен.hosts Файл фирма_домен.hosts достаточно велик, поэтому я буду перемежать текст файла обьяснениями. @IN SOAtroll.фирма.домен. ответственный_за_зону. ( 19970315 ; Serial 3600 ; Refresh 300 ; Retry 3600000 ; Expire 3600 ; Minimum ) Да в общем-то нет никаких причин делать эту зону отличной от зоны, содержащейся в localhost.rev, разве что Serial может (и скорее всего будет) различаться. IN NStroll IN NSogre IN NSвторичный_сервер_провайдера. Раз у нас есть вторичный сервер, да к тому же провайдер обещал держать у себя на сервере копию нашего сервера, надо авторизовать их тоже. IN MX10troll IN MX20почтовый_шлюз_провайдера. Здесь описаны почтовые шлюзы в порядке возрастания "удаленности" от пункта назначения. Почтовые серверы, имеющие почту для наших машин, пытаются послать ее непосредственно по адресу назначения; если это не удается, они пытаются послать ее самому близкому к пункту назначения шлюзу, при неудаче - следующему и так далее до исчерпания списка. Это касается только адреса фирма.домен, но не относится к машинам зоны (см.ниже). localhostIN A127.0.0.1 Каждая машина, обратившаяся по адресу localhost или localhost.зона, должна получить номер 127.0.0.1. *IN MX10troll IN MX20почтовый_шлюз_провайдера. Для всех машин данной зоны установить почтовые шлюзы (те же, что и для самОй зоны). trollIN A192.168.1.1 IN HINFO "486DX2-66" "FreeBSD" nsIN CNAME troll mailIN CNAME troll - IN A 192.168.1.1
- Определяет, что имени troll соответствует IP-номер 192.168.1.1.
- IN HINFO "486DX2-66" "FreeBSD"
- Содержит некоторыю информацию о машине, обычно - тип процессора и операционной системы.
- ns IN CNAME troll и mail IN CNAME troll
- Делают имена ns и mail псевдонимами машины troll. Следует помнить, что этого не всегда достаточно: некоторые протоколы, включая HTTP 1.1 и E-mail работают непосредственно с именем хоста, так что сам хост тоже должен понимать, что это имя - его.
ogreIN A192.168.1.2 IN HINFO "Pentium" "Linux" nss IN CNAME troll www IN CNAME ns.misa.ac.ru. ftpIN CNAME ns.misa.ac.ru. goblinIN A172.16.21.114 В общем-то все то же самое, что и для troll. группаIN MX 5dwarf.группа IN MX10troll IN MX20почтовый_шлюз_провайдера. *.группаIN MX 5dwarf.группа IN MX10troll IN MX20почтовый_шлюз_провайдера. На всякий случай отдельно зафиксируем почтовые шлюзы как для самой группы, так и для всех ее машин. localhost.группаIN A127.0.0.1 elf.группаIN A192.168.1.11 dwarf.группа IN A192.168.1.12 Обычные записи для машин группы. Можно сделать им HINFO или добавить псевдонимы, но и так сойдет. отделIN NS192.168.1.21. ; и, если есть, вторичные Name-серверы Так как отдел имеет свой Name-сервер, нужно только авторизовать его, причем по номеру; а дальше он сам должен отвечать за записи своей зоны. И напоследок - красивый фокус: altavista IN CNAME altavista.digital.com yahooIN CNAMEwww.yahoo.com Это позволяет моим юзерам обращаться к самым известным поисковым машинам, не набирая www. в начале и .com в конце! Однако, когда я пытался обращаться к этим машинам через Proxy-сервер провайдера, тот обратился к своей зоне DNS и сказал: "Не знаю имени yahoo.провайдер! Впрочем, полное имя www.yahoo.com продолжало нормально функционировать. Есть еще одна особенность такой конфигурации: машина yahoo.фирма.домен находится в нашей зоне, поэтому некоторые программы, кэширующие обращения к WWW, могут решить, что ее кэшировать не надо. Файл 1_168_192.rev @IN SOAtroll.фирма.домен. ответственный_за_зону. ( 19970315 ; Serial 3600 ; Refresh 300 ; Retry 3600000 ; Expire 3600 ; Minimum ) Тут даже думать не надо. 1IN PTRtroll.фирма.домен. 2IN PTRogre.фирма.домен. 11 IN PTRdwarf.группа.фирма.домен. 12 IN PTRelf.группа.фирма.домен. ; и так далее Этот файл содержит преобразования IP-адресов в доменные имена. Многие программы вообще отказываются работать с машинами, чей IP-адрес не прописан в обратной (reverce) зоне, видимо, считая, что этот адрес кем-то присвоен самовольно, без санкции ответственного администратора. Здесь же мы должны прописать все остальные машины, имеющие IP-номера 192.168.1.* - дело в том, что зоны в in-addr.arpa выделяются сразу на 256 адресов и не делегируются на меньшее число. Хочу также обратить внимание на то, что в обратной зоне нет машины goblin: она находится в совсем другой обратной зоне. Файл филиал_фирма_домен.hosts Этот файл создается автоматически; главное - чтобы он был правильно построен (прописаны все NS и MX). Инструменты Для тестирования правильности построения зоны используется программа nslookup. Она сообщает IP-адрес по доменному имени, а при запуске без параметров она переходит в командный режим, где проявляет все свои незаурядные качества - читай `man nslookup`. |