Что происходит, когда вы хотите открыть в браузере какой-то сайт? Казалось бы, все просто. Достаточно ввести его адрес в строку браузера — и через несколько секунд перед вами появится контент запрашиваемой страницы. За то, чтобы все работало именно так, отвечает система доменных имен, Domain Name System (DNS), которой мы пользуемся каждый день, даже, если не знаем об этом. В сегодняшней статье разберем, зачем нужна DNS, по каким принципам и алгоритмам она работает и что нужно знать об этой системе, если вы собираетесь разместить свой сайт во всемирной паутине.
Что такое DNS-сервер и какую роль он играет в жизни любого интернет-пользователя
Любой веб-ресурс в интернете физически «лежит» на каком-то устройстве. К примеру, на сервере провайдера хостинга или даже вашей личной домашней машине. У этого устройства есть собственный идентификатор — IP-адрес, который состоит из четырех разделенных точкой чисел в диапазоне от 0 до 255. Используя IP-адрес, можно вычислить, откуда именно подгружается сайт или веб-приложение.
Алгоритм работы DNS проще всего объяснить на примере телефонного справочника.
Представьте, что IP-адрес сервера, на котором хранится сайт, — это номер телефона, а DNS — книга со всеми «номерами».
Когда вы вводите в адресную строку браузера адрес (доменное имя) сайта, на который хотите зайти, DNS находит соответствующий ему IP-адрес и отдает его браузеру. После этого веб-сервер обрабатывает запрос клиента и отправляет контент нужной веб-страницы.
УвеличитьПо структуре DNS напоминает логическое дерево. Пространство доменных имен имеет определенную иерархию. В самом верху расположен корневой домен. Уже от него «ответвляются» домены первого уровня, после них — второго и так далее.
DNS-сервер: и алгоритм работы
Ключевой элемент системы DNS, как нетрудно догадаться, — это DNS-сервер. Он выполняет две задачи:
- хранит данные о том, какие IP-адреса соответствуют доменным именам;
- кэширует ресурсные записи других DNS-серверов.
Допустим, что вы каждый день заходите на некий веб-ресурс, который физически располагается за пределами страны. Постоянная отправка запросов к первичному серверу отнимала бы немало времени, а вам как пользователю приходилось бы ждать загрузки страниц. Однако на деле работает это иначе. Ближайший к вам DNS-сервер кэширует данные о запрашиваемых ранее IP-адресах и сразу отдает их при последующем обращении.
Подробнее рассмотрим алгоритм работы DNS-сервера:
- Интернет-пользователь в адресной строке браузера набирает доменное имя сайта, на который он хочет зайти. Браузер отправляет его DNS-серверу, который ищет соответствующий этому домену IP-адрес. Если совпадение найдено, в браузере откроется веб-страница. А вот в случае неудачи запрос отправляется серверу более высокого уровня или же корневому DNS-серверу.
- Корневой DNS-сервер посылает запрос серверу первого уровня, тот — серверу второго уровня и так далее по цепочке, пока в системе не будет найден IP-адрес, который соответствует введенному пользователем доменному имени.
- Браузер получает IP-адрес, стучится на веб-сервер, и с хостинга подгружается контент страницы.
В некоторых случаях возможна и обратная ситуация — когда в DNS ищется не IP-адрес, а доменное имя. Это актуально для серверов электронной почты.
Где располагаются DNS-серверы
Глобально за обработку запросов отвечают корневые DNS-серверы — именно они отвечают за корневую зону. Они находятся в зоне ответственности различных операторов, которые поддерживают их непрерывную и стабильную работу.
На сегодняшний день в мире работают около 123 корневых сервера, при этом реплики некоторых из них есть и в России, а именно в Москве, Санкт-Петербурге, Новосибирске, Ростове-на-Дону и Екатеринбурге.
Поскольку от корневых серверов зависит работоспособность всемирной паутины, ответственные организации принимают серьезные меры по обеспечению их отказоустойчивости и доступности — защищают от атак, последствий аварий и стихийных бедствий, сбоев в подаче электроэнергии и других неприятностей. Словом, заботятся о том, чтобы корневые DNS-серверы оставались работоспособны в любых экстренных ситуациях.
Записи и зоны DNS
Как вы уже знаете, информация о соответствии доменного имени и IP-адреса хранится на DNS-сервере. Его содержимое называют DNS-зоной. Нередко одному доменному имени соответствует сразу несколько адресов, например, — веб-сайт и почтовый сервер.
На DNS сервере информация хранится в виде ресурсных записей. Чаще всего владельцам сайтов и веб-мастерам приходится работать с этими записями:
- A — указывает соответствие имени и IP-адреса веб-ресурса;
- MX — содержит адрес почтового шлюза, именно на MX-запись полагается в своей работе протокол SMTP, ответственный за маршрутизацию почты;
- CNAME — запись для привязки поддоменов;
- NS — адрес непосредственно DNS-сервера.
Зоны .ru и .рф
Основа инфраструктуры системы DNS была заложена еще в 80-х годах прошлого столетия. С тех пор никаких серьезных изменений она не претерпела — лишь росла. Кроме того, появлялись новые доменные зоны. Например, .рф, первый кириллический домен, презентация которого произошла в 2009 году.
До этого у России был только один национальный домен верхнего уровня — .ru. Его зарегистрировали еще 7 апреля 1994 года, впоследствии эта дата стала Днем Рунета, который отмечают даже крупный бизнес и государственные организации.
Пользователи, заставшие зарождение интернета в России, наверняка помнят домен .su — национальный домен СССР и постсоветского пространства. Его от имени Ассоциации пользователей UNIX (Soviet UNIX User’s Group) в 1990 году зарегистрировал Вадим Антонов, руководитель одной из бригад первого российского интернет-поставщика «Демос». Домен .su жив и до сих пор.
Когда и зачем нужно прописывать серверы
Допустим, вы только что приобрели домен у регистратора и хотите разместить на нем свой веб-сайт. Чтобы передать другим серверам информацию о том, что ваше доменное имя существует, нужно прописать ресурсные записи и указать DNS-сервер для вашего доменного имени.
Как правило, такая информация может обновляться до суток, и в течение этого времени ваш сайт не будет работать. Иногда в целях отказоустойчивости прописывают не один, а сразу несколько серверов. У доменного имени может быть один первичный и до 12 вторичных серверов — если какой-то из них сломается или на нем случится сбой, ваш сайт все равно будет доступен для посетителей.
Как защитить DNS-сервер
Если вы думаете, что ваш сайт злоумышленникам не нужен и атаковать его никто не будет, вы глубоко заблуждаетесь. Сегодня хакерская активность приобрела глобальные масштабы, и под угрозой — как веб-ресурсы крупных компаний, так и личные сайты.
Атаки на DNS-серверы уже не раз приводили к серьезным сбоям. Конечно, наиболее интересная для злоумышленников мишень — корневые серверы. Одна из крупнейших атак на них произошла около 20 лет назад, в 2002 году, когда злоумышленники попытались вывести из строя 10 из существовавших на тот момент 13-ти корневых серверов с помощью DDoS-атаки.
Протокол DNS при получении результатов запросов опирается на протокол UDP. Он же в целях повышения уровня безопасности данных и обеспечения целостности информации эксплуатирует модель передачи данных без соединений. По этой причине большая часть атак на DNS-серверы основаны на подделке IP-адресов.
Защитить DNS-сервер от атак злоумышленников можно несколькими способами.
Например, можно использовать:
- технологию Unicast Reverse Path Forwarding (uRPF)
- функцию Ethernet-коммутатора IP Source Guard
- утилиту dns-validator
uRPF — средство антиспуфинга на третьем уровне модели OSI, использующееся как инструмент защиты data plane. Технология позволяет избежать фальсификации IP-адреса следующим образом. Все входящие пакеты проверяются и принимаются только при условии, что сетевой интерфейс, который его отправил, действительно предназначен для обмена трафиком с адресатом. Пакеты, которые такую проверку не проходят, отбрасываются.
Для защиты от подделки IP-адресов функция использует таблицу привязок — Static Binding — которая позволяет ей отфильтровывать легитимные сетевые DHCP- и ARP-пакеты от нелегитимных. Работает это так. Когда коммутатор получает пакет, инициируется поиск соответствующих параметров (MAC- и IP-адрес, идентификатор VLAN и номер порта) в общей таблице привязок. Если привязка есть — пакет пересылается.
ПО умеет контролировать передачу любых пакетов DNS, сверять запрос и ответ, и уведомлять пользователя, если есть подозрение в подделке трафика.