Настройка клиента DNS чрезвычайно проста - следует лишь указать верные значения в /etc/nsswitch.conf и /etc/resolv.conf. В последнем файле надо указывать IP-адрес, а не имя сервера имен, ибо нельзя обратиться к серверу имен по имени - ведь это он должен преобразовывать имена в IP-адреса.
Вот выдержка из файла /etc/nsswitch.conf:
# # /etc/nsswitch.dns: # # An example file that could be copied over to # /etc/nsswitch.conf; it uses # DNS for hosts lookups, otherwise it does not use any # other naming service. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of # "inet" transports. passwd: files group: files # You must also set up the /etc/resolv.conf file for # DNS name server lookup. See resolv.conf(4). hosts: files dns ipnodes: files networks: files protocols: files
Файл resolv.conf при этом выглядит так:
domain eu.spb.ru nameserver 192.168.5.63 search eu.spb.ru
Программа, которая является сервером имен и реализует службу DNS в Solaris, называется in.named (/usr/sbin/in.named). С системой Solaris 9 поставляется пакет BIND версии 8.2.4, в который входит эта программа.
Конфигурационный файл этой программы называется /etc/named.conf. Сервер имен всегда имеет рабочий каталог, где он хранит базу данных информации о доменах.
Этот каталог указывается в инструкции directory в файле конфигурации named.conf, и довольно часто администраторы выбирают в качестве такого каталога /var/named/.
В файле /etc/named.conf кроме имени рабочего каталога указываются все домены, за которые отвечает данный сервер имен, и названия файлов с описаниями этих доменов ; каждому домену соответствует свой файл описания. Один сервер имен может хранить информацию о нескольких доменах.
Правила регистрации доменов требуют, чтобы за каждый домен отвечали, как минимум, два сервера имен в разных IP-сетях; это правило ввели для страховки на случай непредвиденного отключения маршрутизации к одной из сетей.
Прежде чем начать подробное изучение файлов данных и файла конфигурации сервера имен, сделаем важное замечание: во всех этих файлах в Solaris 9 поставляемый с системой in.named ожидал в качестве разделителей полей знаки табуляции, а не пробелы! Если сервер имен при загрузке сообщает, что не смог найти информацию в файле конфигурации или файлах данных, следует:
Рассмотрим файл /etc/named.conf в нашей системе. Положим, наш сервер имен обслуживает два домена: klava.net и macro.ru, причем для последнего домена наш сервер будет выполнять роль вторичного сервера имен.
options { // это комментарий, раз строка начинается с // directory "/var/named"; }; // дальше идет описание зон. // эти - корневая и обратная локальная - обязательны zone "." { type hint; file "named.root"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "127.0.0"; }; // дальше - описания зон, за которые мы отвечаем zone "klava.net" { type master; file "klava.net"; }; // а это - те зоны, для которых наш сервер - вторичный zone "macro.ru" { type slave; file "sec/macro.ru"; masters { 194.220.38.65; }; };
Файл описания корневого домена named.root (фактически, список серверов имен корневого домена ) может быть уже установлен в системе. Если это не так, то его можно получить из самого надежного источника - по адресу ftp://ftp.rs.internic.net/domain/.
Каталог, в котором будут храниться файлы описаний доменов, для которых наш сервер имен является вторичным, должен быть доступен демону in.named для записи. Обычно это каталог /var/named/sec.
Файл описания домена состоит из записей, по одной на строку, называемых записями о ресурсах (RR - resource records). Каждый из ресурсов имеет класс и тип. В сети Интернет используется только класс IN, но DNS позволяет описывать ресурсы и других классов. Мы не будем рассматривать никакие классы, кроме IN. Типы ресурса бывают такими:
Каждая запись имеет определенный формат, а именно:
имя ресурса класс тип информация
Изучим файлы описания доменов, на которые ссылались инструкции из файла /etc/named.conf:
klava.net: $TTL 3600 @ IN SOA sunny.eu.spb.ru. hostmaster.sunny.eu.spb.ru. ( 2004060101 3600 1200 3600000 3600 ) IN NS sunny.eu.spb.ru. IN MX 5 mail.eu.spb.ru. IN MX 10 sunny.eu.spb.ru. mail IN A 194.221.15.1 127.0.0: $TTL 3600 @ IN SOA sunny.eu.spb.ru. hostmaster.sunny.eu.spb.ru. ( 2004060100 3600 1200 3600000 3600 ) IN NS sunny.eu.spb.ru. 1 IN PTR localhost.
Тип SOA - это единственный тип, который предполагает многострочную запись. В записи SOA указывается имя домена (символ @ - это макроопределение, вместо которого подставляется имя домена из файла named.conf), полное имя авторитетного name-сервера домена, адрес персоны, ответственной за домен, времена и тайм-ауты обновления сведений о домене:
Обратите внимание на то, что в конце адреса и в конце имени сервера стоит знак "точка" (.) - это для того, чтобы явно указать, что мы имеем дело с полностью определенным доменным именем. Если точку в конце имени не поставить, то после написанного в файле имени будет подставлено имя домена, например, если написать вместо " sunny.eu.spb.ru." то же самое, но без точки - " sunny.eu.spb.ru ", фактически сервер имен поймет это как sunny.eu.spb.ru.klava.net. (если мы говорим об описании домена klava.net ).
После открывающей круглой скобки следует указывать серийный номер версии файла данных домена. Этот номер необходимо изменять каждый раз, когда меняется хоть что-то в описании домена. Если забыть об этом, информация на вторичных серверах имен не обновится.
Серийный номер удобно указывать в формате YYYYMMDDVV, где YYYY - год, MM - месяц, DD - число месяца, VV - версия описания домена за этот день. Как видите, этот стандартный формат ограничивает нас в количестве изменений за день - не более ста. Постарайтесь унять торопливость и вносите изменения, только когда это действительно понадобится, а не раз в пять минут, пожалуйста!
Числа на следующих строках обозначают, соответственно, в секундах:
Инструкция $TTL в начале файла указывает, что серверы, получающие от нас ответы на свои вопросы, должны кэшировать эти ответы на время TTL (в секундах).
Записи типа NS содержат имена серверов имен домена, причем здесь не делается различия между главными и вторичными серверами имен, порядок следования записей в файле домена сам по себе ничего не означает.
Записи MX описывают правила маршрутизации почты. Каждая запись указывает на один из почтовых серверов, принимающих почту для данного домена (или компьютера):
IN MX 5 mail.eu.spb.ru. IN MX 10 sunny.eu.spb.ru.
В приведенном выше примере почта для домена klava.net принимается одним из двух почтовых серверов - mail.eu.spb.ru или sunny.eu.spb.ru. Число, следующее за ключевым словом MX в записях о маршрутизации почты, называется показателем предпочтительности (preference). Это число показывает, насколько предпочтительно посылать почту на указанный почтовый сервер по сравнению с другими почтовыми серверами. Если для домена или компьютера указаны несколько записей MX с различными показателями предпочтительности, то почта направляется на первый доступный почтовый сервер с минимальным значением показателя предпочтительности.
Алгоритм отправки почты любым почтовым сервером таков:
Попытки отправки почты повторяются до тех пор, пока почтовое сообщение не будет успешно отправлено либо время, прошедшее с начала первой попытки, не превысит установленный тайм-аут. В последнем случае отправитель получит уведомление о невозможности доставить письмо. По умолчанию большинство почтовых серверов пытаются доставить письмо в течение 5 суток.
Все временно неотправленные письма накапливаются в очереди сообщений, и почтовый сервер регулярно обрабатывает очередь, вновь и вновь пытаясь отправить письма согласно вышеописанному алгоритму.