Библиотека сайта 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
.
При работе со сниффером Wireshark вы можете использовать фильтр dns
для перехвата соответствующего трафика.
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).
http://root-servers.org http://f.root-servers.org http://en.wikipedia.org/wiki/Root_nameserver
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
может иметь полномочия по управлению
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 |