DNS-сервер (Domain name server) — это протокол, который принимает от пользователей сети интернет запросы на доступ к сайтам в форме доменного имени www.site.com. Эти запросы требуют расшифровки доменных имен, которые легко воспринимаются и понимаются человеком. Однако для того, чтобы компьютер произвел соединение с веб-страницей c IP-адресом, соответствующим этому имени, требуется его преобразование в цифровой вид, поскольку компьютер может работать только с IP-адресами сайтов в двоичном представлении. Таким преобразованием и занимается DNS-сервер.

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

DNS-сервер в общих чертах

В самых общих чертах DNS-сервер – это не только протокол, но база данных, в которой «прописаны» соответствия между именами хостов в буквенном виде, например,http://www.microsoft.com, и их IP-адресами в цифровом виде 192.168.124.1. Можно сказать, что DNS – это «телефонная книга для интернета».

Однако, внутреннее устройство DNS сложнее, чем телефонная книга.

Во-первых, база данных DNS является распределенной. Каждый отдельный DNS-сервер содержит лишь относительно небольшую часть всех записей в сети интернет об именах хостов и их соответствий IP-адресам. В случае, если запрос клиента относится к доменному имени, записи о котором нет в базе данных DNS-сервера, он производит поиск другого сервера, где есть такая запись. Иногда такой поиск занимает несколько поочередных запросов с одного DNS-сервера на другой. Набор записей соответствия имен хостов IP-адресам называется «пространство имен» (namespace).

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

В-третьих, в базе данных DNS-сервера содержатся и другие типы записей, кроме записей соответствия доменного имени IP-адресу. Например, это могут быть записи почтовой службы MX (Mail Exchanger), которые обеспечивают почтовые серверы (e-mail server) информацией, необходимой для пересылки электронных писем.

Для чего нужен сервис DNS

DNS используется для следующих целей:

  • Разрешение имен сайтов WWW (World Wide Web).
  • Маршрутизация сообщений на почтовые серверы и службы webmail.
  • Соединение серверов приложений, баз данных и промежуточных программ (middleware) внутри веб-приложения.
  • Создание виртуальных частных сетей VPN (Virtual Private Networks).
  • Предоставление доступа к программным средствам (Peer-to-peer).
  • Работа совместных онлайн-игр (Multiplayer games).
  • Работа служб мгновенных сообщений и онлайн-конференций.
  • Связь между устройствами, шлюзами и серверами интернета вещей.

Это все, что нужно знать о DNS-серверах в самых общих чертах. Если нужно поподробнее, но тоже не слишком детально, можно читать дальше.

Как работает DNS-сервер

Хотя считается, что DNS означает Domain Name Server, однако, более правильным будет название Domain Name System (система доменных имен). Это одна из основополагающих систем интернета, которая позволяет находить в сети нужную информацию или предоставлять информацию в сеть для общего или ограниченного доступа.

DNS – это протокол, входящий в набор протоколов (платформу) по обмену информацией в сети интернет, TCP/IP (Transfer Control Protocol / Internet Protocol).

При доступе к веб-сайту, отправке электронной почты, сообщений в мессенджере и пр., компьютер использует DNS-сервер для поиска домена, к которому нужно получить доступ. Этот процесс называется разрешением доменного имени (DNS name resolution) и представляет собой трансляцию имени нужного домена в цифровой IP-адрес, который может быть воспринят компьютером.

Это кажется довольно простой задачей. Однако это не так, если иметь в виду следующее:

  • В сети интернет используются миллиарды IP-адресов, а многие компьютеры, кроме IP-адреса, имеют также и читабельное для людей имя.
  • DNS-серверы всего мира обрабатывают в секунду миллиарды запросов в сети интернет.
  • Миллионы людей добавляют и изменяют доменные имена и IP-адреса ежедневно и ежечасно.

Чтобы справиться с такими масштабными задачами, DNS-сервер использует в работе эффективные средства построения сети, а также нижележащие интернет-протоколы (IP). Каждый компьютер (или устройство на базе компьютерного процессора), подключенный к интернету, имеет уникальный IP-адрес, причем часто в двух стандартах – IPv4 и IPv6. Различие между ними в том, что адрес IPv4 состоит из 32 двоичных разрядов, а IPv6 – из 128 разрядов. Понятно, что в адресном пространстве IPv6 можно разместить во много раз (даже порядков) больше устройств с уникальными IP-адресами. Кто-то даже подсчитал, что на одном квадратном дюйме земной поверхности можно разместить около тридцати устройств с уникальным IP-адресом IPv6 в каждом.

Распределением IP-адресов занимается орган под названием IANA (Internet Assigned Numbers Authority).

Адрес IPv4 внешне выглядит как четыре десятичных числа, разделенных точками, например, 70.74.251.42. Для человека (если только он не профессионал в ИТ), такой вид IP-адреса мало о чем говорит, а для компьютера он точно описывает местоположение сервера (хоста), на котором находится нужная веб-страница или сайт.

Адрес IPv6 содержит восемь шестнадцатеричных чисел, разделенных двоеточиями, например 2001:0cb8:85a3:0000:0000:8a2e:0370:7334.

Некоторые адреса и диапазоны адресов помечены в IANA как зарезервированные для специальных функций. Например, адрес 127.0.0.1 используется для идентификации компьютера, на котором в данный момент работает пользователь.

Как генерируются и распределяются IP-адреса? Если говорить о персональном компьютере, то скорее всего IP-адрес для него будет получен от специального сервера в сети, который называется DHCP-сервер (Dynamic Host Configuration Protocol, протокол динамической конфигурации хоста). Термин «динамическая конфигурация» означает, что IP-адрес компьютера будет время от времени меняться. Например, если не включать компьютер в течение нескольких дней, то при новом включении он, скорее всего, получит новый IP-адрес. Пользователю данная операция заметна не будет. Но при желании можно выяснить свой текущий IP-адрес при помощи специальных команд операционной системы.

Есть, однако, компьютеры, на которых размещены веб-сайты и веб-страницы с общедоступной информацией (хостинг). Понятно, что таким серверам нужен постоянный, статический IP-адрес. Для закрепления статического IP-адреса за определенным сервером, его IP-адрес привязывается к уникальному MAC-адресу (Media Access Control) устройства, который присваивается при производстве.

Доменное имя

На рисунке показано доменное имя Amazon.co.uk, британского отделения американского интернет-магазина Amazon.

Рис. 1. Пример доменного имени

Пример доменного имени

Компания Amazon в качестве логотипа избрала свое зарегистрированное доменное имя, которое указывается на упаковках всех товаров, полученных из интернет-магазина Amazon.

Доменные имена представляют собой последовательность букв, разделенных точками. Последний в последовательности набор букв (в примере — «.uk») представляет собой т. н. «домен высшего уровня» (TLD, Top-Level Domain). Эти домены контролируются IANA и содержатся в «базе данных корневой зоны» (Root Zone Database).

В этой базе содержатся около 1000 доменных имен высшего уровня. Наиболее часто используемые из них следующие:

  • COM — коммерческие компании, для общего доступа.
  • NET — сетевые вебсайты, для общего доступа.
  • ORG — некоммерческие организации, для общего доступа.
  • EDU — школы и образовательные учреждения.
  • MIL — выделенное доменное имя для армии США.
  • GOV — выделенное доменное имя для правительства США.
  • US, UK, RU и другие двухбуквенные коды стран — имена присваиваются национальными регуляторами отдельных стран.

Перед точкой в доменном имени высшего уровня обычно идет имя сайта, сервиса или наименование организации, на которую зарегистрирован домен, например itelon.ru. Либо это может быть другое слово, каким-то образом обозначающее эту организацию. Чаще всего это точное совпадение с названием компании, но так бывает не всегда.

Известна деятельность т. н. киберсквоттеров, которые регистрируют коммерческие названия известных компаний в национальных доменах на себя в надежде продать доменное имя этой компании, когда она придет в ту или иную страну. Например, некоторое время назад, компания Nokia не могла зарегистрировать сайт в России вида nokia.ru. Это имя уже было зарегистрировано каким-то киберсквоттером и на главной (и единственной) странице этого сайта было написано, что это —клуб по обсуждению недостатков корейских автомобилей No KIA. Никакого клуба там, конечно, не было. Компания Nokia не пошла на поводу у вымогателей и зарегистрировала другое доменное имя, с дополнительными буквами перед .ru. В настоящее время этот вид вымогательства уже практически исчез, т. к. национальные суб-домены стало можно делать внутри главных доменов в сегменте .com, например, https://www.nokia.com/ru_int/ — для России, https://www.nokia.com/de_int/ — для Германии, и пр. На главной странице любого национального домена обычно бывает меню, где можно выбрать любой национальный суб-домен.

Буквы с левого края имени домена, например, www или mail, — это имя хоста (host name). Оно определяет имя сервера, выполняющего определенные функции в домене.

Наконец, протокольная часть имени http означает Hypertext Transfer Protocol («протокол передачи гипертекста»), при помощи которого происходит обмен информацией пользователя с веб-сайтом. В настоящее время более часто используется https, то есть протокол обмена с функциями безопасности (security), который передает данные в зашифрованном виде. Например, если вы хотите ввести номер кредитной карты на сайте интернет-магазина, а в адресной строке сайта магазина стоит http (а не https), то от такой операции лучше воздержаться, т. к. номер карты и ее трехзначный номер CVV могут быть перехвачены злоумышленниками. Если это htpps, то сведения передаются в зашифрованном виде, ключ шифра при этом взломать практически невозможно, во всяком случае за время транзакции это сделать точно нельзя.

Поскольку все имена в домене должны быть уникальными, то должны быть и средства проверки отсутствия совпадающих имен. Этим занимаются т. н. регистраторы доменных имен (registrar). Регистратор – это орган, который может выдавать доменные имена в одном или нескольких доменах высшего уровня и регистрировать их при помощи сервиса InterNIC — корпорации по управлению доменными именами и IP-адресами ICANN (Internet Corporation for Assigned Names and Numbers), которая следит за уникальностью доменных имен на просторах интернета. После регистрации доменное имя заносится в базу данных, которая называется Whois («кто это»).

Распределенная система

Три буквы WWW в доменном имени расшифровываются как World Wide Web («всемирная паутина»). Их наличие в доменном имени означает, что при запросе через службу www пользователь ищет что-то в сети. Сейчас эти буквы в доменном имени часто отсутствуют, поскольку если их нет, то по умолчанию подразумевается запрос DNS в домене высшего уровня WWW.

В эпоху раннего интернета, когда пропускная способность сети была невысокой и DNS-серверов было не так много, аббревиатура WWW иногда расшифровывалась как World Wide Waiting («всемирное ожидание»). Пока открывался сайт, иногда можно было сходить на кухню и заварить чай, а вернувшись, увидеть, что сайт еще не открылся.

Если вместо www в адресной строке браузера указано, например, mail, то это домен почтовой службы, где клиент может получить и отправить почту на почтовом сервере (mail server).

Здесь также могут быть буквы ftp (File Transfer Protocol), означающие протокол передачи файлов. При вводе имени, начинающегося с букв ftp в браузере не будет открываться никакой сайт, но отобразится некое дерево папок, в которых хранятся файлы, похожее на проводник в ОС Windows. Это, наверное, самый древний протокол, который использовался еще до возникновения интернета как такового.

Никакая другая база данных в мире не получает столько запросов в единицу времени и не модифицируется так часто, как база доменных имен в сети WWW из DNS-серверов. Эта база распределена по всему миру на миллионах компьютеров, ею пользуются и ее модифицируют миллионы людей, и тем не менее, она работает как единая интегрированная база данных! И ни одна подобная база данных не работает столь продолжительное время, как DNS. Это поразительный факт.

Задачи DNS-сервера

Основные задачи сервера DNS – следующие:

Рис. 2. Работа DNS-сервера

Работа DNS-сервера

DNS-сервер, к которому обращается клиент (шаг 1 на рис. 1), обычно управляется интернет-провайдером клиента ISP (Internet Service Provider). Как указывалось ранее, DNS-сервер провайдера ISP является частью сетевой конфигурации, которую клиент при подключении к сети получает от протокола DHCP. DNS-сервер провайдера обрабатывает запросы следующим образом:

  • Если запрошенное клиентом доменное имя и соответствующий ему IP-адрес содержатся в базе данных DNS-сервера провайдера, то он выполняет разрешение доменного имени (перевод его в IP-адрес) самостоятельно.
  • Если запрошенного доменного имени нет в базе данных DNS-сервера провайдера, он связывается с другим DNS-сервером. Таких операций может быть несколько (задача 2).
  • Если DNS-сервер получает ответ от другого DNS-сервера об успешном нахождении доменного имени и соответствующего ему IP-адреса, то он сообщает об этом клиенту и заносит эти данные в свой кэш на определенное время, чтобы при поступлении повторных запросов того же домена отправлять их без задержки клиенту, без опроса других DNS-серверов (задачи 3 и 4).
  • Если попытка поиска нужного доменного имени на других серверах не увенчалась успехом, то DNS-сервер провайдера возвращает клиенту (обычно в пределах минуты) сообщение о том, что такого имени не существует или оно введено неверно.

DNS-сервер, который управляет определенным доменом, называется «началом власти» (да, именно так) для этого домена — SOA (Start Of Authority). Постепенно, результаты запросов имен хостов на SOA распространяются на другие DNS-серверы, которые распространяют их на следующие DNS-серверы и так далее по всему интернету.

Такое распространение – результат того, что каждый DNS-сервер кэширует (сохраняет на определенное время во временном буфере) результаты поиска. Это время называется TTL (Time To Live), и оно может быть от нескольких минут до нескольких дней. Продолжительность TTL устанавливают администраторы серверов, поэтому этот показатель может варьироваться по сети интернет.

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

Вот, например, как организована иерархия системы DNS такого известного ресурса, как Википедия:

Рис. 3. Пример иерархии DNS

Пример иерархии DNS (источник: https://en.wikipedia.org)

На август 2020 года в мире существует 13 корневых серверов, которые управляются 12 организациями. Интерактивную карту корневых серверов и их реплик можно найти на сайте https://root-servers.org/. На этом сайте есть интерактивная карта, где можно получить более подробное расположение корневых серверов и их реплик.

Рис. 4. Карта корневых серверов и их реплик (источник: root-servers.org)

Карта корневых серверов и их реплик (источник: root-servers.org)

Типы DNS-серверов

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

Создание нового доменного имени

Чтобы создать доменное имя нужно сделать следующее:

  • Найти уникальное незарегистрированное доменное имя, которое можно проверить по базе данных Whois. Есть ряд сайтов, которые предлагают услугу бесплатного поиска по Whois.
  • Зарегистрировать имя у одного из многочисленных регистраторов. Цена регистрации обычно зависит от домена: COM, NET, INFO, ORG, либо национальный домен (RU).
  • Можно также воспользоваться услугами сторонней компании, оказывающей услуги хостинга (хостер), которая от имени клиента произведет регистрацию у регистратора и даже выберет для него уникальное имя в соответствии с его пожеланиями.

Аренда DNS-сервера у регистратора или компании, оказывающей услуги хостинга, называется «парковкой домена» (parked domain). В этом случае физический DNS-сервер будет частью большой конфигурации DNS в компании-хостере.

Можно также самостоятельно установить у себя свой собственный DNS-сервер, который может быть как физической, так и виртуальной машиной. В последнем случае этот сервер будет физически находиться у провайдера, но это будет не провайдер интернет, а провайдер услуг дата-центра. Этот сервер становится SOA (Start Of Authority) для собственного домена.

В любом случае далее можно расширять и модифицировать установки DNS и добавлять суб-домены, получать и отправлять электронную почту в домене и управлять другими сервисами. Установки хранятся в «зоновом файле» (zone file) на DNS-сервере. Если DNS-сервер у клиента собственный, то, возможно, ему понадобится самостоятельно редактировать этот файл в текстовом редакторе. Многие регистраторы предоставляют специальный веб-интерфейс для администрирования установок зонового файла DNS клиента. Эти установки называются записями (records). Вот примеры этих записей:

  • Host (A) — основная запись о соответствии IP-адреса имени хоста.
  • Canonical Name (CNAME, каноническое имя) — это название домена. При вводе CNAME в адресную строку браузера происходит переадресация на IP-адрес Host (A).
  • Mail Exchanger (MX, почтовый обменник) — сервис, перенаправляющий электронную почту на специальный почтовый сервер, IP-адрес которого указан в записи MX. Например, если владелец домена использует почту Google в качестве службы e-mail, то в записи MX будет направление вида ghs.google.com.
  • Name Server (NS, сервер имен) — конфигурация этой записи информирует другие DNS-серверы о том, что данный DNS-сервер является SOA для данного домена.
  • Start of Authority (SOA) — это запись в начале каждого зонового файла на первичном сервере зоны и некоторая другая информация. В случае использования хостинга DNS-сервера у регистратора или хостера клиент не может самостоятельно управлять этой записью.
Рис. 5. Пример веб-интерфейса для редактирования записей DNS (источник: presslabs.com).

Рис. 5. Пример веб-интерфейса для редактирования записей DNS (источник: presslabs.com).

Для обычных пользователей наибольший интерес представляют записи MX и CNAME. MX позволяет направлять почту в другой почтовый сервис. CNAME дает возможность указывать для домена пользователя имена хостов в других местоположениях. Например, это может быть запись google.example.com для перенаправления на google.com.

Эволюция DNS

DNS – это не неизменная концепция. В ней постоянно появляются новые службы и функции. Например, в конце 2018 года корпорация ICANN ввела новые функции безопасности для системы DNS, включающие изменения криптографических ключей в протоколе безопасности DNSSEC (Domain Name System Security Extensions), такие как основной ключ входа KSK (Key Signing Key) для корневой зоны (root zone). Поскольку интернет постоянно развивается и разрастается, в частности, в области интернета вещей, поэтому и понадобились новые функции безопасности.

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

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

В 2018 году регулятор IETF (Internet Engineering Task Force) утвердил стандарт протокола DNS-over-HTTPS, который использует шифрование трафика между DNS-серверами, и, таким образом, обеспечивает более высокий уровень защиты персональных данных.

Аппаратные требования к DNS-серверу

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