Система Доменных Имен (Domain Name System)

Система Доменных Имен (Domain Name System)

Корневое имя (root's name) имеет нулевую метку ("") и обозначается одиночной точкой ("."). Каждый узел (node) дерева представляет раздел общей базы данных или домен (domain). Каждый домен в дальнейшем может делиться на подразделы, называемые в DNS поддоменами. Поддомены представляются как потомки своих родительских узлов (parent nodes). Каждый домен имеет метку (label), которая идентифицирует его местоположение относительно его родительского домена. Кроме того домен имеет доменное имя (domain name), которое идентифицирует его местоположение в базе данных DNS. Полное доменное имя представляет собой последовательность меток от корневого домена, которые разделяются между собой символом ".". В DNS каждый домен может администрироваться различными организациями. При этом каждая такая организация может затем делить свой домен и предоставлять полномочие на администрирование этих поддоменов другим организациям. Например, Сетевой Информационный Центр (NIC) отвечает за домен "edu" (educational), но предоставляет полномочия для поддомена "berkeley.edu" университету Беркли в Калифорнии. Домены могут содержать как хост-машины, так и другие домены (свои поддомены). Доменные имена используются, как индексы в базе данных DNS. Каждая хост-машина в сети имеет доменное имя, которое является указателем на информацию об этой хост-машине. Эта информация может содержать IP-адрес, маршрутную информацию почтовой системы и т.д.. Хост-машина может иметь одно или несколько доменных имен-псевдонимов (domain name aliases), которые является простыми указателями одного доменного имени (имени-псевдонима) на другое (каноническое доменное имя (canonical domain name)).

2. Компоненты DNS

2.1. Пространство доменных имен 2.1.1. Доменные имена

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

Так как абсолютное доменное имя связывается с корнем, оно однозначно специфицирует местоположение узла в иерархии. Имена без точки на конце иногда интерпретируются, как связанные с некоторым доменом, отличным от корневого. Абсолютное доменное имя также называют полно-квалифицированным доменным именем (fully-qualifed domain name или FQDN).

2.1.2. Домены

Каждое доменное имя может находиться в нескольких поддеревьях, и соответственно в нескольких доменах. Например, доменное имя "main.gnu.ru" является частью домена "gnu.ru", а также и частью домена "ru". Хост-машины также являются узлами DNS-дерева, и ,кроме того, также являются доменами. Доменные имена хост-машин указывают на информацию об определенной хост-машине. Домен содержит все хост-машины, доменные имена которых находятся внутри этого домена. Хост-машины в домене связаны логически, часто по географическому или организационному признаку, а не по принадлежности к определенной сети или классу IP-адресов. В одном домене могут находиться хост-машины из разных сетей и даже из разных стран. Доменные имена внутри домена могут быть именами хост-машин или ссылаться на структурную информацию о поддоменах. Причем, одно и тоже доменное имя может выступать как в качестве имени хост-машины, так и в качестве имени домена. Например, имя "hp.com" является именем домена компании Hewlett-Packard и именем хост-машины, которая осуществляет маршрутизацию почты между HP и Internet. Тип информации, которую необходимо найти (о хост-машине или поддомене), зависит от контекста использования доменного имени.

2.1.3. Записи о ресурсах 2.1.4. Домены верхнего уровня
  • arpa: для самой DARPA (Department of Defense Advanced Research Projects Agency)
  • com: для коммерческих организаций
  • edu: для учебных заведений
  • gov: для невоенных правительственных учреждений США
  • mil: для военных учреждений США
  • net: для организаций прямо привлеченных для обеспечения и поддержки ARPANET и ее служб
  • org: для других организаций
2.2. Серверы имен (name servers) 2.2.1. Делегирование полномочий 2.2.2. Сервер имен

Однако если поддомен какого-либо домена не делегируется, то зона будет содержать доменные имена и данные этого поддомена. Например, могут существовать поддомены "de.ru" и "ef.ru" домена "ru", но не делегироваться. В этом случае зона "ru" будет содержать данные поддоменов "de.ru" и "ef.ru", но не будет включать данные других поддоменов (рисунок 8.7).

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

2.2.3. Типы серверов имен 2.2.4. Файлы данных 2.3. Решающие программы (resolvers)

3. Разрешение доменных имен (name resolution)

3.1. Корневые серверы имен

Локальный сервер имен посылает запрос корневому серверу имен об адресе хост-машины girigiri.gbrmpa.gov.au. Корневой сервер возвращает адрес сервера имен домена "au". Затем локальный сервер обращается к серверу "au" с тем же вопросом, и получает указатель на сервер имен "gov.au". Сервер имен "gov.au" указывает локальному серверу на сервер "gbrmpa.gov.au". В заключении локальный сервер запрашивает сервер "gbrmpa.gov.au" и получает от него требуемый адрес.

3.2. Рекурсивное и итеративное разрешения имен

4. Преобразование адресов в доменные имена

Заметим, что когда читается доменное имя из домена in-addr.arpa, IP-адрес представляется в обратном порядке. Например, если хост winnie.corp.hp.com имеет IP-адрес 15.16.192.152, то соответствующий ему поддомен in-addr.arpa будет 152.192.16.15.in-addr.arpa, который устанавливает обратное соответствие на доменное имя winnie.corp.hp.com.

5. Обратные запросы (inverse queries)

6. Кэширование

7. Спецификация DNS

7.1. Формат сообщения DNS

Секция заголовка (header) присутствует всегда и включает поля, которые описывают другие секции, присутствующие в сообщении. Секция запроса (question) содержит поля, описывающие запрос: тип запроса (QTYPE), класс (QCLASS) и доменное имя запроса (QNAME). Остальные три секции имеют одинаковый формат: связанный список записей о ресурсах (RRs), который может быть пустым. Секция ответов (answer) содержит записи о ресурсах, которые отвечают на запрос. Секция полномочий (authority) содержит записи о ресурсах, которые указывают на полномочные серверы; дополнительно может содержать запись о ресурсе "начала полномочий" (start of authority или SOA) для авторизованных данных в секции ответов. Дополнительная секция (additional) содержит записи о ресурсах, которые связаны с запросом, но не точно отвечают на запрос.

7.2. Формат секции заголовка

Поля заголовка имеют следующие значения: ID идентификатор сообщения (16 бит), который генерируется программой, выполняющей запрос; этот идентификатор копируется в соответствующий ответ и используется запрашивающей программой для проверки. QR однобитовое поле, определяющее является ли сообщение запросом (0) или ответов (1). Opcode код операции (4 бита); значение устанавливается запрашивающей программой и копируется в ответное сообщение; значения могут быть следующие: 0 стандартный запрос (QUERY), 1 инверсный запрос (IQUERY), 2 запрос состояния сервера (STATUS), 3-15 зарезервированы. AA полномочный ответ (1 бит); этот бит имеет значение только для ответа и, если установлен в 1, то он указывает, что отвечающий сервер имен является полномочным по отношению к имени домена, представленному в запросе. TC усечение (1 бит); если этот бит установлен в 1, то указывает, что сообщение было усечено по причине того, что его длина больше разрешенного значения канала передачи. RD требуется рекурсия (1 бит); если этот бит установлен, то требует от сервера имен выполнения запроса рекурсивно; копируется в ответ. RA рекурсия доступна (1 бит); устанавливается или сбрасывается в ответе и указывает, поддерживает ли сервер имен рекурсивные запросы. Z зарезервировано (3 бита); должно быть нулевым в запросе и ответе. RCODE код ответа (4 бита); устанавливается в ответных сообщениях и имеет следующие значения: 0 ошибок нет (no error condition); 1 ошибка формата (format error) - сервер не в состоянии интерпретировать запрос; 2 ошибка сервера (server failure) - сервер не способен обработать запрос из-за проблем с сервером имен; 3 ошибка в имени (name error) - значимо только в ответе полномочного сервера имен и означает, что доменное имя, указанное в запросе, не существует; 4 не реализован (not implemented); сервер не поддерживает требуемый вид запроса; 5 отказ (refused); сервер имен отказывается выполнять указанную операцию, так как выполнение этой операции для данной запрашивающей стороны запрещено политикой сервера; 6-15 зарезервировано. QDCOUNT определяет количество элементов в секции вопросов (2 байта); ANCOUNT определяет количество записей о ресурсах в секции ответов (2 байта); NSCOUNT определяет количество записей о ресурсах о полномочных серверах имен в секции полномочий (2 байта); ARCOUNT определяет количество записей о ресурсах в дополнительной секции (2 байта).

7.3. Формат секции запроса

Поля имеют следующие значения: QNAME запрашиваемое доменное имя (question name) (переменной длины); QTYPE тип запроса (question type); двухбайтовый код, описывающий тип запроса: 1 адрес хост-машины (a), 2 полномочный сервер имен (ns), 5 каноническое имя для псевдонима (cname), 6 начало полномочий (soa), 11 описание стандартной услуги (wks), 13 информация о хост-машине (hinfo), 14 информация о почтовом ящике или списке почтовых адресов (minfo), 15 запись о почтовом сервере (mx). QCLASS двухбайтовый код, специфицирующий класс запроса: 1 Internet (in), 3 M.I.T. Сhaosnet (ch), 255 любой класс.

7.4. Формат записи о ресурсе

Поля имеют следующие значения: NAME доменное имя, к которому относится данная запись о ресурсе (переменной длины); TYPE определяет один из типов записей о ресурсах (2 байта); это поле определяет смысл данных поля RDATA; CLASS определяет класс данных поля RDATA (2 байта); TTL время жизни (time to live) (4 байта); временной интервал (в секундах), в течение которого данная запись о ресурсе может кэшироваться; нулевое значение означает, что она не должна кэшироваться; RDLENGTH определяет количество байтов в поле RDATA (2 байта); RDATA строка переменной длины, описывающая ресурс; формат этой информации зависит от полей TYPE и CLASS; например, если TYPE = A и CLASS = IN, то поле RDATA содержит 4-байтный IP-адрес.

7.5. Сжатие сообщений

Для уменьшения размера сообщений доменная система применяет схему сжатия, которая исключает повторение доменных имен в сообщении. В этой схеме все доменное имя или список меток на конце доменного имени заменяется указателем на такое же имя, встреченное ранее в этом сообщение. Указатель имеет длину 2 байта. Его формат представлен на рисунке 8.14.

Первые 2 бита байта равны 1. Это позволяет отличить указатель от метки, так как метка должна начинаться с нулевых битов, потому что она ограничена длиной в 63 октета. Поле OFFSET, представленное следующими 14 битами, является смещением от начала сообщения DNS (т.е. от первого октета поля ID в заголовке). Нулевое смещение специфицирует первый байт поля ID. Например, в дейтограмме необходимо использовать доменные имена F.ISI.ARPA, FOO.F.ISI.ARPA, ARPA и метку корня. Игнорируя другие поля сообщения, доменные имена будут представляться, как показано на рисунке 8.15.

На рисунке 8.15 доменное имя F.ISI.ARPA имеет смещение 20. Доменное имя FOO.F.ISI.ARPA имеет смещение 40; его описание использует указатель для связывания метки FOO с именем F.ISI.ARPA, определенным выше. Доменное имя ARPA имеет смещение 64 и использует указатель на компонент ARPA в имени F.ISI.ARPA, т.е. указывает на последнюю метку со смещением 26. Доменное имя корня определяет одиночный нулевой октет на смещении 92; доменное имя корня не имеет меток.

7.6. Передача сообщений

8. Внутренности сервера имен

8.1. Общие понятия
  • записи о ресурсах серверов имен (на каждые сервер одна запись) для всех серверов имен зоны;
  • одна запись SOA, которая описывает параметры управления зоной.
8.2. Запросы и ответы
  • Простейшим режимом для сервера имен является нерекурсивный режим, т.к. он может отвечать на запросы, используя только локальную информацию: ответ содержит ошибку, ответ на запрос или указатель на "ближайший" к ответу сервер. Все серверы имен должны исполнять нерекурсивные запросы.
  • Простейшим режимом для клиента является рекурсивный режим, т.к. в этом режиме сервер работает в роли решающей программы и возвращает либо ошибку, либо непосредственно требуемый ответ, но никогда не возвращает указатели. Этот режим является необязательным для сервера имен. Кроме того, сервер имен может ограничивать доступ клиентов, использующих рекурсивный режим.
  • Рекурсия доступна, бит RA (recursion available), устанавливается или сбрасывается сервером имен во всех ответах. Бит установлен, если сервер желает выполнять рекурсивное разрешение для клиента, требующих такай сервис.
  • Рекурсия необходима, бит RD (recursion desired), содержится в запросах клиентов. Этот бит специфицирует, желает ли клиент рекурсивный сервис для данного запроса или нет. Клиент может запросить рекурсивный сервис у любого сервера имен, но его выполнение зависит от того, предоставляет ли сервер рекурсивный сервис для данного клиента или нет.
  • Ответ на запрос, возможно предваренный одним или несколькими записями CNAME, которые специфицируют псевдонимы встреченные при поиске ответа для запрошенного имени.
  • Ошибка имени, указывающая, что имя не существует. Могут включаться записи CNAME, которые указывают, что запрошенное имя было псевдонимом для имени, которое не существует.
  • Указание временной ошибки (temporary error).
8.3. Алгоритм 8.4. Универсальные символы (wildcards)

X.COM MX 10 A.X.COM

*.X.COM MX 10 A.X.COM

A.X.COM A 1.2.3.4 A.X.COM MX 10 A.X.COM

*.A.X.COM MX 10 A.X.COM

Это приведет к тому, что на все MX-запросы к любому доменному имени, заканчивающемуся на X.COM, будет возвращаться MX-запись, указывающая на A.X.COM. Здесь требуются две универсальные записи, т.к. действие универсальной записи *.X.COM блокировано в A.X.COM поддереве непосредственным определением данных для A.X.COM. Следует отметить, что для X.COM и A.X.COM требуется отдельно определить MX-данные.

8.5. Кэширование отрицательных ответов 8.6. Обслуживание и перекачка зоны

9. Настройка сервера имен

  • сервер имен (named);
  • библиотеку решающих функций (resolver library);
  • утилиты для проверки различных операций сервера имен.
  • выбор типа;
  • настройка демона сервера имен;
  • если настраивается первичный сервер, то необходимо описать все ресурсы зоны, для которой этот сервер является полномочным, в файлах данных;
9.1. Выбор типа 9.2. Настройка демона сервера имен

;boot file for the name server directory /var/named

;type domain source host/file backup_file

cache . root.cache primary Berkeley.EDU berkeley.edu.zone primary 32.128.IN-ADDR.ARPA ucbhosts.rev secondary CC.Berkeley.EDU 128.32.137.8 128.32.137.3 cc.zone.bak secondary 6.32.128.IN-ADDR.ARPA 128.32.137.8 128.32.137.3 cc.rev.bak primary 0.0.127.IN-ADDR.ARPA localhost.rev forwarders 10.0.0.78 10.2.0.78 options forward-only query-log fake-iquery

Комментарий начинается с символа и продолжается до конца строки. Ключевое слово directory определяет каталог (/var/named), где демон named будет искать файлы данных своей зоны. Ключевое слово cache определяет имя файла (root.cache), в котором перечислены полномочные корневые серверы имен. Второй аргумент определяет зону ответственности данных в этом файле (в данном случае v это корневая зона (".")). Корневые серверы в этом файле описываются в формате записей о ресурсах типа NS и A. Этот файл необходимо периодически скачивать с ftp-сервера FTP.RS.INTERNIC.NET, т.к. список корневых серверов время от времени обновляется. В нашем примере файл корневых серверов называется root.cache и располагается в каталоге /var/named, где будут находиться все остальные файлы данных зоны. Ключевое слово primary определяет данный сервер имен в качестве основного (первичного) полномочного сервера для зоны, указанной в первом аргументе. Второй аргумент определяет имя мастер-файла, содержащего данные этой зоны. Каждый мастер-файл должен начинаться с SOA-записи для данной зоны. В нашем примере первая строка primary специфицирует, что файл berkeley.edu.zone содержит авторизованные данные для зоны Berkeley.EDU. Все доменные имена в этом файле связаны с так называемым начальным адресом (origin), которым в этом случае является Berkeley.EDU. Вторая строка primary специфицирует, что файл ucbhosts.rev содержит авторизованные данные для зоны 32.128.IN-ADDR.ARPA. Эти данные используются для трансляции адресов из сети 128.32 в доменные имена. Третья строка primary описывает файл обратной зоны для интерфейса обратной связи (loopback intrface). Ключевое слово secondary определяет данный сервер имен в качестве вспомогательного (вторичного) сервера имен для зоны, указанной в первом аргументе. Вторым аргументом выступает список IP-адресов машин, с которых данный сервер будет получать авторизованные данные зоны. В списке можно указать до десяти серверов, которые опрашиваются по порядку следования в списке. Аргумент после списка адресов интерпретируется, как имя резервного файла для полномочной зоны (zone-backup-file), в который сервер будет сохранять резервную копию полученной зоны. Если резервный файл не указан, то используется временный файл. В нашем примере первая строка secondary определяет данную хост-машину в качестве вспомогательного (вторичного) сервера имен для зоны CC.Berkeley.EDU. Вслед за именем зоны располагается список IP-адресов серверов зоны ?128.32.137.8 128.32.137.3. Ими могут быть основной сервер или другие вспомогательные серверы. Следующее за списком серверов имя файла cc.zone.bak определяет файл для резервной копии. Вторая строка secondary определяет, что информация о разрешение адресов в имена для подсети 128.32.136 (зона 6.32.128.IN-ADDR.ARPA) должна получаться с серверов, IP-адреса которых указаны в списке ?128.32.137.8 128.32.137.3, после которого указано имя резервного файла cc.rev.bak для хранения копии этой зоны. Ключевое слово forwarders определяет IP-адреса серверов, которые принимают рекурсивные запросы от других серверов. Если файл конфигурации определяет один или несколько ретранслирующих серверов, то данный сервер будет посылать все запросы, которые не может разрешить с использованием кэша, этим серверам. Ключевое слово options переопределяет различные опции, воздействующие на поведение BIND-сервера. В примере опция forward-only заставляет сервер перенаправлять все запросы на ретранслирующие серверы, query-log заставляет сервер журнализировать все запросы через систему syslog, fake-iquery определяет, что сервер не будет выполнять обратные запросы. Для получения более подробной информации о формате конфигурационного файла необходимо обратиться к документации по BIND.

9.3. Файлы данных записей о ресурсе

[NAME] [TTL] CLASS RECORD_TYPE RECORD_DATA

NAME Доменное имя, которое определяет запись. Если это поле остается незаполненным, то по умолчанию используется имя предыдущей RR. TTL Значение времени жизни (time-to-live) для данной RR. Если это поле отсутствует, то по умолчанию используется минимальное время, определенное в записи SOA для этого домена. CLASS Для семейства протоколов TCP/IP ограничен значением IN (internet). RECORD_TYPE Тип записи о ресурсе. RECORD_DATA Данные типа RECORD_TYPE, определенные для этого доменного имени.

Следующие символы имеют специальный смысл внутри записи о ресурсе: . Одиночная точка в поле имени относится к текущему домену. @ Одиночный символ @ в поле имени относится к текущему первоисточнику. .. Две одиночных точки в поле имени относятся к нулю или корневому доменному имени. () Символы конца строки не распознаются, если оказываются заключенными в круглые скобки. Это позволяет записи занимать более одной строки. ; Точка с запятой является признаком начала комментария. Весь текст до конца строки игнорируется. * Звездочка обозначает универсальный символ.

Кроме этого в файле данных можно использовать две специальные записи $ORIGIN и $INCLUDE следующего формата:

$ORIGIN <domain-name> [<comment>] $INCLUDE <file-name> [<domain-name>] [<comment>]

Ключевое слово $ORIGIN определяет новое начальное доменное имя для всех последующих имен. $INCLUDE вставляет указанный первым параметром файл в текущий файл и может определять вторым параметром доменное имя, которое будет выступать в качестве начального имени (origin) для данных вставляемого файла. Отметим, что $INCLUDE никогда не воздействует на начальное имя родительского файла. Типы записей могут быть следующими:

1) SOA Запись начала полномочий (start of authority) определяет начало зоны, которая заканчивается в случае появления следующей записи SOA. Ее формат следующий:

[NAME] [TTL] CLASS SOA NSNAME PERSON_IN_CHARGE ( SERIAL REFRESH RETRY EXPIRE MINIMUM)

Поля RDATA записи SOA имеют следующий формат: NSNAME Доменное имя сервера имен, который является первичным для данных этой зоны. PERSON_IN_CHARGE Доменное имя, которое специфицирует почтовый адрес персоны, ответственной за зону. SERIAL Номер версии данного файла. REFRESH Определяет интервал времени, через который вторичные серверы имен должны опрашивать первичный сервер на факт изменения данных. Если номер версии увеличился, то вторичные серверы имен будут перекачивать зону с первичного сервера. RETRY Определяет интервал времени, через который вторичные серверы имен должны повторить опрос первичного сервера после неудавшейся попытки. EXPIRE Определяет, сколько должно пройти времени, прежде чем зона перестанет быть полномочной. MINIMUM Минимальное значение TTL для использования в случае отсутствия в записи о ресурсе спецификации поля TTL.

2) NS Запись сервера имен указывает на имя сервера, ответственного за домен, определенный в поле NAME:

[NAME] [TTL] CLASS NS SERVER_NAME

Например, berkeley.edu. IN NS ucbvax.berkeley.edu.

3) A Адресная запись указывает на IP-адрес доменного имени, определенного в поле NAME:

[NAME] [TTL] CLASS A ADRESS

Например, ucbvax.berkeley.edu. IN A 10.0.0.78

4) PTR Запись указателя определяет указатель на доменное имя, имеющее IP-адрес, описанный в поле NAME специальным образом (IP-адрес записывается слева направо в обратном порядке с прибавлением имени IN-ADDR.ARPA на конце). Записи типа PTR используются для поиска доменных имен по их IP-адресам в специальной области пространства имен IN-ADDR.ARPA.

SPECIAL_NAME [TTL] CLASS PTR REAL_NAME

В случае использования для описания домена IN-ADDR.ARPA, в поле SPECIAL_NAME определяется IP-адрес, а в поле REAL_NAME - доменное имя, соответствующее этому адресу.

Например, 78.0.0.10.IN-ADDR.ARPA. IN PTR ucbvax.berkeley.edu.

5) HINFO Запись информации о хост-машине содержит определенную информацию об аппаратных средствах и операционной системе хост-машины.

[NAME] [TTL] CLASS HINFO HARDWARE OS

6) WKS Запись об общедоступных сервисах описывает различные протоколы и услуги, которые предоставляет хост-машина.

[NAME] [TTL] CLASS WKS ADDRESS PROTOCOL SERVICE

7) CNAME Определяет псевдоним для канонического доменного имени.

NICKNAME [TTL] CLASS CNAME CANONICAL_NAME

8) MX Запись о почтовом сервере (mail exchanger) определяет машину, которая знает, как доставить почту для указанного в поле NAME домена.

NAME [TTL] CLASS MX PREFERENCE EXCHANGER

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

9.4. Пример

Файл кеша /var/named/named.root: ; initial cashe file for root domain servers ; list of servers. 99999999 in ns ns.nic.ddn.mil. 99999999 in ns aos.brl.mil. 99999999 in ns c.nyser.net. 99999999 in ns terp.umd.ru. 99999999 in ns ns.nasa.gov. 99999999 in ns nic.nordu.net. ; and their addresses. ns.nic.ddn.mil 99999999 in a 192.112.36.4 aos.brl.mil 99999999 in a 128.63.4.82 99999999 in a 26.3.0.29 99999999 in a 192.5.25.82 c.nyser.net 99999999 in a 192.33.4.12 terp.umd.ru 99999999 in a 128.8.10.90 ns.nasa.gov 99999999 in a 192.52.195.10 99999999 in a 128.102.16.10 nic.nordu.net 99999999 in a 192.36.148.17

Значение 99999999 указывает время жизни этих записей (примерно 3 года). В файле корневого кэша перечисляются хост-машины, которые функционируют в качестве корневых серверов доменных имен.

Файл хост-машин зоны /var/named/net.zone: ; sample hosts file @ in soa net.com. root.net.com. ( 1.1 ; version number 21600 ; refresh - 6 hours 900 ; retry - 15 minutes 2592000 ; expire 30 days 21600 ) ; minimum - 6 - hours in ns net.com. in ns hostK.net.com. net.com in mx 10 hostK.net.com. *.net.com in mx 10 hostK.net.com. hostD in a 184.1.2.7 in a 184.1.42.3 in hinfo sun-4/630 unix hostB in a 184.1.2.86 in a 188.177.33.145 in hinfo sun-4/70 in wks 184.1.2.86 udp syslog domain in wks 184.1.2.86 tcp (telnet ftp sunrpc nntp smtp domain) hostA in a 184.1.2.40 hostC in a 184.1.2.99 hostG in a 184.1.42.41 hostI in a 184.1.7.14 mainhost in cname net.com.

Файл обратных адресов /var/named/net.revzone: ;reverse address file $ORIGIN 2.1.184.in-addr.arpa @ in soa net.com. root.net.com. ( 1.1 ; version number 21600 ; refresh - 6 hours 900 ; retry - 15 minutes 2592000 ; expire 30 days 21600 ) ; minimum - 6 - hours in ns net.com. 7 in ptr hostD.net.com. 86 in ptr hostB.net.com. 40 in ptr hostA.net.com. 99. 2.1.184.in-addr.arpa in ptr hostC.net.com.

Файл обратных адресов /var/named/named.local: @ in soa net.com. root.net.com. ( 1.1 ; version number 21600 ; refresh - 6 hours 900 ; retry - 15 minutes 2592000 ; expire 30 days 21600 ) ; minimum - 6 - hours in ns net.com. 1 in ptr localhost.

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

10. Настройка решающей программы

Основные ключевые слова, которые используются в конфигурационном файле /etc/resolv.conf, следующие:

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

domain Локальное доменное имя. Большинство запросов внутри этого домена могут использовать короткие имена относительно локального домена. Если ключевое слово domain не присутствует, то домен определяется из имени локальной хост-машины (вызовом функции gethostname).

search Может содержать список доменных имен, разделенных пробелами или знаками табуляции, каждое из которых будет использовано, при попытках решающей программы разрешить запрос. Если в запросе используется короткое имя, то решающая программа будет по порядку прибавлять к этому имени доменное имя из списка и пытаться его разрешить, пока не получит положительный ответ или не исчерпается список. sortlist Позволяет сортировать адреса, возвращаемые функцией gethostbyname. Список сортировки определяется парами "IP-адрес/сетевая маска" (маска не обязательна). Можно указывать до десяти таких пар. Например: sortlist 130.155.160.0/255.255.240.0 130.155.0.0

Обычно для нормальной работы достаточно определить в файле конфигурации имя домена, в который входит данная хост-машина и один или несколько серверов имен, к которым будет обращаться решающая программа для разрешения имен. Ниже приведен пример конфигурационного файла решающей программы /etc/resolv.conf: ; sample resolv.conf file domain net.com nameserver 184.1.2.7 nameserver 184.1.2.86 nameserver 184.1.7.14 Первая строка представляет собой комментарий (комментарии начинаются с точки с запятой (";") и продолжаются до конца строки). Строка с ключевым словом domain - это домен по умолчанию, который добавляется к именам, которые не содержат точек. Строка с ключевым словом nameserver - IP-адрес сервера доменных имен. В этом файле можно перечислить до трех серверов имен (по умолчанию, количество серверов имен определяется переменной окружения MAXNS). Серверы опрашиваются по очереди до тех пор, пока на запрос не будет получен ответ или не наступит тайм-аут. В некоторых реализациях ОС UNIX может использоваться файл /etc/nsswitch.conf, который определяет, в каком порядке различные сервисы системы должна опрашивать свои ресурсы. Для того чтобы функции решающей библиотеки обращались к DNS для разрешения имен, необходимо ключевому слову hosts в этом файле указать значение dns. Например, hosts: files dns

В этом случае функции решающей библиотеки будут обращаться сначала к локальной таблице /etc/hosts и, если запрошенного имени в нем нет, запрос будет направлен к DNS. В BSD-подобных системах (например, в BSDI и FreeBSD) порядок обращения функций решающей библиотеки к различных ресурсам определяется файлом конфигурации /etc/host.conf. Пример содержимого этого файла представлен ниже: # Пример файла /etc/host.conf. # Сначала обращаются к локальному файлу /etc/hosts. hosts # Затем к серверам имен. bind # Затем к YP/NIS, если он используется nis

11. Утилиты для отладки и контроля работы DNS

11.1. Nslookup

Non-authoritative answer: # указывается, что данные из кэша Name: wwwwseast2.usec.sun.com # каноническое имя Address: 192.9.49.33 # IP-адрес Aliases: www.sun.com # запрошенное имя было псевдонимом

Выполнение nslookup без параметров переводит утилиту в интерактивный режим; команда help выводит информацию обо всех возможных командах:

$ nslookup Default Server: ispgate-root.ispras.ru Address: 194.67.37.200

# команда help выводит список команд nslookup # > help $Id: nslookup.help,v 8.4 1996/10/25 18:09:41 vixie Exp $

Commands: (identifiers are shown in uppercase, [] means optional) NAME - print info about the host/domain NAME using default server NAME1 NAME2 - as above, but use NAME2 as server help or ? - print info on common commands; see nslookup(1) for details set OPTION - set an option all - print options, current server and host [no]debug - print debugging information [no]d2 - print exhaustive debugging information [no]defname - append domain name to each query [no]recurse - ask for recursive answer to query [no]vc - always use a virtual circuit domain=NAME - set default domain name to NAME srchlist=N1[/N2/. /N6] - set domain to N1 and search list to N1,N2, etc. root=NAME - set root server to NAME retry=X - set number of retries to X timeout=X - set initial time-out interval to X seconds querytype=X - set query type, e.g., A,ANY,CNAME,HINFO,MX,PX,NS,PTR,SOA,TXT, WKS,SRV,NAPTR port=X - set port number to send query on type=X - synonym for querytype - set query class to one of IN (Internet), CHAOS, HESIOD or ANY server NAME - set default server to NAME, using current default server lserver NAME - set default server to NAME, using initial server finger [USER] - finger the optional USER at the current default host root - set current default server to the root ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE) -a - list canonical names and aliases -h - list HINFO (CPU type and operating system) -s - list well-known services -d - list all records -t TYPE - list records of the given type (e.g., A,CNAME,MX, etc.) view FILE - sort an 'ls' output file and view it with more exit - exit the program, ^D also exits >

В этом режиме можно получать различную информацию системы доменных имен, при этом можно выбирать сервер имен, от которого необходимо получить эту информацию, например:

$ nslookup Default Server: ispgate-root.ispras.ru Address: 194.67.37.200

# получить IP-адрес хоста www.linux.org (тип запроса A) # > www.linux.org Server: ispgate-root.ispras.ru Address: 194.67.37.200

Name: www.linux.org Address: 198.182.196.56

# устаноаить тип запроса PTR # > set q=ptr

# получить доменное имя по адресу 198.182.196.56 # > 198.182.196.56 Server: ispgate-root.ispras.ru Address: 194.67.37.200

56.196.182.198.in-addr.arpa name = www.linux.org 196.182.198.in-addr.arpa nameserver = ns.invlogic.com 196.182.198.in-addr.arpa nameserver = ns0.aitcom.net ns.invlogic.com internet address = 205.134.175.254 ns0.aitcom.net internet address = 208.234.1.34 >

# устаноаить тип запроса MX # > set q=mx

# получить все МХ-записи домена linux.org # > linux.org Server: ispgate-root.ispras.ru Address: 194.67.37.200

linux.org preference = 10, mail exchanger = mail.linux.org linux.org preference = 20, mail exchanger = router.invlogic.com linux.org preference = 30, mail exchanger = border-ai.invlogic.com linux.org nameserver = ns.invlogic.com linux.org nameserver = ns0.aitcom.net mail.linux.org internet address = 198.182.196.60 router.invlogic.com internet address = 198.182.196.1 border-ai.invlogic.com internet address = 205.134.175.254 ns.invlogic.com internet address = 205.134.175.254 ns0.aitcom.net internet address = 208.234.1.34 >

# сменить сервер имен на ns0.aitcom.net # > server ns0.aitcom.net Default Server: ns0.aitcom.net Address: 208.234.1.34

# устаноаить тип запроса А # > set q=a

# получить адресную информацию для имени www.hp.com # > www.hp.com Server: ns0.aitcom.net Address: 208.234.1.34

Name: www.hp.com Addresses: 192.151.11.13, 192.151.11.32, 192.151.52.13, 192.6.35.16

11.2. Host

# Получить адресную информацию для имени ispgate.ispras.ru # $ host ispgate.ispras.ru

ispgate.ispras.ru has address 194.186.94.6 ispgate.ispras.ru mail is handled (pri=20) by relay1.sovam.com ispgate.ispras.ru mail is handled (pri=10) by gate.ispras.ru

# Получить адресную информацию для имени ispgate.ispras.ru # с сервера ns.css-mps.ru # $ host -t a ispgate.ispras.ru ns.css-mps.ru

Using domain server: Name: ns.css-mps.ru Address: 194.154.87.5 Aliases:

ispgate.ispras.ru has address 194.186.94.6

# Получить MX-информацию для имени ispras.ru # с сервера ns.sovam.com # $ host -t mx ispras.ru ns.sovam.com

Using domain server: Name: ns.sovam.com Address: 194.67.2.97 Aliases:

ispras.ru mail is handled (pri=20) by relay1.sovam.com ispras.ru mail is handled (pri=10) by gate.ispras.ru $

С помощью опции vа можно получить все записи о ресурсах связанных с запрашиваемым именем. Аналогичную информацию можно получить при использовании опций -v -t any. Например:

$ host -a www.linux.org Trying null domain rcode = 0 (Success), ancount=4 www.linux.org 43200 IN MX 30 border-ai.invlogic.com www.linux.org 43200 IN MX 10 mail.linux.org www.linux.org 43200 IN MX 20 router.invlogic.com www.linux.org 43200 IN A 198.182.196.56 For authoritative answers, see: linux.org 43200 IN NS ns.invlogic.com linux.org 43200 IN NS ns0.aitcom.net Additional information: border-ai.invlogic.com 43200 IN A 205.134.175.254 mail.linux.org 43200 IN A 198.182.196.60 router.invlogic.com 43200 IN A 198.182.196.1 ns.invlogic.com 43200 IN A 205.134.175.254 ns0.aitcom.net 86400 IN A 208.234.1.34

$ host -v -t any www.linux.org Trying null domain rcode = 0 (Success), ancount=4 The following answer is not authoritative: www.linux.org 43149 IN A 198.182.196.56 www.linux.org 43149 IN MX 30 border-ai.invlogic.com www.linux.org 43149 IN MX 10 mail.linux.org www.linux.org 43149 IN MX 20 router.invlogic.com For authoritative answers, see: linux.org 75383 IN NS NS.invlogic.com linux.org 75383 IN NS NS0.AITCOM.NET Additional information: mail.linux.org 43149 IN A 198.182.196.60 NS.invlogic.com 75383 IN A 205.134.175.254 NS0.AITCOM.NET 75383 IN A 208.234.1.34 $

11.3. Dig

dig @server domain query-type query-class

где server доменное имя или IP-адрес запрашиваемого сервера имен; если не указан, используетсясервер по умолчанию; domain доменное имя, для которого запрашивается информация. query-type тип запроса; если не указан принимается тип А; Возможны следующие значения: a T_A сетевой адрес any T_ANY вся информация о данном имени mx T_MX почтовые серверы для домена ns T_NS серверы имен soa T_SOA запись начала полномочий hinfo T_HINFO информация о хосте axfr T_AXFR передача зоны txt T_TXT arbitrary number of strings (RFC 1035 описывает полный список.) query-class класс сети; по умолчанию класс ``in''.

📎📎📎📎📎📎📎📎📎📎