Главная > Сети > Internet >
Что такое DNS (Domain Name System) [1/2]

Имена Интернет

Подстрешный Артем,
программист
Radio-MSU Network,
art@radio-msu.net

Введение

 Для человека, поработавшего даже небольшое время в сети, становится совершенно естественным, что у каждого компьютера, подключенного к интернет, есть свое название, имя, которое легко запомнить. Система, которая позволяет нам использовать эти привычные для человека имена, избегая других неудобных способов "маркировки" компьютеров, называется DNS (Domain Name System, доменная система имен).

В интернете существует, вообще говоря, два основных способа адресации компьютеров. Первый - численный (или IP-адрес; например, 193.124.134.101), второй - символьный (noc.radio-msu.net). DNS создана для того, чтобы поставить в соответствие один способ другому.

Чтобы облегчить упорядочивание наименований, вся структура компьютерных имен устроена таким образом:есть отдельные уровни (домены), которые могут включать в себя как другие поддомены, так и имена компьютеров. Все названия должны состоять только из латинских букв, цифр и, может быть, знака "минус". Отдельные уровни доменов разделяются точкой.

Типичное полное доменное имя компьютера может выглядеть так: computer3.otdel-5.firma.msk.ru В этом примере такой адрес мы присвоили компьютеру номер три, который стоит в отделе (номер сообразите сами) фирмы с изысканным английским названием "firma", которая находится в Москве ("msk"), в России ("ru"). Локальным именем компьютера (hostname) здесь является "computer3", а ".ru" обычно называется доменом верхнего уровня. Домен msk.ru, соответственно, является доменом второго уровня; firma.msk.ru - третьего...

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

Тот, кто имеет право администрировать домен, может делать изменения только в пределах этого домена. Например, системный администратор отдела N5 может, скажем, изменить имя "computer3" на "computer4" или на что-то более человеческое, например, назвать этот компьютер "julia" (Тогда полный его адрес станет julia.otdel-5.firma.msk.ru). Но для того, чтобы изменить имя домена 4-го уровня "otdel-5", администратору придется просить об этом у сисадмина фирмы (если, конечно, это не одно и тоже лицо). Процедура получения имени, например, в зоне .ru или .com называется регистрацией домена. Конечно, каждая компания, подключающаяся к интернет, стремится зарегистрировать как можно более естественное и легкое для запоминания имя. Так, для "Microsoft inc." логично зарезервировать домен microsoft.com

Доменов верхнего уровня очень немного - всего около 250.. Большая часть из них - так называемые, географические домены. Например, .de (Deutschland, Германия), .ru (Russia, Россия), .iq (Iraq, Ирак). Оставшиеся негеографические домены верхнего уровня - .com (для коммерческих компаний), .net (для сетевых ресурсов), .edu (образовательные учреждения), .mil (военные организации), .org (некоммерческие организации), .gov (правительственные ведомства), .int (интернациональные корпорации).

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

К началу 1998 года во всем интернете зарегистрировано около 30 миллионов хостов. Распределение по доменам верхнего уровня приведено в таблице:

домен  число хостов  описание
 com    8201511      Commercial
 net    5283568      Networks
 edu    3944967      Educational
 jp     1168956      Japan
 mil    1099186      US Military
 us     1076583      United States
 de      994926      Germany
 uk      987733      United Kingdom
 ca      839141      Canada
 au      665403      Australia
 org     519862      Organizations
 gov     497646      Government

Россия в этом списке находится на 28-м месте. Под доменом .ru зарегистрировано около 100 тысяч компьютеров. А в Антарктике (.aq), как оказывается, нет ни одного компьютера, подключенного к интернет..

DNS вашей компании

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

- Подключение к провайдеру. Физическое подключение может быть выполнено очень многими различными способами: от обычного модема до радиосетей и оптоволокна. Способ подключения и, соответственно, оплата оговариваются непосредственно с провайдером.

- Получение численных (IP) адресов. Для того, чтобы ваши компьютеры, подключенные к интернет, стали доступны, необходимо выделить для них уникальные численные адреса. Обычно в договоре на подключение к интернет указывается, сколько и каких адресов отдается в пользование вашей компании. Формат IP-адресов такой: четыре числа от 1 до 255, отделенных точками. Например, 193.124.134.101 - IP-адрес какого-то компьютера в сети.

- Настройка DNS. Допустим, вы получили блок IP-адресов. Теперь следует правильно сконфигурировать систему имен и корректно настроить работу серверов с этими именами.

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

- Дальнейшая установка программного обеспечения на компьютеры, требующего явного указания доменного имени (например, web-сервера).

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

Прежде всего, для полноценной работы DNS вам необходимо два или больше компьютеров, так называемых, name-серверов, которые независимо друг от друга подключенны к интернет (лучше, если они будут находиться в разных сетях или даже разных странах). Такая структура обеспечит неизменную работу системы преобразования символьного адреса в числовой и обратно, даже если какое-то время некоторые из этих компьютеров будут недоступны по сети. На таких компьютерах запускается специальная программа-демон named, которая обрабатывает запросы на преобразование адресов и отвечает на них. Настроить DNS - означает корректно написать конфигурационные файлы named.

Name-сервера бывают primary и secondary. Иногда их называют первичными и вторичными, а также master и slave. Primary name-сервер может быть только один. На нем хранится вся информация о доменах, и если происходят изменения, то конфигурация правится только на нем. Secondary name-серверов может быть несколько, но обычная практика - один secondary nameserver. Дополнительные вторичные name-сервера служат для повышения скорости расшифровывания вашего адреса и для повышения устойчивости такого преобразования. Для небольших сетей три и больше вторичных name-сервера - это уже излишество. Secondary name-сервера с заданной периодичностью в автоматическом режиме считывают текущую конфигурацию с primary-сервера. Заметим, что один и тот же компьютер может одновременно являться primary-сервером для одних доменов и secondary nameserver'ом для нескольких других. Конкретную реализацию таких DNS-серверов мы рассмотрим в следующих разделах.

Выбор и регистрация домена

Если вы имеете некоторый опыт работы в интернет, то вам, скорее всего, известны примеры доменных имен различных организаций и фирм. В качестве примера приведем случайно взятые адреса серверов:
 www.playboy.com - web-сервер журнала "Playboy"
 www.internic.net - основной web-сервер компании Network Solutions
 rs.internic.net - регистрационный сервер Network Solutions
 www.ripn.net - сервер организации RIPN


Как настроить DNS

Сама программа named в большинстве случаев входит в стандартный набор средств операционных систем UNIX. Если в вашем случае ее не оказалось, попробуйте сделать поиск программы named для вашей системы в поисковых серверах интернета (AltaVista, Lycos и т.д.). Обычно главный файл с настройками named называется named.boot и лежит в директории /etc. Запускать демон named обязательно с привилегиями пользователя root.

В данном случае рассматривается FreeBSD версии 2.2.2 со стандартной named. Сама программа лежит в /usr/sbin/named, а заготовки для конфигурации в директории /etc/namedb.

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

Скопируем named.boot в нужную директорию:

% cp /etc/namedb/named.boot /etc

Комментарии в named.boot начинаются с ";" на первом месте в строке.

Рассмотрим различные директивы в named.boot:


directory       /etc/namedb

Это та директория, в которой будут храниться конфигурационные файлы для каждого из доменов, которые этот name-сервер будет держать.


cache    .   named.root

Эта специальная опция задает имя файла named.root в директории /etc/namedb, в котором содержатся IP-адреса компьютеров, которые "знают все" о доменных именах, то есть, содержат домен "точка". В этих серверах хранится информация обо всех доменах верхнего уровня, и если на DNS-запрос ответ не был дан на более раннем этапе, то, добежав до одного из таких top-level серверов, запрос пойдет по необходимой ветке вниз. Вот кусок этого файла:


; formerly NS.INTERNIC.NET
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4

; formerly NS1.ISI.EDU
. 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107

Файл named.root впоследствие нужно периодически забирать с FTP.RS.INTERNIC.NET, так как IP-адреса top-level серверов через несколько месяцев могут и поменяться.

Следующая директива в конфигурационном файле говорит о том, что наш name-сервер является primary name-сервером для какой-то зоны, то есть, содержит всю информацию о ней. Синтаксис ее таков:

primary [имя.домена] [имя_файла]

Пример:


primary radio-msu.net db.radio-msu.net
primary math.msu.su db.math.msu.su

Это означает, что мы установили primary nameserver для доменов radio-msu.net (домен второго уровня) и math.msu.su (третьего уровня), но мы проделали только небольшую часть работы. После этого нужно будет описать эти домены в текстовых файлах, называющихся db.radio-msu.net и db.msu.su в директории /etc/namedb. Мы специально выбрали имена файлов похожими на имена соответствующих им доменов из соображений удобства. Имена конфигурационных файлов больше нигде роли не играют, и вы вправе их называть как угодно. Создавать и редактировать их можно при помощи обычного текстового редактора, находясь в директории /etc/namedb. Подробное описание db.* файлов будет дано чуть ниже.

Для того, чтобы стать вторичным nameserver'ом для других доменов, в named.boot нужно написать строчку такого плана:


secondary npi.msu.su    158.250.2.232 db.npi.msu.su
secondary rector.msu.su 193.232.112.1 db.rector.msu.su

Общий вид директивы таков:

secondary [имя.домена] [IP-адрес primary nameserver'а] [имя_файла]

Первый параметр здесь - имя домена, для которого мы устанавливаем secondary. Для него обязательно должен существовать первичный name-сервер, с которого демон будет периодически считывать данные об этом домене. Вместо одного IP-адреса primary nameserver'а может идти и список адресов, откуда еще можно узнать информацию о домене. Это используется в том случае, если мы создаем многоуровневую систему nameserver'ов с различными приоритетами, и т.д. В большинстве случаев в это поле заносится только адрес primary. Последний параметр - имя временного файла, выбранное нами произвольным образом, в котором демон named будет хранить информацию о домене, полученную от primary name-сервера. Как и в первом случае, имена файлов лучше назначать созвучными с именем домена. Кстати, для того, чтобы установить вторичный nameserver для домена, нужно только добавить одну такую строчку named.boot, и все.

Чтобы правильно настроить primary name-сервер, нам осталось рассмотреть конфигурационные файлы db.* (эти файлы также называются файлами зоны). Общий вид записи в этом файле:

[domain] [opt_ttl] [opt_class] [type] [resource_record_data]

где domain есть "." для описания домена верхнего уровня, "@" для текущего домена или обычное доменное имя (в частности, просто имя машины (hostname)).

opt_ttl - необязательное поле, целое число, которое означает время жизни (time-to-live) этой записи в секундах. По истечении этого срока содержимое записи должно автоматически обновиться.

opt_class - тип адреса объекта. Такой тип существует только один, который, собственно, и указывается ("IN").

type - тип записи (рассмариваются ниже)

resource_record_data - данные этого типа

Рассмотрим пример primary nameserver'а и соответствующего ему файлу зоны для домена radio-msu.net. В случае, если вы будете использовать эти примеры как руководство, не забудьте, пожайлуста, поменять все записи соответственно структуре вашей сети.

В named.boot мы должны прописать такую строчку:


primary  radio-msu.net  db.radio-msu.net

И в директории /etc/namedb создаем файл с названием db.radio-msu.net примерно такого содержания:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;     BIND configuration for the primary nameserver
;             Radio-MSU.NET host table
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@               IN      SOA  ns.radio-msu.net.  art.radio-msu.net. (
                        1998022300      ; Serial
                        28800           ; Refresh
                        7200            ; Retry
                        604800          ; Expire
                        86400 ) ; Minimum ttl
;----------------------------------------------------------------
                IN      NS              ns.radio-msu.net.
                        NS              mskws.desy.de.
localhost       IN      A               127.0.0.1
;----------------------------------------------------------------
@               IN      MX      20      mpr
                        MX      40      mskws.desy.de.
;----------------------------------------------------------------
ns              IN      A               193.124.134.1
                IN      MX      10      ns
                IN      MX      50      relay
;----------------------------------------------------------------
telion                  IN      A       193.124.134.2
                        MX      10      telion
                        MX      20      relay.radio-msu.net.
                        MX      50      mskws.desy.de.
www                     IN      CNAME   telion
;----------------------------------------------------------------
noc                     IN      A       193.124.134.101
                        IN      MX      10 noc
                        IN      MX      20 relay
;----------------------------------------------------------------
mpr                     IN      A       193.124.134.3
                        MX      10      mpr
                        MX      50      mskws.desy.de.
pop                     IN      A       193.124.134.3
uucp                    IN      A       193.124.134.3
relay                   IN      A       193.124.134.3
mail                    IN      A       193.124.134.3
vika                    IN      A       193.124.134.5
                        MX      10      vika
                        MX      50      relay
;----------------------------------------------------------------
brusun                  IN      A       193.124.134.20
diana                   IN      A       193.124.134.7
sftgames                IN      CNAME   telion
chat                    IN      CNAME   brusun
;------------------------  THE  END  ----------------------------

Заметим, что все строки, начинающиеся с ";", являются комментариями и используются для улучшения читабельности текста.

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

Самая первая запись в любом таком файле выглядит следующим образом:


@               IN      SOA  ns.radio-msu.net.  art.radio-msu.net. (

Символ "@" означает, что дальнейшие директивы относятся к текущему домену (то есть, к домену radio-msu.net). Поле "IN" можнно считать несущественым, а после него идет описание типа записи:

SOA - (Start of authorizing) - зона ответственности. Дальнейшие параметры определяют, кто отвечает за этот домен, как часто обновлять информацию об этой зоне на secondary-серверах, а также другую служебную информацию. Первое поле параметров этой записи - имя primary name-сервера, содержащего зону. После него следует адрес технического контактного лица, отвечающего за домен. Обратите особое внимание на точки в конце этих адресов! Точка в конце означает, что этот адрес является обычным доменным именем, и его не нужно дополнять справа доменом, которому соответствует наш конфигурационный файл. То есть, если вместо ns.radio-msu.net. написать ns.serv, то будет иметься ввиду компьютер ns.serv.radio-msu.net

Точку в конце символьных имен нужно не забывать ставить и в других полях зоны. Это одна из самых распространенных ошибок. Написать "ns.radio-msu.net" - значит, иметь ввиду сервер "ns.radio-msu.net.radio-msu.net", которого просто не существует.

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

Первое число ("1998022300" у нас) - сериальный номер (serial number) записи. По изменению сериального номера secondary name-сервера определяют, было ли изменено содержимое домена или нет, и соответственно, нужно ли считывать весь домен с primary-сервера. Сериальный номер должен состоять из десяти цифр и обязательно должен быть заменен вручную на какой-либо больший при любом измеении любой записи в файле домена. Для этих целей идеально подходит такой вариант: первые четыре цифры serial'а - год, затем две на месяц и число. Последние две - порядковый номер (начиная с 00) редакции в течение дня. Если мы меняем конфигурацию домена, то заодно мы должны увеличить и сериальный номер. А при таком задании serial'а увеличение происходит автоматом.

После сериального номера идет поле Refresh, которое указывает время в секундах, по истечении которого secondary name-сервер проверяет не изменилась ли данная зона на primary-сервере, и если изменения были, то происходит передача файла с зоной.

Если при этом у него не получилось по каким-либо причинам соединиться с сервером, то следующую попытку secondary сделает по истечении Retry секунд (третий параметр).

В том случае, если и последующие попытки подключиться к primary и узнать информацию о зоне оканчиваются неудачей, вторичный name-сервер по прошествии Expire секунд забудет всю информацию по этой зоне.

Последнее поле ('Minimum TTL') указывает на минимальное время жизни (Time To Live) записей в файле зоны, если только в какой-то записи не будет указано другое значение в необязательном поле opt_ttl.

Рекомендуемые значения для этих величин таковы:


 28800  ; Refresh     8 hours
 7200   ; Retry       2 hours
 604800 ; Expire      7 days
 86400  ; Minimum TTL 1 day

Однако вам никто не вправе помешать поставить свои значения. Только не ставьте слишком маленькие величины (меньше часа) - иначе вы просто забьете сеть бесполезной информацией, непрерывно пересылаемой от primary к secondary.

Страница 1 | 2 | Предыдущая | Следующая


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2007
Сайт создан в системе uCoz