Таблица 7.2. Основные типы записей ресурсов DNS
Тип
Смысл
Значение
SOA
Начальная запись зоны
Параметры для этой зоны
A
IPv4-адрес хоста
Целое число, 32 двоичных разряда
AAAA
^6-адрес хоста
Целое число, 128 двоичных разрядов
MX
Обмен почтой
Приоритет, с которым домен желает принимать электронную почту
NS
Сервер имен
Имя сервера для этого домена
CNAME
Каноническое имя
Имя домена
PTR
Указатель
Псевдоним IP-адреса
SPF
Правила отправки почты
Правила отправки почты, закодированные в текстовом виде
SRV
Сервис
Хост, предоставляющий данный сервис
TXT
Текст
Не интерпретируемый ASCII-текст
Еще один важный тип записи — это NS. Запись NS содержит информацию о сервере имени для домена или поддомена. Это хост, на котором содержится копия базы данных для домена. Он используется в процессе поиска имени, поэтому мы вкратце опишем этот процесс.
Записи CNAME позволяют создавать псевдонимы. Представим себе, что человек, знакомый в общих чертах с формированием имен в Интернете, хочет послать сообщение пользователю paul на отделении вычислительной техники Массачусетского технологического института (M.I.T.). Он может попытаться угадать нужный ему адрес, составив строку [email protected]. Однако этот адрес работать не будет, так как домен отделения вычислительной техники Массачусетского технологического института на самом деле называется csail.mit.edu. Таким образом, для удобства тех, кто этого не знает, M.I.T. может создать запись CNAME, позволяющую обращаться к нужному домену по обоим именам. Такая запись будет иметь следующий вид: cs.mit.edu 86400 IN CNAME csail.mit.edu
Как и CNAME, запись PTR указывает на другое имя. Однако в отличие от записи CNAME, являющейся, по сути, макроопределением (то есть механизмом замены одной строки другой), PTR представляет собой обычный тип данных DNS, интерпретация которого зависит от контекста. На практике запись PTR почти всегда используется для ассоциации имени с IP-адресом, что позволяет по IP-адресу находить имя соответствующей машины. Это называется обратным поиском (reverse lookups).
Запись SRV — это новый тип, позволяющий определять хост для искомого сервиса в домене. Например, веб-сервер для cs.wasington.edu может быть определен как cockatoo.cs.wasington.edu. Данная запись является расширенным вариантом записи MX, которая выполняет ту же задачу в рамках почтовых сервисов.
SPF — также новый тип записи. Он позволяет домену закодировать информацию о том, какие машины будут отсылать с него письма в остальную часть Интернета. Это помогает принимающим машинам проверять, допустима ли данная почта. Если почта приходит с машины, которая называется dodgy, а доменные записи говорят о том, что почта с домена будет отсылаться только машиной под названием smtp, велики шансы того, что данные сообщения являются спамом.
Последние в списке, TXT-записи изначально предназначались для того, чтобы позволить доменам идентифицировать себя произвольным образом. Сегодня с их помощью обычно кодируется информация, предназначенная для считывания машиной, обычно это SPF-информация.
Наконец, последнее поле записи ресурса — это поле Value (значение) — может быть числом, именем домена или текстовой ASCII-строкой. Смысл поля зависит от типа записи. Краткое описание поля Value для каждого из основных типов записей дано в табл. 7.2.
Пример информации, хранящейся в базе данных DNS домена, приведен в листинге 7.1. В нем показана часть (гипотетической) базы данных домена cs.vu.nl, представленного также в виде узла дерева доменов на рис. 7.1. В базе данных содержится семь типов записей ресурсов.
Листинг 7.1. Часть возможной базы данных домена cs.vu.nl
; Официальная
информация
для cs.vu.nl
cs.vu.nl.
86400
IN
SOA star boss (9527,7200,7200,241920,86400)
cs.vu.nl.
86400
IN
MX 1 zephyr
cs.vu.nl.
86400
IN
MX 2 top
cs.vu.nl.
86400
IN
NS star
star
86400
IN
A 130.37.56.205
zephyr
86400
IN
A 130.37.20.10
top
86400
IN
A 130.37.20.11
www
86400
IN
CNAME star.cs.vu.nl
ftp
86400
IN
CNAME zephyr.cs.vu.nl
flits
86400
IN
A 130.37.16.112
flits
86400
IN
A 192.31.231.165
flits
86400
IN
MX 1 flits
flits
86400
IN
MX 2 zephyr
flits
86400
IN
MX 3 top
rowboat
IN
A
130.37.56.201
IN
MX
1 rowboat
IN
MX
2 zephyr
little-sister
IN
A
130.37.62.23
laserjet
IN
A
192.31.231.216
В первой не закомментированной строке листинга 7.1 дается основная информация о домене, которая в дальнейшем нас интересовать не будет. Следующие две строки определяют два хоста, с которыми следует связаться в первую очередь при попытке доставить электронную почту, посланную по адресу [email protected]. Хост по имени zephyr (специальная машина) следует опросить первым. В случае неудачи следует попробовать доставить письмо машине по имени top. В следующей строке определен сервер имен для домена star.
После пустой строки, добавленной для удобства чтения, следуют строки, сообщающие IP-адреса для star, zephyr и top. Далее следует псевдоним www.cs.vu.nl, позволяющий не обращаться к какой-то конкретной машине. Создание этого псевдонима позволяет домену cs.vu.nl изменять свой WWW-сервер, не меняя адреса, по которому пользователи смогут продолжать к нему обращаться. То же справедливо и для домена ftp.cs.vu.nl — FTP-сервера.
В секции, предназначенной для машины flits, перечислены два IP-адреса и три возможных варианта адреса для обработки почты, отосланной на flits.cs.vu.nl. В первую очередь, естественно, следует пытаться доставить письмо самому компьютеру flits. Но если этот хост выключен, следует продолжать попытки, обращаясь к хостам zephyr и top.
Следующие три строки содержат типичные записи для компьютера, в данном случае для rowboat.cs.vu.nl. Хранящаяся в базе данных информация содержит IP-адрес, а также имена первого и второго хостов для доставки почты. Следом идет запись о машине, которая сама не способна получать почту. Последняя строка, вероятно, описывает лазерный принтер, подключенный к Интернету.
7.1.3. Серверы имен
Теоретически один сервер мог бы содержать всю базу данных DNS и отвечать на все запросы к ней. На практике этот сервер оказался бы настолько перегруженным, что был бы просто бесполезным. Более того, если бы с ним когда-нибудь что-нибудь случилось, то весь Интернет не работал бы.
Чтобы избежать проблем, связанных с хранением всей информации в одном месте, пространство имен DNS разделено на непересекающиеся зоны (zones). Один возможный способ разделения пространства имен, показанного на рис. 7.1, на зоны изображен на рис. 7.2. Каждая очерченная зона содержит часть общего дерева доменов.
Расстановка границ зон целиком зависит от администратора зоны. Это решение основывается на том, сколько серверов имен требуется в той или иной зоне. Например, на рис. 7.2 у Вашингтонского университета есть зона для washington.edu, управляющая доменом eng.washington.edu, но не доменом cs.washington.edu, расположенным в отдельной зоне со своими серверами имен. Подобное решение может быть принято, когда факультет английского языка не хочет управлять собственным сервером имен, но этого хочет факультет вычислительной техники.