Глава 24. Разрешение имен
24.1. Введение
Проблема
Механизм разрешения имён состоит из двух компонентов: DNS (Domain Name System) и файла hosts. Протокол DHCP (Dynamic Host Configuration Protocol) имеет непосредственное отношение к разрешению имён: DHCP берёт на себя «чёрную работу» по назначению IP-адресов отдельным хостам. Серверы должны иметь статические IP-адреса, а рабочим станциям вполне хватает динамических адресов — просто подключите их к сети, и DHCP сделает всё остальное.
Служба DNS, лежащая в основе функционирования Интернета, обеспечивает разрешение имён, то есть преобразование символьных имён хостов в числовые адреса. Несмотря на простоту концепции, для её реализации пришлось создать огромную инфраструктуру. Теоретически без DNS можно было бы обойтись — в конце концов, мы же используем сложные почтовые адреса и номера телефонов в повседневной жизни. Тем не менее механизм разрешения имён обладает многими преимуществами. С одним IP-адресом может быть связано несколько имён; символьные имена лучше запоминаются. Наконец, серверам можно присвоить имена толкиновских героев, мифологических персонажей или красивые астрономические термины (допустим, последнее обстоятельство не так важно, но зато интересно).
Реализация DNS
Решение
Одна из трудностей, с которой сталкиваются администраторы при настройке собственных серверов DNS, заключается в том, что подавляющее большинство документации ориентировано на BIND (Berkeley Internet Name Domain) — самый старый и распространённый сервер DNS. Может показаться, что BIND — это и есть протокол DNS, а не одна из его реализаций.
В этой главе рассматривается сервер DNS djbdns. На мой взгляд, он лучше BIND; djbdns компактен, имеет модульную структуру, работает очень быстро и хорошо защищён. Кроме того, он прост в настройке и устойчив, поскольку управляющие демоны автоматически перезапускают его в случае неожиданных сбоев. Репликация сервера djbdns также эффективно и безопасно осуществляется стандартными средствами Linux (такими, как rsync через ssh), а это означает, что вы можете легко защитить пересылку файлов данных с использованием ключей SSH.
Сервер BIND существует очень давно и получил широкое распространение. С другой стороны, он представляет собой одну монолитную программу, что усложняет его адаптацию. В сущности, всё, что вы можете сделать, — это определить разные конфигурации для разных применений, но такой подход малоэффективен для отключения ненужных компонентов. Из-за этого в BIND давно возникали проблемы с безопасностью. Более того, вместо удобных, надёжных, стандартных средств Unix в BIND используются закрытые методы репликации зонных файлов на вторичные серверы. Даже до появления rsync не было недостатка в контролируемых механизмах пересылки файлов, так что причина появления этих специфических для BIND протоколов остаётся загадочной.
Терминология DNS
Термином DNS обозначаются три понятия: протокол DNS, механизм разрешения имён и вся система его реализации, состоящая из регистраторов доменных имён, корневых серверов, авторитетных серверов, IANA и региональных координаторов, ICANN и кэширующих серверов DNS, обеспечивающих распределение нагрузки. Вот некоторые термины и названия, с которыми вам стоит ознакомиться.
- IANA (Internet Assigned Numbers Authority) — Агентство по выделению имён и уникальных параметров протоколов Интернета; группа, координирующая назначение IP-адресов в мировом масштабе (как IPv4, так и IPv6).
- ICANN (Internet Corporation for Assigned Names and Numbers) — Корпорация по назначению адресов и имён Интернета. В частности, ICANN осуществляет надзор над назначением и регистрацией доменных имён.
- Корневые серверы — всего существует 13 корневых серверов DNS. Чтобы получить их список, введите команду
dig
без параметров. Все корневые серверы, кроме трёх, расположены в США. Серверы C, F, I, J и K представляют собой географически распределённые кластеры, поэтому фактическое количество корневых серверов гораздо больше, и они распределены по всей планете. - Авторитетные серверы — серверы DNS, находящиеся под управлением хостмастера домена и содержащие полную информацию о соответствии имён IP-адресам. Корневые серверы не содержат реальных записей DNS; они всего лишь содержат ссылки на авторитетные серверы имён или другие серверы, которым известен маршрут к авторитетным серверам.
- Кэширующий сервер (кэширующий резольвер DNS) — кэширующие серверы помогают справиться с гигантским трафиком и сложностью структуры. Если бы каждый запрос DNS для домена обрабатывался авторитетным сервером, вся схема вскоре остановилась бы. Этого не происходит, потому что Интернет наполнен кэширующими серверами DNS. Кэширующие серверы выполняют огромный объём работы — они обращаются к внешним серверам для удовлетворения запросов DNS и сохраняют результаты поиска в памяти для прямого обслуживания последующих запросов.
См. также
ICANN (https://www.icann.org), IANA (https://www.iana.org).