Базовый принцип организации интернет состоит в том, что каждому компьютеру в сети присвоен уникальный IP-адрес, по которому его можно идентифицировать. Но человеку такая адресация неудобна — много ли адресов такого вида можно удерживать в памяти? Поэтому для удобства пользователей компьютерам начали давать символьные имена, например office, boss, George Bush computer.

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

DNS (domain name systems, доменная система имен) служит для преобразования адреса в виде, например, www.iknowit.ru в IP-адрес, например 127.0.0.1.

Существует корень дерева -точка. Эта точка есть всегда, поэтому в большинстве случаев она опускается. Далее идут домены первого уровня. Изначально это были com, net, edu, org, mil, когда сеть вышла за границы США, появились национальные домены (например ru), позже были введены еще несколько межнациональных (такие как biz, info). На следующем уровне следуют \«домены второго уровня\», например iknowit, и так далее до имени конкретного сервера.

Таким образом, правильным адресом вебсервера, поддерживающего сайт \«как работают вещи\» будет .ru.iknowit.www. Когда возникла традиция писать адрес в другой последовательности — автору неизвестно, примем ее как данность.

Как же компьютер определяет, какому имени соответствует какой адрес? Для этого служит система DNS-серверов. При настройке программного обеспечения компьютера, подключаемого к сети, клиенту указывается как минимум один DNS-сервер(как правило,их два) — его адрес выдается провайдером. Эти адреса либо явно задаются при настройке, либо, при подключении к интернету, их получает программа установки соединения.

Предположим, пользователь с Аляски набрал адрес www.iknowit. ru. Браузер посылает запрос DNS серверу своей сети. Сервер, получив запрос, либо отвечает (если ответ ему известен), либо пересылает запрос на «вышестоящий» сервер(если он известен)или на корневой (каждому DNS-серверу известны адреса корневых DNS-серверов). Таким образом, запрос доходит до сервера зоны. Затем запрос начинает спускаться вниз — корневой сервер пересылает запрос серверу первого уровня (поддерживающего зону ru). Тот — серверу второго уровня (iknowit) и т.д., пока не найдется сервер, который точно знает такое имя, либо знает, что такое имя не существует. И результат запроса начинает путешествие обратно. Обычно исходя из соображения — спросили раз,спросят и другой, — DNS серверы запоминают на какое-то время результат запроса, и при повторном обращении проходить всю цепочку запросу не понадобится. Время, в течение которого серверы хранят такую информацию, задается администратором.

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

Теперь рассмотрим, какая же информация хранится о доменной зоне. Элементы базы DNS часто называют RR (сокращение от Resource Record). Базовый формат записи выглядит так:

[имя]

[время]

[класс]

тип

данные

Имя может быть относительным или абсолютным (FQDN — Fully Qualified Domain Name). Если имя относительное (не заканчивается точкой), то к нему автоматически добавляется имя текущего домена. Например, если в домене iknowit.ru записано «www», то полное имя будет интерпретироваться как «www. iknowit.ru»

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

Класс определяет класс сети. Практически всегда это будет IN, обозначающее INternet.

Типы:

SOA — определяет DNS зону NS — сервер имен для зоны А — преобразование имени в IP-адрес

PTR — преобразование IP-адреса в имя

MX — почтовая станция CNAME — имена машины HINFO — описание \«железа\» компьютера

TXT — комментарии или какая-то другая информация

В записях можно использовать символы # и ; для комментариев, @ для обозначения текущего домена, () — скобки — для написания данных на нескольких строках. Кроме того, можно использовать метасимвол * в имени. Порядок записей не имеет значения за одним исключением: запись SOA должна идти первой. Дальнейшие записи считаются относящимися к той же зоне, пока не встретится новая запись SOA. Как правило, после записи зоны указывают записи DNS-серверов, а остальные записи располагают по алфавиту, но это не обязательно.

Теперь попробуем рассмотреть записи. Первой описываем зону: mycompany.ru. IN SOA ns.mycompany.ru. admin, mycompany.ru.

1001 ; serial 21600 ; Refresh — 6 часов 1800 ; Retry — 30 мин 1209600 ; Expire — 2 недели

432000) ; Minimum — 5 дней

Сначала идет имя домена: mycompany.ru. (обратите внимание на точку в конце имени). Вместо имени можно было (и чаще всего так и делают) поставить знак @. ns.mycompany.ru. — основной сервер имен admin.mycompany.ru. -почтовый адрес администратора в формате имя(точка)машина затем в круглых скобках идут поля, необходимые для правильного «восприятия» вашей зоны другими серверами. Первое число — serial — является «версией» файла зоны. При внесении изменений это число надо увеличить — если вторичный сервер увидит, что его версия зоны меньше, чем у первичного сервера, то он перечитает данные. Типичной ошибкой является обновление зоны без обновления этого числа. Очень удобно в качестве serial использовать текущую дату, например, 2012040401 — 4 апреля 2012 года, первое обновление. Refresh говорит вторичным серверам, как часто они должны проверять значение serial.

Retry говорит о том, как часто вторичный сервер должен пытаться прочитать данные, если первичный сервер не отвечает.

Expire говорит вторичным серверам, в течение какого времени они должны обслуживать домен, если первичный сервер не отвечает. По истечении этого времени вторичные серверы будут считать свои данные устаревшими.

Minimum задает время жизни записей по умолчанию для данной зоны.

NS описывает сервера имен. Теперь опишем сервера имен, обслуживающие наш домен: mycompany.ru. IN NS ns.mycompany.ru. mycompany.ru. IN NS ns.provider.ru.

Здесь ничего сложного нет. Так как имя зоны совпадает с указанным в поле имя записи SOA, то его можно оставить пустым.

Дальше идут записи А, описывающие ваши компьютеры и позволяющие преобразовать имена в IP-адреса, major IN А 192. 168-.0.1 colonel IN А 192.168.0.2 IN HINFO \«2xPIV-l.7 Win2K\»general.mycompany.ru.

IN A 192.168.0.3 Здесь сложного тоже ничего нет — имена могут быть относительные или «абсолютные», можно добавить записи о конфигурации машины (пропущенное имя в записи HINFO говорит о том, что имеется в виду предыдущее имя). Не забудьте добавить записи localhost. IN А 127 .0.0.1

localhost IN CNAME localhost. mycompany.ru. IN A 192.168.0 .1

Первая отдает адрес 127.0.0.1 любой машине, запросившей имя localhost, вторая — localhost. mycompany.ru, а третья говорит, куда послать клиента, который хочет попасть на mycompany.ru Записи CNAME позволяют дать машинам удобные или значащие имена. Например: ftp IN CNAME general говорит, что ftp.mycompany.ru живет по адресу 192.168.0.3. CNAME удобно использовать, если вы меняете имя машины, но хотите оставить доступ для клиентов, которые помнят старое имя. Удобный трюк с использованием CNAME заключается в назначении коротких имен частоиспользуемым адресам. Например, прописав ik IN CNAME www.iknowit.ru-, вы сможете заходить на iknowit, просто набирая ik в качестве адреса.

Записи MX нужны для того, чтобы указать, куда пересылать почту. В этих записях добавляется приоритет — чем он меньше, тем выше приоритет машины. Приоритеты нужны для того, чтобы можно было задать несколько записей и перенаправить почту на альтернативный сервер, если основной не работает. MX запись должна быть указана для домена в целом и, возможно, для каждой машины в отдельности. Сложного тут тоже ничего нет за одним исключением: очень часто встречается неправильно использование метасимвола \«*\». Запись \«*.mycompany.ги.\» означает не \«любая машина домена mycompany.ru\», а \«любая машина, которая еще не была описана\». Причем, даже если использовалась не MX, а, например, A-запись, то звездочка все равно не будет работать для этой машины.

На этом создание файла зоны можно считать законченным. Но остается более увлекательное занятие: описание реверсной зоны. Если предыдущий файл позволяет определить IP-адрес по имени, то теперь надо сделать так, чтобы по IP-адресу можно было «вычислить» имя. Отсутствие реверсной зоны является довольно типичной ошибкой и может приводить к самым разным ошибкам — начиная от сбоев FTP-серверов и заканчивая классификацией отправленных писем как спама.

Для обратного преобразования используются записи PTR. Но не торопитесь их вписывать — тут есть одна хитрость: они пишутся в отдельном специальном домене верхнего уровня, с названием IN-ADDR.ARPA. Домен этот был создан для того, чтобы и для прямого, и для обратного преобразований можно было использовать одни и те же программные модули. Дело в том, что «мнемонические» имена пишутся слева направо: www.listsoft.iu означает, что www находится в listsoft, a listsoft — в ru. IP-адреса пишутся наоборот: 195.242.9.4 означает, что машина 4 находится в подсети 9, которая является частью 195.242, и для сохранения «единого стиля» адресов для обратного преобразования используются имена вида 4.9.242.195.IN-ADDR.ARPA (обратите внимание, что IP-адрес записан в обратном порядке).

Итак, мы создаем еще один файл зоны (для зоны, например, 0.168.192.IN-ADDR.ARPA), копируем в него запись SOA (а заодно и NS), после чего начинаем писать:

1    IN PTR major.

mycompany.ru.

2    IN PTR colonel.

mycompany.ru.

Можно задавать не только относительные, но и абсолютные имена:

3.0.168.192.IN-ADDR.ARPA. IN PTR general.mycompany.ru.