Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Серверы Linux. Часть III. Сервер DNS

Оригинал: Introduction to DNS
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 11 июля 2015 г.

Глава 4. Вводная информация о серверах DNS

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

Каждый раз при посещении веб-сайта, отправке сообщения электронной почты, входе в домен Active Directory, игре в Minecraft, переписке в сетевом чате или использовании технологии VoIP осуществляется отправка одного (или множества) запросов серверу DNS.

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

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

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

В данном разделе даются пояснения относительно принципа работы серверов DNS, а также процесса настройки сервера bind9 при работе с дистрибутивом Linux.

4.1. О протоколе DNS

4.1.1. Преобразование доменного имени в IP-адрес

Система доменных имен (Domain Name System или DNS) является сетевой службой, работающей со стеком протоколов TCP/IP и позволяющей клиентам преобразовывать доменные имена в IP-адреса. На самом деле с помощью аббревиатуры DNS обозначается инфраструктура гораздо большего масштаба, но на данный момент благоразумнее рассмотреть упрощенный вариант.

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

Преобразование доменного имени в IP-адрес

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

Преобразование доменного имени в IP-адрес

4.1.2. История создания протокола DNS

В семидесятые годы к сети Интернет было подключено всего несколько сотен компьютеров. Для разрешения доменных имен на каждом из этих компьютеров использовался текстовый файл, содержащий таблицу из доменных имен и соответствующих им IP-адресов. Этот локальный файл являлся копией файла hosts.txt, расположенного на FTP-сервере Университета Стэнфорда.

В 1984 году Paul Mockapetris создал систему DNS, являющуюся распределенной древовидной иерархической базой данных, которая будет подробно описываться в нескольких главах данной книги.

На сегодняшний день система доменных имен (Domain Name System или DNS) является общемировой распределенной иерархической базой данных, находящейся под контролем организации ICANN. Ее главная функция заключается в преобразовании доменных имен в IP-адреса и указании на серверы в сети Интернет, предоставляющие сервисы SMTP и LDAP.

Старый файл hosts.txt по прежнему активно используется в большинстве операционных систем под именем /etc/hosts (или C:/Windows/System32/Drivers/etc/hosts). Далее мы вернемся к рассмотрению этого файла, а также его влияния на процесс разрешения доменных имен.

4.1.3. Прямой и обратный запросы

Вопрос, задаваемый клиентом серверу DNS, называется запросом (DNS query). В ситуации, когда клиент запрашивает IP-адрес узла говорят о прямом запросе DNS (forward lookup query, как было показано на предыдущей иллюстрации).

Противоположный по смыслу запрос доменного имени узла называется обратным запросом DNS (reverse lookup query).

Ниже приведена иллюстрация обратного запроса DNS.

Прямой и обратный запросы

А это пример осуществления обратного запроса DNS с помощью утилиты nslookup.

root@debian7:~# nslookup
> set type=PTR
> 188.93.155.87
Server:         192.168.1.42
Address:        192.168.1.42#53

Non-authoritative answer:
87.155.93.188.in-addr.arpa      name = antares.ginsys.net.

В случае использования сниффера tcpdump обратный запрос DNS будет выглядеть аналогичным образом.

root@debian7:~# tcpdump udp port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:01:29.357685 IP 192.168.1.103.42041 > 192.168.1.42.domain: 14763+ PT\
R? 87.155.93.188.in-addr.arpa. (44)
11:01:29.640093 IP 192.168.1.42.domain > 192.168.1.103.42041: 14763 1/0\
/0 PTR antares.ginsys.net. (76)

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

Прямой и обратный запросы

4.1.4. Файл /etc/resolv.conf

Клиентский компьютер должен обладать информацией об IP-адресе сервера DNS для того, чтобы иметь возможность передавать запросы этому серверу. Данный адрес либо передается сервером DHCP, либо вводится вручную администратором системы.

Клиентские системы Linux хранят упомянутую информацию в файле /etc/resolv.conf.

root@debian7:~# cat /etc/resolv.conf
domain linux-training.be
search linux-training.be
nameserver 192.168.1.42
root@debian7:~#

Вы можете вручную осуществить модификацию IP-адреса с пометкой nameserver для использования другого сервера DNS. Например, компания Google предоставляет доступ к публичному серверу DNS с IP-адресами 8.8.8.8 и 8.8.4.4.

root@debian7:~# cat /etc/resolv.conf
nameserver 8.8.8.8
root@debian7:~#

Обратите внимание на то, что при использовании клиента DHCP данные IP-адреса могут быть перезаписаны в процессе обновления базы данных адресов DHCP (DHCP lease).

4.2. Пространство имен DNS

4.2.1. Иерархия

Пространство имен DNS является иерархической древовидной структурой с корневыми серверами (root-servers или dot-servers) на вершине. Корневые серверы обычно обозначаются с помощью точки.

Иерархия

Далее мы будем говорить не о корневых серверах, а о доменах верхнего уровня (Top Level Domains или TLDs).

Существует гораздо большее количество доменов верхнего уровня, нежели показано на иллюстрации. На данный момент около 200 стран имеют домены верхнего уровня. Кроме того, существует множество доменов верхнего уровня общего назначения, таких, как .com, .edu, .org, .gov, .net, .mil, .int, а также сравнительно недавно введенных в строй .aero, .info, .museum,

4.2.2. Корневые серверы

В рамках сети Интернет существует тринадцать корневых серверов DNS, которые носят имена от A до M. Журналисты обычно называют эти серверы основными серверами сети Интернет, так как в том случае, если они выйдут из строя, никто не сможет использовать доменные имена для соединения с серверами, на которых расположены веб-сайты.

Корневые серверы не расположены на тринадцати физических машинах, они распределены по гораздо большему количеству машин. К примеру, корневой сервер с именем F распределен по 46 физическим машинам, которые функционируют как одна машина благодаря осуществлению произвольной передачи данных (anycast).

4.2.3. Данные для поиска корневых серверов

В комплект поставки каждого сервера DNS включается файл с данными для поиска корневых серверов (root hints), который предназначен для поиска корневых серверов DNS.

В данном примере показан небольшой фрагмент файла с данными поиска корневых серверов из комплекта поставки сервера DNS bind 9.8.4.

root@debian7:~# grep -w 'A ' /etc/bind/db.root
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
root@debian7:~#

4.2.4. Домены

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

На иллюстрации показаны такие домены системы доменных имен DNS, как google.com, chess.com, linux-training,be (при этом не стоит забывать о существовании миллионов других доменов).

Домены

Домены системы доменных имен DNS регистрируются на серверах, обслуживающих домены верхнего уровня, а домены верхнего уровня - на корневых серверах.

4.2.5. Домены верхнего уровня

На уровне древовидной структуры ниже корневых доменов расположены домены верхнего уровня (Top Level Domains или TLDs). Изначально было зарегистрировано лишь семь таких доменов:

Таблица 4.1. Первые домены верхнего уровня

Год регистрации Домен верхнего уровня Назначение
1985 .arpa Домен для обработки обратных запросов DNS с использованием специального домена in-addr.arpa
1985 .com Домен для коммерческих организаций
1985 .edu Домен для образовательных учреждений США
1985 .gov Домен для правительственных учреждений США
1985 .mil Домен министерства обороны США
1985 .net Домен для интернет-провайдеров и организаций, обслуживающих инфраструктуру сети Интернет
1985 .org Домен для некоммерческих организаций
1985 .int Домен для международных организаций, таких, как NATO (nato.int)

Домены верхнего уровня отдельных стран регистрировались в разное время, например, домен .uk для Великобритании был зарегистрирован в 1985 году (да, это было именно так), домен .be для Бельгии - 1988 году, а домен .fr для Франции - в 1986 году. Обратитесь к стандарту RFC 1591 для получения дополнительной информации.

В 1998 году было выбрано семь новых доменов верхнего уровня, которые стали активны лишь в 21 веке.

Таблица 4.2. Новые домены верхнего уровня общего назначения

Год регистрации Домен верхнего уровня Назначение
2002 .aero Домен для ресурсов, связанных с авиацией
2001 .biz Домен для ресурсов, связанных с бизнесом
2001 .coop Домен для ресурсов, связанных с кооперацией
2001 .info Домен для информационных ресурсов
2001 .museum Домен для ресурсов музеев
2001 .name Домен для ресурсов, связанных с любыми видами имен, псевдонимов и названий...
2004 .pro Домен для ресурсов квалифицированных специалистов

Многие администраторы ресурсов были удивлены выбором доменов верхнего уровня и заявили о том, что этим доменам достаточно сложно найти применение и они хотели бы использовать отдельный домен .xxx для размещения ресурсов для взрослых (был представлен в 2011 году), а также домен .kidz для ресурсов с информацией о детях, от которых отказались родители. В то же время были зарегистрированы еще более бесполезные домены верхнего уровня, такие, как .travel (для ресурсов агентств путешествий), .tel (для ресурсов, связанных с интернет-коммуникациями) и .jobs (для ресурсов по поиску работы).

В 2012 году организация ICANN опубликовала список из 2000 новых доменов верхнего уровня, которые будут постепенно регистрироваться.

4.2.6. Полностью определенное доменное имя

Полностью определенное доменное имя (Fully Qualified Domain Name или FQDN) является комбинацией из имени узла машины и соответствующего доменного имени.

Например, в том случае, если система носит имя gwen и использует домен linux-training.be, полностью определенным доменным именем системы будет gwen.linux-training.be.

В системах Linux вы можете использовать утилиты hostname и dnsdomainname для проверки данной информации.

root@gwen:~# hostname
gwen
root@gwen:~# dnsdomainname
linux-training.be
root@gwen:~# hostname --fqdn
gwen.linux-training.be
root@gwen:~# cat /etc/debian_version
6.0.10

4.2.6. Зоны DNS

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

Зоны DNS

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

Зона DNS состоит из записей, которые также называют ресурсными записями. В следующем разделе мы рассмотрим некоторые из упомянутых ресурсных записей.

4.2.7. Ресурсные записи DNS

Запись A

Запись A, которая также называется записью узла (host record) содержит IP-адрес компьютера в формате IPv4. В момент, когда клиент DNS отправляет серверу DNS запрос данных записи A, сервер DNS осуществляет преобразование переданного с запросом доменного имени в IP-адрес. Запись AAAA аналогична рассматриваемой записи, но содержит IP-адрес формата IPv6, а не IPv4.

Запись PTR

Запись PTR является полной противоположностью записи A. Она содержит имя компьютера и может использоваться для преобразования IP-адреса в имя узла.

Запись NS

Запись NS или запись сервера имен (nameserver record) является записью, которая указывает на сервер имен DNS (обслуживающий данную зону DNS). Вы можете получить список всех серверов имен для вашей зоны DNS, получив данные отдельных записей NS.

Связующая запись A

Запись A, которая устанавливает соответствие между именем записи NS и IP-адресом называется связующей записью.

Запись SOA

Запись SOA зоны DNS содержит метаданные, относящиеся к самой зоне DNS. Записи SOA подробно описаны в разделе, посвященном передачам данных зон DNS. В каждой из зон DNS существует ровно по одной записи SOA.

Запись CNAME

Запись CNAME устанавливает соответствие между двумя именами узлов, позволяя создать новый псевдоним для существующего имени узла. В качестве имени почтового сервера обычно используются имена mail и smtp, а в качестве имени веб-сервера - www.

Запись MX

Запись MX указывает на сервер SMTP. При отправке сообщения электронной почты по адресу в другом домене, вашему почтовому серверу потребуется запись MX почтового сервера из целевого домена.


Предыдущий раздел: Оглавление Следующий раздел:
3.4. Таблицы базы данных MySQL   4.3. Кэширующие серверы DNS