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

Материал из wiki.p3.ru

Определение

DNS (Domain Name System, «система доменных имён») — компьютерная распределённая система для получения информации о доменах. Основная область применения данной системы — преобразование имени хоста в IP-адрес и предоставления данных о маршрутизации почты. Хост — это любой компьютер или сервер, подключенный к локальной сети или интернету.


Принцип работы

Схематичное представление процесса определения определения IP-адреса по вводимому имени домена

Работа DNS достаточно проста, но из-за незнания её основ возникает основная масса проблем и вопросов при переносе существующего доменного имени и регистрации нового.

Остановимся немного подробней на описании самой схемы.

  • Когда пользователь запускает веб-браузер в вводит название домена сайта, его ПК отправляет запрос к DNS-серверу интернет-провайдера для получения IP-адреса, на котором находится домен (1).
  • Если DNS-серверы провайдера не обнаруживают в своем кэше информации о запрашиваемом сайте, то отправляют запрос на корневые DNS-серверы (2).
  • Корневой DNS-сервер ищет в своей базе данных информацию о серверах имен хостинг-провайдера, на которых присутствует этот сайт. Далее, он сообщает их кэширующему DNS-серверу провайдера (3).
  • После того, как кэширующий DNS-сервер интернет-провайдера получает информацию о серверах имен хостинг-провайдера он опрашивает любой из них (4) и, в случае получения положительного результата получения IP-адреса (5), помещает в кэш. Кэширование используется для того, чтобы снизить как нагрузку на интернет-каналы, так и для ускорения получения результата запроса.
  • После этого DNS-сервер провайдера передает IP-адрес браузеру пользователя, совершившему запрос сайта (6).
  • И уже после этого браузер, получив IP-адрес запрашиваемого сайта, переходит на сам сайт (7 и 8).


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

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


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


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

Диагностика

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

whois

Рассмотрим пример простого запроса информации о домене.

alex@mail:/# whois p3.ru
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian)
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).
domain:        P3.RU
nserver:       ns1.p3.ru. 195.182.8.12
nserver:       ns2.p3.ru. 91.196.136.6
state:         REGISTERED, DELEGATED, VERIFIED
org:           JSC Tranzit Telecom
registrar:     R01-REG-RIPN
admin-contact: https://partner.r01.ru/contact_admin.khtml
created:       2005.08.23
paid-till:     2013.08.23
free-date:     2013.09.23
source:        TCI
Last updated on 2012.08.22 19:16:35 MSK


Из полученной информации виден регистратор домена, дата регистрации, владельца домена и сервера имен хостинг-провайдера, которые и интересны в данном случае. Данное приложение есть как в операционных системы семейства unix, так и под Windows, также множество онлайн-сервисов предлагают эту функцию (www.who.is, ).


dig

Второе и не менее полезное приложение - dig. Это так же аббревиатура от английского “domain information groper”. Это приложение предоставляет пользователю интерфейс командной строки для отправки запросов к DNS-серверам. В UNIX-системах оно поставлется в дистрибутиве с bind, но существует портированная версия и для Windows.


Рассмотрим работу с dig.

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

alex@mail:/# dig p3.ru
;; <<>> DiG 9.7.3 <<>> p3.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64279
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;p3.ru.                         IN      A
;; ANSWER SECTION:
p3.ru.                  10800   IN      A       195.182.8.32
;; AUTHORITY SECTION:
p3.ru.                  10800   IN      NS      ns1.p3.ru.
p3.ru.                  10800   IN      NS      ns2.p3.ru.
;; ADDITIONAL SECTION:
ns1.p3.ru.              10800   IN      A       195.182.8.12
ns2.p3.ru.              10800   IN      A       91.196.136.6
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Aug 22 19:20:04 2012
;; MSG SIZE  rcvd: 107


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

Далее проверяем наличие домена на самих серверах имен хостинг-провайдера.

alex@mail:/# dig p3.ru @ns1.p3.ru
; <<>> DiG 9.7.3 <<>> p3.ru @ns1.p3.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56754
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 
;; QUESTION SECTION:
;p3.ru.                         IN      A
;; ANSWER SECTION:
p3.ru.                  10800   IN      A       195.182.8.32
;; AUTHORITY SECTION:
p3.ru.                  10800   IN      NS      ns1.p3.ru.
p3.ru.                  10800   IN      NS      ns2.p3.ru.
;; ADDITIONAL SECTION:
ns1.p3.ru.              10800   IN      A       195.182.8.12
ns2.p3.ru.              10800   IN      A       91.196.136.6
;; Query time: 0 msec
;; SERVER: 195.182.8.12#53(195.182.8.12)
;; WHEN: Wed Aug 22 19:21:37 2012
;; MSG SIZE  rcvd: 107


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

Соответствующим образом проверяются и остальные сервера имен, которые можно посмотреть в выводе команды whois.

Если все выводится корректно (к примеру, как выше), значит все в порядке. И беспокоиться не о чем.


Проблемы и решения

1. При запросе whois <domain> видно следующее:

% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian)
% http://www.ripn.net/about/en/servpol.html#3.2 (in English). 
No entries found for the selected source(s).
Last updated on 2012.08.22 19:21:40 MSK

Означает, что домен не зарегистрирован, либо домен зарегистрирован, но сервис whois пока не обновил информацию об этом.