Принцип работы DNS. Как это работает: Пара слов о DNS

  • Перевод

Внимательный читатель найдет на этой картинке IPv6


Люди часто озадачены доменами. Почему мой сайт не работает? Почему эта хрень поломана, ничего не помогает, я просто хочу, чтобы это работало! Обычно, вопрошающий или не знает про DNS, или не понимает фундаментальных идей. Для многих DNS - страшная и непонятная штука. Эта статья - попытка развеять такой страх. DNS - это просто , если понять несколько базовых концепций.

Что такое DNS

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


Вот и все. Правда. Вы или ваш браузер запрашивает значение для ключа www.example.com , и получает в ответ 1.2.3.4 .

Базовые штуки

Большой плюс DNS в том, что это публичная услуга, и можно потыкать в сервера если хочется разобраться. Давайте попробуем. У меня есть домен petekeen.net , который хостится на машине web01.bugsplat.info . Команды, используемые ниже, можно запустить из командной строки OS X (ой, то есть macOS, - прим. пер. ).


Давайте взглянем на маппинг между именем и адресом:


$ dig web01.bugsplat.info

Команда dig это такой швейцарский армейский нож для DNS-запросов. Крутой, многофункциональный инструмент. Вот первая часть ответа:


; <<>> DiG 9.7.6-P1 <<>> web01.bugsplat.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51539 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

Здесь есть только одна интересная деталь: информация о самом запросе. Говорится, что мы запросили запись и получили ровно один ответ. Вот:


;; QUESTION SECTION: ;web01.bugsplat.info. IN A

dig по-умолчанию запрашивает A -записи. A это address (адрес), и это один из фундаментальных видов записей в DNS. A содержит один IPv4 -адрес. Есть эквивалент для IPv6 -адресов - AAAA . Давайте взглянем на ответ:


;; ANSWER SECTION: web01.bugsplat.info. 300 IN A 192.241.250.244

Оставшаяся часть ответа описывает сам ответ:


;; Query time: 20 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 19 20:01:16 2013 ;; MSG SIZE rcvd: 56

В частности, здесь говорится, как долго сервер откликался, какой у сервера IP-адрес (192.168.1.1), на какой порт стучался dig (53 , DNS-порт по-умолчанию), когда запрос был завершен и сколько байтов было в ответе.


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


Но в этом примере не видно, что DNS-сервер 192.168.1.1 связался с кучей других серверов чтобы ответить на простой вопрос: «куда указывает адрес web01.bugsplat.info ?». Давайте запустим трейс чтобы узнать о всей возможной цепочке, которую пришлось бы пройти dig "у, если бы информация не был закэширована:


$ dig +trace web01.bugsplat.info ; <<>> DiG 9.7.6-P1 <<>> +trace web01.bugsplat.info ;; global options: +cmd . 137375 IN NS l.root-servers.net. . 137375 IN NS m.root-servers.net. . 137375 IN NS a.root-servers.net. . 137375 IN NS b.root-servers.net. . 137375 IN NS c.root-servers.net. . 137375 IN NS d.root-servers.net. . 137375 IN NS e.root-servers.net. . 137375 IN NS f.root-servers.net. . 137375 IN NS g.root-servers.net. . 137375 IN NS h.root-servers.net. . 137375 IN NS i.root-servers.net. . 137375 IN NS j.root-servers.net. . 137375 IN NS k.root-servers.net. ;; Received 512 bytes from 192.168.1.1#53(192.168.1.1) in 189 ms info. 172800 IN NS c0.info.afilias-nst.info. info. 172800 IN NS a2.info.afilias-nst.info. info. 172800 IN NS d0.info.afilias-nst.org. info. 172800 IN NS b2.info.afilias-nst.org. info. 172800 IN NS b0.info.afilias-nst.org. info. 172800 IN NS a0.info.afilias-nst.info. ;; Received 443 bytes from 192.5.5.241#53(192.5.5.241) in 1224 ms bugsplat.info. 86400 IN NS ns-1356.awsdns-41.org. bugsplat.info. 86400 IN NS ns-212.awsdns-26.com. bugsplat.info. 86400 IN NS ns-1580.awsdns-05.co.uk. bugsplat.info. 86400 IN NS ns-911.awsdns-49.net. ;; Received 180 bytes from 199.254.48.1#53(199.254.48.1) in 239 ms web01.bugsplat.info. 300 IN A 192.241.250.244 bugsplat.info. 172800 IN NS ns-1356.awsdns-41.org. bugsplat.info. 172800 IN NS ns-1580.awsdns-05.co.uk. bugsplat.info. 172800 IN NS ns-212.awsdns-26.com. bugsplat.info. 172800 IN NS ns-911.awsdns-49.net. ;; Received 196 bytes from 205.251.195.143#53(205.251.195.143) in 15 ms

Информация выводится в иерархической последовательности. Помните как dig вставил точку. после хоста, web01.bugsplat.info ? Так вот, точка. это важная деталь, и она означает корень иерархии.


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


Итак, в самом верху трейса находятся корневые сервера, каждый определен с помощью NS- записи. NS -запись связывает доменное имя (в данном случае, корневой домен) с DNS-сервером. Когда вы регистрируете доменное имя у регистратора типа Namecheap или Godaddy, они создают NS -записи для вас.


В следующем блоке видно, как dig выбрал случайный корневой сервер, и запросил у него A -запись для web01.bugsplat.info . Видно только IP-адрес корневого сервера (192.5.5.241). Так какой именно корневой сервер это был? Давайте узнаем!


$ dig -x 192.5.5.241 ; <<>> DiG 9.8.3-P1 <<>> -x 192.5.5.241 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2862 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;241.5.5.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 241.5.5.192.in-addr.arpa. 3261 IN PTR f.root-servers.net.

Флаг -x заставляет dig провести обратный поиск по IP-адресу. DNS отвечает записью PTR , которая соединяет IP и хост, в данном случае - f.root-servers.net .


Возвращаясь к нашему начальному запросу: корневой сервер F вернул другой набор NS -серверов. Он отвечает за домен верхнего уровня info . dig запрашивает у одного из этих серверов запись A для web01.bugsplat.info , и получает в ответ еще один набор NS -серверов, и потом запрашивает у одного из этих серверов запись A для web01.bugsplat.info. . И, наконец, получает ответ!


Уф! Сгенерировалось бы много трафика, но почти все эти записи были надолго закэшированы каждым сервером в цепочке. Ваш компьютер тоже кэширует эти данные, как и ваш браузер. Чаще всего DNS-запросы никогда не доходят до корневых серверов, потому что их IP-адреса почти никогда не изменяются («Наверно все таки речь идет о большом TTL для записей в их базе. Если у DNS сервера IP адрес вообще ни разу не изменялся, то это не означает, что его база навечно закеширована» - прим. от ). Домены верхнего уровня com , net , org , и т.д. тоже обычно сильно закэшированы.

Другие типы

Есть еще несколько типов, о которых стоит знать. Первый это MX . Он соединяет доменное имя с одним или несколькими почтовыми серверами. Электронная почта настолько важна, что у нее есть свой тип DNS-записи. Вот значения MX для petekeen.net:


$ dig petekeen.net mx ; <<>> DiG 9.7.6-P1 <<>> petekeen.net mx ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18765 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;petekeen.net. IN MX ;; ANSWER SECTION: petekeen.net. 86400 IN MX 60 web01.bugsplat.info. ;; Query time: 272 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 19 20:33:43 2013 ;; MSG SIZE rcvd: 93

Заметьте, что MX -запись указывает на имя, а не на IP-адрес.


Еще один тип, который вам скорее всего знаком, это CNAME . Расшифровываетя как Canonical Name (каноническое имя). Он связывает одно имя с другим. Давайте посмотрим на ответ:


$ dig www.petekeen.net ; <<>> DiG 9.7.6-P1 <<>> www.petekeen.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16785 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.petekeen.net. IN A ;; ANSWER SECTION: www.petekeen.net. 86400 IN CNAME web01.bugsplat.info. web01.bugsplat.info. 300 IN A 192.241.250.244 ;; Query time: 63 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 19 20:36:58 2013 ;; MSG SIZE rcvd: 86

Сразу видно, что мы получили два ответа. Первый говорит, что www.petekeen.net указывает на web01.bugsplat.info . Второй возвращает запись A для того сервера. Можно считать, что CNAME это псевдоним (или алиас) для другого сервера.

Что не так с CNAME

Записи CNAME очень полезны, но есть важный момент: если есть CNAME с каким-то именем, то нельзя создать другую запись с таким же именем. Ни MX , ни A , ни NS , ничего.


Причина в том, что DNS производит замену таким образом, что все записи того места, куда указывает CNAME , также валидны для CNAME . В нашем примере, записи у www.petekeen.net и web01.bugsplat.info будут совпадать.


Поэтому нельзя делать CNAME на корневом домене вроде petekeen.net , потому что обычно там нужны другие записи, например, MX .

Запросы к другим серверам

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


$ dig www.petekeen.net @8.8.8.8

Символ @ с IP-адресом или хостом заставляет dig прозводить запрос к указанному серверу через порт по-умолчанию. Можно использовать публичный DNS-сервер Гугла или почти-публичный-сервер Level 3 по адресу 4.2.2.2 .

Типичные ситуации

Давайте рассмотрим типичные ситуации, знакомые многим веб-разработчикам.

Редирект домена на www

Часто нужно сделать редирект домена iskettlemanstillopen.com на www.iskettlemanstillopen.com . Регистраторы типа Namecheap или DNSimple называют это URL Redirect . Вот пример из админки Namecheap:




Символ @ означает корневой домен iskettlemanstillopen.com . Давайте посмотрим на запись A у этого домена:


$ dig iskettlemanstillopen.com ;; QUESTION SECTION: ;iskettlemanstillopen.com. IN A ;; ANSWER SECTION: iskettlemanstillopen.com. 500 IN A 192.64.119.118

Этот IP принадлежит Namecheap"у, и там крутится маленький веб-сервер, который просто делает перенаправление на уровне HTTP на адрес http://www.iskettlemanstillopen.com:


$ curl -I iskettlemanstillopen.com curl -I iskettlemanstillopen.com HTTP/1.1 302 Moved Temporarily Server: nginx Date: Fri, 19 Jul 2013 23:53:21 GMT Content-Type: text/html Connection: keep-alive Content-Length: 154 Location: http://www.iskettlemanstillopen.com/

CNAME для Heroku или Github

Взгляните на скриншот выше. На второй строке там CNAME . В этом случае www.iskettlemanstillopen.com указывает на приложение, запущенное на Heroku.


$ heroku domains === warm-journey-3906 Domain Names warm-journey-3906.herokuapp.com www.iskettlemanstillopen.com

С Github похожая история, но там нужно создать специальный файл в корне репозитория, и назвать его CNAME . См. документацию .dns Добавить метки

Аббревиатура dns сегодня на слуху у всех пользователей сети интернет. Но немногие знают, что конкретно означают эти английские буквы. Что такое dns и как расшифровать это название?

Domain Name System

Во всемирной паутине каждый веб-сайт имеет личный IP – адрес. Все IP – адреса представлены в виде последовательности четырех чисел и точек: 222.222.222.222. Эти числа получили название океты. После заключительной цифры точка не ставится. В IP – адрес могут входить числа от 0 до 255.

Если мы хотим зайти на какой-либо сайт, мы набираем доменное имя, а не IP – адрес. Согласитесь, сочетание букв mail.ru запомнить гораздо проще, чем длинную последовательность чисел. И тут разработчики задумались, как привязать эти числа к буквенному адресу?

В результате была разработана система DNS – Domain Name System . Если перевести это словосочетание на русский язык, мы получим название «Служба доменных имен».



Что такое домен?

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

Длинный адрес поделили на домены (сегменты), а их, в свою очередь, разделили на поддомены.

Так как интернет появился в США, основные домены имеют английские названия:

COM – Организации, занимающиеся бизнесом

EDU – Учреждения в сфере образования

MIL – Военные структуры

ORG – Частные компании

NET – Интернет-провайдеры

Основные (коренные) домены других государств представляют собой сочетание двух букв (RU ).



Домены второго уровня – это названия городов и районов в сокращенном виде, а к третьему уровню относятся предприятия и компании.

Точка – это очень важный знак, когда дело касается доменов. Она выполняет роль разделителя между доменами различного уровня. А вот в конце имени (адреса) точку не ставят.

Каждый отдельно взятый домен с точкой — это метка. Ее протяженность не может быть больше 63 символов. Общая длина адреса – 255 знаков.

Для написания имен доменов обычно берутся буквы латиницы и знак дефис. Реже используются приставки других письменных систем. Какие буква буду написаны, заглавные или маленькие, роли не играет.



Как работает DNS

Эта уникальная система превращает длинные последовательности чисел IP – адресов в доменные имена. Также она действует и в обратном порядке, преобразуя имена доменов в IP – адреса. Если бы dns-серверов не существовало, пользователям сети интернет пришлось бы запоминать или записывать не простые названия из латинских букв, а длинные цепочки чисел, разделенные точками. Согласитесь, не слишком радужная перспектива?

Если dns-сервер не работает, то доменные имена не будут преобразованы в IP – адреса. При наборе любого адреса сайта пользователям будет показана страница с ошибкой. При этом соединение с интернетом не нарушится.



Адрес dns выдается автоматически или указывается в настройках интернета. Чтобы изменить данные, следует зайти во вкладку «Сетевые подключения». Затем нужно открыть протокол, который используется для обслуживания сети. Здесь следует открыть ссылку «Свойства» и указать нужные параметры. В большинстве случаев пользователи прописывают основной адрес IP и второй, альтернативный.



Зачем нужен сервер DNS

Выяснив, что такое домен и IP-адрес, возникает резонный вопрос, что такое dns сервер. Dns — сервера – это компьютеры, которые хранят список объектов внутри одного уровня сети интернет. Они позволяют пользователям обмениваться информацией быстро.

Каждый уровень сети имеет личный сервер, на котором бережно хранятся данные об адресах юзеров отдельного сегмента.

Например, пользователь хочет отыскать нужный сайт. Служба отправляет запрос на локальный сервер. Если эти данные там есть, то клиент получает ответ, что такая страничка существует. Браузер получает адрес сайта и загружает его.

Если на местном сервере нет нужной информации, то сервер dns делает запрос компьютерам высшего порядка. Этот алгоритм продолжается до тех пор, пока нужный адрес не будет найден.

Что такое DNS?

DNS расшифровывается как Domain Name System или Domain Name Service. Вы указали имя, а DNS подставляет ip адрес ресурса, на котором размещен сайт. Название в данном случае именно имя хоста или IP адрес. Без DNS вы должны были бы помнить IP адрес каждого сайта, который хотите посетить. Сегодня в Интернете более 300 миллионов веб-сайтов, помнить IP адрес необходимого сайта совершенно невозможно.

Что такое динамический IP?

Как сделать статический ip адрес из динамического?

Нет необходимости покупать статический IP. Используйте наш бесплатный Dynamic DNS для сопоставления динамического адреса или длинного URL с Вашим ресурсом, чтобы легко запомнить имя хоста. Удаленный мониторинг Вашего дома через веб-камеру на любом порту или запуск собственного сервера у Вас дома с динамическим IP адресом - все это доступно с сервисом DnsIP . В случае выделения провайдером динамического IP такой сервис, как Dynamic DNS, становится необходимым.

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

Приватная сеть.

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

Удаленный компьютер и удаленный рабочий стол.

С помощью DynDNS Secure сервис DnsIP позволяет организовать подключение к удаленному компьютеру через любые программы удаленного доступа, используя любой порт. При этом Вы напрямик связываетесь с удаленным компьютером, а наш сервис лишь сообщает Вашим программам необходимый IP адрес.

Мониторинг сети.

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

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

Автонажатие на кнопку бесплатного доступа при использовании Yota.

В случае, если Вы исользуете бесплатный доступ к интернету от провайдера "Yota", один раз в сутки соединение блокируется, и появляется окно в браузере c предложением продолжить на медленной скорости. Это крайне неудобно при использовании удаленного доступа к данному компьютеру. В этом случае достаточно установить нашу бесплатную программу , и она восстановит доступ к интернету в течение нескольких минут. Эта опция доступна без регистрации пользователя на нашем сайте. При этом программу необходимо только установить, никаких настроек делать не нужно.

В любой момент времени можно узнать IP-адрес Вашего ресурса.

К Вашим услугам страница http://dns-free.com/dns2ip.php?dns=xxxxxxx, где xxxxxxx - имя домена в системе DnsIP. Используйте её для организации ссылок на Ваш ресурс с использованием системы динамического днс. Либо добавьте в избранное, и одним щелчком мыши узнайте текущий ip Вашего ресурса. Или введите вручную в форме на той же

Большинство пользователей Интернета знают, что DNS-сервер обеспечивает трансляцию имен сайтов в IP адреса. И обычно на этом знания про DNS-сервер заканчиваются. Эта статья рассчитана на более углублённое рассмотрение его функций.

Итак, давайте представим, что Вам придется отлаживать сеть, для которой провайдер выделил блок «честных» адресов, или настраивать поднимать в локальной сети свой DNS-сервер. Вот тут сразу и всплывут всякие страшные слова, типа «зона», «трансфер», «форвардер», “in-addr.arpa” и так далее. Давайте постепенно с этим всем и разберёмся.

Очень абстрактно можно сказать, что каждый компьютер в Интернете имеет два основных идентификатора – это доменное имя (например, www..0.0.1). А вот абстрактность заключается в том, что, и IP-адресов у компьютера может быть несколько (более того, у каждого интерфейса может быть свой адрес, вдобавок еще и несколько адресов могут принадлежать одному интерфейсе), и имен тоже может быть несколько. Причем они могут связываться как с одним, так и с несколькими IP-адресами. А в-третьих, у компьютера может вообще и не быть доменного имени.

Как уже было сказано раньше, основной задачей DNS-сервера является трансляция доменных имен в IP адреса и обратно. На заре зарождения Интернета, когда он еще был ARPANET’ом, это решалось ведением длинных списков всех компьютерных сетей. При этом копия такого списка должна была находиться на каждом компьютере. Естественно, что с ростом сети такая технология уже стала не удобной для пользователей, потому как эти файлы были больших размеров, к тому же их еще и нужно было синхронизировать. Кстати, некоторые такие «отголоски прошлого» этого метода можно еще встретить и сейчас. Вот так в файл HOSTS (и в UNIX, и в Windows) можно внести адреса серверов, с которыми вы регулярно работаете.

Так вот, на смену неудобной «однофайловой» системе и пришел DNS - иерархическая структура имен, придуманная доктором Полом Мокапетрисом.

Итак, есть «корень дерева» – “.” (точка). Учитывая то, что этот корень единый для всех доменов, то точка в конце имени обычно не ставится. Но она используется в описаниях DNS и это нужно запомнить. Ниже этого «корня» находятся домены первого уровня. Их немного - com, net, edu, org, mil, int, biz, info, gov (и пр.) и домены государств, например, ua. Еще ниженаходятся домены второго уровня, а еще ниже - третьего и т.д.

Что такое «восходящая иерархия»

При настройке указывается адрес как минимум одного DNS-сервера, но как правило, их два. Далее клиент посылает запрос этому серверу. Получивший запрос сервер, или отвечает, если ответ ему известен, или пересылает запрос на «вышестоящий» сервер (если тот известен), или сразу на корневой, так как каждому DNS-серверу известны адреса корневых DNS-серверов.
Затем запрос начинает спускаться вниз - корневой сервер пересылает запрос серверу первого уровня, тот - серверу второго уровня и т.д.

Кроме такой «вертикальной связи», есть еще и «горизонтальные», по принципу “первичный - вторичный”. И если допустить, что сервер, который обслуживает домен и работает «без подстраховки», вдруг становится недоступным, то компьютеры, которые расположены в этом домене, станут тоже недоступны! Вот потому то при регистрации домена второго уровня и предъявляется требование указывать минимум два DNS- сервера, которые будут обслуживать этот домен.

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

Основные условия для работы серверов DNS одной зоны - наличие отдельного соединения с сетью Интернет и размещение их в различных сетях для обеспечения отказоустойчивости. Поэтому многие организации полагаются на провайдеров Internet, которые ведут в их интересах вторичные и третичные серверы DNS.

Рекурсивные и нерекурсивные серверы

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

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

Forwarders – «пересыльщики» запросов и ускорители разрешения имён

У DNS-серверов есть довольно полезное свойство – умение использовать так называемых «пересыльщиков» (forwarders). «Честный» DNS-сервер самостоятельно опрашивает другие сервера и находит нужный ответ. Но вот если ваша сеть подключена к Интернету по медленной линии (например, dial-up), то этот процесс может занять много времени. Поэтому можно перенаправлять эти запросы, например, на сервер провайдера, и после этого просто принимать его ответ.

Применение таких «пересыльщиков» может стать полезным для больших компаний, у которых есть несколько сетей. Так в каждой сети можно установить относительно слабый DNS-сервер, и указать в качестве «пересыльщика» более мощную машину с более быстрой линией. Вот и получится, что все ответы будут кэшироваться этим более мощным сервером, что приведёт к ускорению разрешение имен для целой сети.

Для каждого домена ведётся своя база данных DNS, которая выглядит как набор простых текстовых файлов. Они расположены на первичном (основном) DNS- сервере, и их время от времени копируют к себе вторичные сервера. А в конфигурации сервера указывается, какой файл содержит описания зон, а так же является ли сервер первичным или вторичным для этой зоны.

Уникальный адрес

Уникальный адрес в Интернете формируется добавлением к имени хоста доменного имени. Таким образом, компьютер, к примеру, “fred” в домене, к примеру, “smallorg.org” будет называться fred.smallorg.org. Кстати, домен может содержать как хосты, так и зоны. Например, домен smallorg.org может содержать хост fred.smallorg.org и в то же время вести зону acctg.smallorg.org, которая является поддоменом и может содержать еще один хост barney.acctg.smallorg.org. Хотя это и упрощает базу данных имен, однако делает поиск хостов в сети Internet более сложным.

В системе DNS реализуются три сценария поиска IP-адреса в базе данных.

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

* Компьютер, которому необходимо получить соединение с компьютером в другой зоне запрашивает локальный DNS-сервер своей зоны. Локальный DNS-сервер обнаруживает, что нужный компьютер находится в другой зоне, и формирует запрос корневому DNS-серверу. Корневой DNS-сервер спускается по дереву серверов DNS и находит соответствующий локальный DNS-сервер. От него он получает IP-адрес запрашиваемого компьютера. Затем корневой DNS-сервер передает этот адрес локальному серверу DNS, который послал запрос. Локальный DNS-сервер возвращает IP-адрес компьютеру, с которого был подан запрос. Совместно с IP-адресом передается специальное значение - время жизни TTL (time to live). Это значение указывает локальному DNS-серверу, сколько времени он может хранить IP-адрес удаленного компьютера у себя в кэше. Благодаря этому увеличивается скорость обработки последующих запросов.

* Компьютер, которому необходимо повторно получить соединение с компьютером в другой зоне запрашивает локальный DNS-сервер своей зоны. Локальный DNS-сервер проверяет, нет ли этого имени в его кэше и не истекло ли еще значение TTL. Если адрес еще в кэше и значение TTL не истекло, то IP-адрес посылается запрашивающему компьютеру. Это считается неавторизованным ответом, так как локальный DNS-сервер считает, что с момента последнего запроса IP-адрес удаленного компьютера не изменился.

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

По мере роста дерева DNS, к серверам системы доменных имен предъявлялись новые требования. Как уже упоминалось ранее, родительские DNS-серверы должны иметь IP-адреса своих дочерних серверов DNS, чтобы правильно обрабатывать DNS-запросы на преобразование имен в IP-адреса. Чтобы DNS-запросы обрабатывались правильно, поиск по дереву DNS должен начинаться из какой-то определенной точки. В период младенчества сети Internet большинство запросов на поиск имен приходилось на локальные имена хостов. Основная часть DNS-трафика проходила внутри локальной зоны и лишь в худшем случае достигала родительских серверов DNS. Однако с ростом популярности Internet и, в частности Web, все больше DNS-запросов формировалось к удаленным хостам вне локальной зоны. Когда DNS-сервер не находил имя хоста в своей базе данных, он вынужден был запрашивать удаленный DNS-сервер. Наиболее подходящими кандидатами для удаленных DNS-серверов, естественно, стали серверы DNS верхнего уровня, которые обладают полной информацией о дереве доменов и способны найти нужный DNS-сервер, ответственный за зону, к которой принадлежит запрашиваемый хост. Затем они же возвращают IP-адрес нужного хоста локальному DNS-серверу. Все это приводит к колоссальным перегрузкам корневых серверов системы DNS. К счастью, их не так много и все они равномерно распределяют нагрузку между собой. Локальные DNS-серверы работают с серверами DNS доменов верхнего уровня с помощью протокола DNS, который рассматривается далее в этой лекции.

Система DNS - улица с двусторонним движением. DNS не только отыскивает IP-адрес по заданному имени хоста, но способна выполнять и обратную операцию, т.е. по IP-адресу определять имя хоста в сети. Многие Web- и FTP-серверы в сети Internet ограничивают доступ на основе домена, к которому принадлежит обратившийся к ним клиент. Получив от клиента запрос на установку соединения, сервер передает IP-адрес клиента DNS-серверу как обратный DNS-запрос. Если клиентская зона DNS настроена правильно, то на запрос будет возвращено имя клиентского хоста, на основе которого затем принимается решение о том, допустить данного клиента на сервер или нет.

DNS – это служба, которая обеспечивает обмен между различными сегментами сети. Ее применение позволяет значительно сократить время работы на поиск информации. В этой статье вы узнаете об основных принципах функционирования службы, а также способах и формах передачи данных в Интернете.

Как работает

На заре развития Интернета существовала «плоская» система наименований: у каждого пользователя был отдельный файл, в котором содержались списки необходимых ему контактов. Когда он подключался к Всемирной паутине, то его данные рассылались на другие устройства.

Однако из-за стремительного развития Интернета необходимо было максимально упростить обмен данными. Поэтому его разделили на меньшие сегменты-домены. В свою очередь, они разделяются на поддомены. На вершине адреса, поданного в именной форме, находится корень – основной домен.

Поскольку Интернет – это американская разработка, то существует два типа первичных доменов:

  • общие домены, которые принадлежат учреждениям США:
  1. com – бизнес-организации;
  2. gov – правительственные заведения;
  3. edu – образовательные учреждения;
  4. mil – военные представительства;
  5. org – частные организации;
  6. net – интернет-провайдера.
  • коренные домены других страны состоят из двух букв.

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


Точка исполняет роль разделителя между доменами разными порядка. В конце имени точка не ставится. Каждый отдельный домен с точкой называется меткой.

Ее длина не должна превышать 63 символа, а полная длина адреса – 255 знаков. В основном, используются латиница, цифры и знак дефиса, однако несколько лет назад начали использовать начали использовать приставки на основе других систем письменности. Регистр букв не имеет значения.


Сервера – это такие компьютеры, на которых содержится перечень других объектов внутри одного уровня сети, что позволяет ускорить обмен между пользователями. Они и стали основой новой системы.

У каждого уровня сети должен быть собственный сервер, который содержит информацию об адресах пользователей своего сегмента.

Поиск необходимых данных происходит так:



Основы DNS

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


Существует несколько типов компьютеров, которые обслуживают DNS:

  • master – главный агент сети. Он может изменять ее конфигурацию;
  • slave – устройства второго порядка. Они обслуживают клиентов наравне с master и могут заменять его заменять в случае неполадок. Это позволяет разгрузить сеть;
  • кэширующий. Содержит в своем информацию о доменах посторонних зон;
  • невидимый. Отсутствует в описании зоны. Чаще всего этот статус присваивается пользователям со статусом master для того, чтобы уберечь их от атаки.

К ним пользователь может отправить один из двух типов запроса.

Браузер посылает его через программу-resolver:

  • рекурсивный. Если сервер не содержит необходимой информации, этом случае он узнает необходимые данные у компьютеров высшего уровня и присылает клиенту ответ. Это позволяет уменьшить количество запросов и обеспечивает экономию времени и вашего трафика;
  • итеративный. Сервер присылает готовый ответ, отбирая информацию только из собственного кэша (памяти). Если у него нет подходящих данных, то он предоставляет ссылку на другие компьютеры. Затем браузер переходит по этому адресу.

Существует два типа ответов:

  1. авторитативный – если данные отправляются с устройства, которые обслуживают сеть;
  2. неавторитативный. Присылается посторонним компьютером, который получает необходимые данные из собственного кэша или после итеративного запроса.

Видео: служба DNS

Имена и IP-адреса

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

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

Режим работы

Сервера могут работать в режимах:

  1. обслуживание собственной зоны. Обмен данными совершается между главным и подчиненными компьютерами. При этом запросы от неавторитативных пользователей не принимаются;
  2. выполнение рекурсивного вопроса;
  3. форвардинг – сервер отправляет запрос в другую зону.

Изменение DNS параметров

Обычно эти параметры задаются сетью в автоматическом режиме. Для того чтобы сбросить данные необходимо зайти в раздел «Сетевые подключения».

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

В разделе «Свойства» можно задать необходимые параметры. Обычно указываются основной IP-адрес сервера и альтернативный.

Формат сообщения

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


Поле флагов (следующие 16 бит) включает информацию:

  1. тип сообщения;
  2. код операции;
  3. идентификация авторитативности (т.е. показывает, принадлежит ли обслуживающий компьютер к сети);
  4. ТС-флаг. Отображает, пришло сообщение обрезанным или полным.
  5. флаг рекурсии, т.е. требования серверу послать запросы компьютерам высшего порядка;
  6. флаг возможности рекурсии. Показывает способность сервера осуществлять перенаправление сообщения;
  7. код возврата. Отображает, послан ответ с ошибками или нет.

Последнее 16-битное поле показывает общее количество учитываемых параметров.

Вопросы в DNS запросе

Часть записи ресурса в отклике

Любой отклик содержит сведения о стороне, отправившей сообщение. В нем содержатся следующие данные: ответ, полномочия сервера и дополнительная информация о нем.


Кроме них, в сообщении содержится:

  • имя домена;
  • тип запроса;
  • срок актуальности кэшированной версии;
  • длина записи ресурса – оценка объема информации.

Запросы указателя

Запросы указателя направлены на поиск страницы в инверсивном режиме, т.е. поиск имени ресурса по IP-адресу, поданного в виде текстовой строки, разделенной точками.


Для его отправки адрес узла записывается в противоположном порядке с добавлением определенного суффикса (чаще всего в форме in-addr.arpa).

Совершить операцию можно, если ресурс содержит PTR-запись. Это позволяет передать управление зоной владельцу IP-адресов.

Записи ресурсов

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

Эти данные включают следующие виды записей:

  1. SOA –старта полномочий. Она позволяет сопоставить домен и обслуживающие его компьютеры. Также в них содержатся сведения о сроке актуальности кэшированной версии, и контактном лице, которое обслуживает сервер определенного уровня;
  2. А содержат перечень IP-адресов и соответствующих им хостов. Они позволяют идентифицировать адрес ресурсов домена;
  3. NS (Name Server) включают список компьютеров, которые обслуживают домен;
  4. SRV (Service) отображают все ресурсы, которые выполняют важнейшие функции службы;
  5. MX (Mail Exchanger) позволяют автоматически настроить рассылку данных обслуживающим компьютерам в границах одного домена;
  6. PTR (Pointer) используются для поиска имени ресурса, если пользователь знает его IP-адрес;
  7. CNAME (Canonical Name) позволяют серверу упоминаться под несколькими псевдонимами в службе.

Кэширование

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

Однако если операция не удалась, то клиент подает запрос. Чтобы ускорить поиск информации, используются кэшированные сервера. Если он не находит нужных данных, то он выполняет рекурсивный запрос. При подаче он копирует данные других сетей.


Это позволяет экономить траффик, не обращаясь впоследствии к авторитативным пользователям. Но открытая запись остается действительной на протяжении ограниченного срока. Срок его актуальности установлен в файле зоны. По умолчанию минимально он составляет 1 час.

UDP или TCP

Служба поддерживает как протокол UDP, так и TCP.

UDP используется для отправки сообщений по глобальным сетям. Размер сообщений, пересылаемых по этому протоколу, лимитирован. Неполные ответы содержат метку ТС. Это означает, что размер отклика превысил 512 байт, поэтому остальная часть не дошла до компьютера.


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

TCP используется для передачи таких данных, поскольку он позволяет получать любой объем данных, разделенный на сегменты определенного размера.

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

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

Чтобы узнать необходимую информацию, клиент посылает запрос. Отклик содержит основные данные об интересующем объекте и компьютере, обслуживающем зону. Для осуществления этого обмена используются протоколы UDP и TCP.