Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 8-глоб.doc
Скачиваний:
7
Добавлен:
17.08.2019
Размер:
281.09 Кб
Скачать

Cистема серверов доменных имен (bind)

BIND или Berkeley Internet Name Domain - это сервер доменных имен, реализованный в университете. Беркли, который широко применяется на lnternet'e. Oн обеспечивает поиск доменных имен и IP-адресов для любого узла Сети. BIND обеспечивает рассылку сообщений электронной почты через узлы Internet. Если говорить более точно, BIND обеспечивает поиск доменного адреса машины пользователя, которому адресована почта, и определение IP-адреса по доменному адресу. Эта информация используется программой рассылки почтовых сообщений endmail, которая выступает в качестве почтового сервера.

BIND реализован по схеме "клиент/сервер". Собственно BIND - это сервер, а функции клиента выполняет name resolver или просто resolver. Обычно модули resolver'a находятся в библиотеке libc.a, если речь идет о системе UNIX, и редактируются вместе с программой, использующей вызовы gethostbyname и gethostbyaddr. Как уже отмечалось, базовым понятием для ВIND является "домен". На рисунке 8.18 представлена схема описания системы доменов.

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

Собственно система доменной адресации состоит из трех компонентов: системы имен, или базы данных имен; сервера имен и resolver'a.

Общий принцип работы сервера имен. Любой сервер имен имеет зону своей ответственности. Для того чтобы получить адреса или имена машин, которые не входя в зону его ответственности, сервер обращается к другим серверам имен. В принципе в поисках адреса или имени запрос может пропутешествовать до корня системы доменов, а затем снова спуститься до локального сервера имен. При поиске имени resolvег формирует запрос и посылает его своему серверу имен. Сервер имен пытается найти имя в своей базе данных. Если ему это удается, то ответ возвращается resolver'y, в противном случае он запрашивает сервер, стоящий выше него в иерархии доменов. Этот сервер обычно называют корневым. Корневой cepвер находит сервер, в чей домен попадает указанное в запросе имя, и указываем адрес этого сервера серверу, с которого поступил запрос. Сервер, найденный корневым сервером, называют удаленным сервером. Локальный сервер устанавливает взаимодействие с удаленным сервером и получает от последнего необходимую информацию. Схема такого, взаимодействия представлена на рисунке 8.19.

Кроме алгоритма взаимодействия самих серверов, интерес представляет и алгоритм формирования запроса программой, запрашивающей адрес. Обычна рассматривают три случая: однословное имя, имя с точкой на конец и составное имя.

При указании однословного имени

/usr/paul>telnet polyn

происходит обращение к файлу синонимов (aliases), который указывается в переменной окружения, например, HOSTALIASES в НР-UХ, или каким-либо другим способом. Файл синонимов обычно имеет структуру типа:

polyn polyn.net.kiae.su

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

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

/usr/paul/telnet арollo.polyn

При этом на машине указано имя текущего домена polyn.kiae.su. Проверены будут следующие имена: ароllo.ро1уn; apollo.polyn.olyn.kiae.su; apollo.polyn.kiae.su. Последнее имя будет найдено в базе данных локального сервера и будет возвращен IP-адрес этой машины.

При организации своего сервера имен следует принять во внимание, что для этого его следует зарегистрировать в организации, которая предоставляет IР-услуги. Во многих книгах по Internet написано, что следует обращаться в INTERNIC или в NOC EUnet, и приводятся их адреса. Вообще говора, это не совсем правильно. В материалах RIPN (некоммерческий европейский Internet) указано, что обращаться следует в RELARN. При регистрации коммерческой сети следует обращаться к представителю этой сети в регионе. Представителем EUnet является Relcom, сети Sprint - RuSpint, GLASNET - российский GLASNET, Telecom - Sovam Teleport. В общем. случае свои доменные адреса следует регистрировать там же, где получают IP-адреса.

Различают четыре вида серверов: primary master сервер; secondary master сервер; caching сервер; удаленный (remote) сервер. Primary master cервер - это сервер, который поддерживает свою базу данных имен и обслуживает местный домен, secondary master сервер - это сервер который обслуживает свой домен, но данные об адресах части своих машин получает по сети с другого сервера. Caching сервер не имеет своего домена. Он получает данные либо с одного из master серверов, либо из буфера. Удаленный (remote) сервер - это обычный master сервер, который установлен на удаленной машине. Программы обращаются к нему по сети. Обычно адрес сервера указывается в файле /etc/resolv.conf. При выборе типа сервера имен, который будет использоваться на машине, следует принять во внимание следующие соображения:

  • Primary или secondary master серверы устанавливаются обычно на машинах, которые являются шлюзами для локальных сетей. Вообще говоря, сервер имен может быть установлен на любой компьютер локальной сети. Но он будет только один на зону. При выборе машины для установки сервера имен следует принимать в расчет то обстоятельство, что многие реализации серверов держат базы данных имен в оперативной памяти. При этом часто подгружается информация и Т других серверов. Все это может вызвать задержки при разрешении запроса на адрес по имени машины, если для сервера имен будет использоваться маломощный компьютер.

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

  • При работе на рабочих станциях или персональных компьютерах, которые не являются шлюзами и не используются для публичного сервиса, имеет смысл использовать удаленные сервера, что облегчает проблемы с администрирование сервера имен.

Любой сервер имен настраивается своими служебными файлами. Программа, которая выполняет функции BIND, называется named. При запуске этой программы считывается файл /etc/named.boot. В этом файле указаны: тип сервера, какой зоне он принадлежит и где расположены файлы его базы данных. Файлы базы данных не имеют жесткого разделения, но обычно администраторы их разделяют на: файлы описания хостов и зоны; файл адресов удаленных серверов этой же зоны; файл адресов корневых серверов имен.

Наиболее часто приходится настраивать primary master сервер. Именно его мы и рассмотрим для примера. Структура файлов сервера имен приведена на рисунке 8.20.

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

Файл named.boot описывает сервер и местонахождение его файлов данных. Он имеет следующий вид:

; type zone description file

primary polyn.kiae.su db.polyn.kiae.su

primary 0.0.127.IN-ADDR.ARPA db. 127.0.0

primary 160.206.144.IN-ADDR.ARPA db.144.206.160.0

primary 192.206.144.IN-ADDR.ARPA db.144.206.192.0

cache db.cache

Первая строка этого файла определяет зону ответственности данного сервера, вторая строка определяет параметры самого сервера, следующие две определяют подсети с номерами 144.206.160.0 и 144.206.192.0, последняя строка определяет описание корневых серверов.

Файл описания зоны, управляемой сервером, будет выглядеть следующим образом:

; polyn.kiae.su

@ IN SOA

1 ; Порядковый номер изменений

10800 ; Обновлять каждые 3 часа

3600 ; Запрашивать новую информацию

каждый час

604800 ; Годен в течение недели

86400)

IN NS

IN NS

localhost IN A 127.0.0.1

apollo IN A 144.206.160.40

IN MX 5 polyn.net.kiae.su.

IN MX 10 cpuv1.net.kiae.su.

quest IN A 144.206.192.1

IN MX 5 cpuv1.net.kiae.su.

demin IN A 144.206.192.4

В данном случае приведен пример описания зоны из трех машин в домене polyn.kiae.su: apollo.polyn.kiae.su (144.206.160.40), quest.polyn. kiae.su (144.206.192.1), demin.polyn.kiae.su (144.206.192.4). Как видно из IP-адреов, машины принадлежат разным подсетям сети 144.206.0.0, но входят в общую зону (в один домен).

Приведенный выше файл позволяет легко отображать имена в IP-адреса. Но обратное отображение при такой записи затруднено, т.к. упорядочены доменные имена, а не адреса. Для обратного отображения служат файлы, содержащие записи-указатели:

; db.144.206.192.0

@ IN SOA

1 ; Порядковый номер изменений

10800 ; Обновлять каждые 3 часа

3600 ; Запрашивать новую информацию

каждый час

604800 ; Годен в течении недели

86400)

1 IN PTR quest.polyn.kiae.su.

4 IN PTR demin.polyn.kiae.su.

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

Для описания собственно сервера используется файл db.127.0.0.1, который от предыдущего файла отличается только тем, что задает обратное соответствие для адреса 127.0.0.1 на имя localhost.

Последний файл - это файл описания корневых серверов db.cache, который обычно самостоятельно не разрабатывается, а копируется из сервера зоны, которой принадлежит данный сервер.

Остановимся теперь более подробно на записях описания ресурсов файлов данных программы named. Мы рассмотрим записи SOA, A, PTR, MX, CNAME, как наиболее часто используемые и общие для различных реализаций BIND.

SOA - Start Of Authority. Данная запись открывает описание домена. Для каждого домена указывается только одна SOA-запись. Последнее требование практически означает только то, что для данной строки имеет силу последняя SOA-запись. Приведем пример SOA-записи:

; [name] [ttl] [class] SOA origin person in charge

@ IN SOA

polyn.net.kiae.su

polyn.net.kiae.su (

1 ; серийный номер

10800 ; обновлять

3600 ; запрашивать

604800 ; верно до

86400) ; время жизни

Поле name определяет имя домена. Знак "@" определяет имя текущего домена. Origin - имя хоста, на котором установлен сервер. Person in charge - почтовый адрес лица, отвечающего за сервер. Серийный номер - номер изменения в файле. Обычно он используется для обновления данных при работе сервера имен. Поле "обновлять" определяет периодичность опросов secondary-сервером primary-серверов. Поле "запрашивать" определяет время повторного запроса после неудачной попытки обновления информации secondary-сервером. Время жизни данных до их обновления задается полем "верно до". Последнее поле определяет время жизни записи ресурсов. Обычно исправляют только серийный номер, для того чтобы изменения, внесенные в описание базы данных имен, стали сразу действительными.

Запись A задает прямое соответствие между именем и адресом:

pollo IN A 144.206.160.40

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

Запись PTR определяет обратное соответствие:

40 IN PTR apoolo.polyn.kiae.su.

Здесь следует обратить внимание на то, что имя кончается точкой. Если этого не сделать, то к имени будет добавлено имя текущего домена.

Запись MX используется для управления рассылкой почты. Обычно данная запись применяется программой sendmail. обычно запись MX следует за записью A и не имеет имени:

IN MX 5 quest.polyn.kiae.su

Номер 5 означает приоритет рассылки, а адрес машины - адрес почтового сервера. Может быть указано несколько MX-записей для каждой машины.

CNAME определяет каноническое имя машины. Фактически оно задает синонимы для машины в записи A:

poly IN CNAME polyn

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

kiae.su IN NS arch.kiae.su

На этом описание записей файлов данных сервера имен можно закончить.

Второй типичный случай настройки машины для работы с сервером имен - это работа через удаленный сервер. Такая настройка выполняется через файл /etc/resolv.conf. Существует несколько предложений, которые можно указать в этом файле.

Предложение nonameserver указывает на то, что при выдаче запаросов на получение IP-адреса не надо обращаться к серверу имен, а следует сразу использовать файл /etc/hosts. Для того, чтобы указать адрес удаленного сервера имен, применяют команду nameserver. Для указания имени домена используют команду domain. Для того, чтобы программы использовали сервер 144.206.160.32 в качестве сервера имен и при этом предполагалось, что речь идет о домене polyn.kiae.su, в файле /etc/resolv.conf следует записать:

domain polyn.kiae.su

nameservsr 144.206.160.32

Для проверки работы сервера имен обычно используют программы ping и nslookup. Ping позволяет проверить доступность машины в сети. Для этого выполняют следующую команду:

/usr/paul>ping 144.206.160.40

Если машина доступна, то в ответ ping сообщает количество отосланных пакетов, число полученных пакетов, число потерянных пакетов и время прохождения пакета. Ping можно использовать и с доменным адресом:

/usr/paul>ping apollo.polyn.kiae.su

Если машина оказалась недоступной или ее IP-адрес не разрешен ( не получен), то следует искать ошибки в настройке сервера имен.

Программа nslookup предназначена для просмотра базы данных сервера имен. Для этого надо просто вызвать:

/usr/paul>nslookup

после чего появится приглашение nslookup. Для получения подсказки имеет смысл ввести команду help. Просмотр записей базы данных осуществляется по команде ls, а изменение сервера имен - по команде сервер:

>server polyn.net.kiae.su

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

На компьютере сама программа named может быть и не установлена, однако пользоваться ее услугами прикладные процессы могут. Для этого определяют удаленный сервер имен. В системах типа Unix это делается в файле /etc/resolvs. Данный файл позволяет сконфигурировать систему с использованием или без использования сервера имен.

nameserver 144.206.160.32

domain polyn.kiae.su

На приведенном выше примере в качестве сервера имен назначен компьютер, имеющий сетевой интерфейс 144.206.160.32. В качестве доменного префикса назначена зона polyn.kiae.su. Если система пользуется услугами сервера имен, то файл hosts при разрешении имен не используется. Для того, чтобы отказаться от услуг сервера имен, в файле /etc/resolvs надо оставить строчку:

nonameserver

Обычно необходимость в этом возникает при отказе машины-сервера имен или из-за физического повреждения сети.

Особое внимание следует обратить на то, что структура доменных имен в общем случае не совпадает с IP-структурой сети. Для иллюстрации приведем следующий пример. На рисунке 8.21 изображена IP-структура подсетей 144.206.160.0 и 144.206.192.0, которые соединяются друг с другом посредством другой подсети 144.206.130.0. На этом же множестве машин определен домен polyn.kiae.su, изображенный на рисунке 8.22.

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

Вопросы.

  1. Назвать количество уровней в схеме протоколов TCP/IP.

  2. Назвать основные протоколы уровня приложений.

  3. Назвать протоколы транспортного уровня.

  4. Назвать протоколы сетевого уровня.

  5. Назвать классы IP-адресов.

  6. Охарактеризовать структуру IP-адреса класса С.

  7. Охарактеризовать назначение подсети IP-сети.

  8. Охарактеризовать назначение шлюза в IP-сети.

  9. Охарактеризовать назначение протокола ARP.

  10. Назначение протокола IP.

  11. Назвать типы маршрутизации.

  12. Охарактеризовать назначение протокола RIP.

  13. Охарактеризовать назначение протоколов SLIP и PPP.

  14. Дать понятие доменного имени.

  15. Охарактеризовать назначение системы серверов доменных имен.