Что такое DNS и с чем его едят

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

Что за зверь?

DNS или Domain Name System — это специализированная система которая умеет по имени домена определять какие-то параметры работы в сети Internet. Обычно его используют для получения IP-адреса по имени. Например, когда вы вводите адрес в браузере, то перед подключением к серверу он сначала спрашивает у службы DNS какой реальный IP-адрес у сервера и, если все прошло успешно, подключается непосредственно к серверу и запрашивает страницы. Это было придумано для того, чтобы не запоминать цифровые адреса, а какие-то осмысленные имена.

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

Как хранится информация?

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

Какие записи бывают?

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

Важно знать, что существует 2 основных типа адресации в Internet: IPv4 и IPv6. На самом деле их гораздо больше, нам на текущий момент они не нужны.

Чтобы посмотреть самостоятельно эти записи нужно установить соответствующее по. В Debian:


sudo apt install dnsutils

Чтобы установить утилиту dig в Windows нужно загрузить и установить соответствующий скомпилированный пакет BIND9.

A

Этот тип записи отвечает за тип ресурса IPv4. Например, роутер в домашней сети имеет адрес 192.168.0.1. Чтобы к нему подключиться и настроить обычно указывается этот адрес в браузере. С помощью DNS можно было бы задать ему доменный адрес, например, router.loc. Тогда DNS запись будет выглядеть так:


router.loc.             72220   IN      A   192.168.0.1

Точка в конце имени домена говорит о том, что просмотр начинается от корня доменной системы. Об этом написано в спецификациях.

Чтобы просмотреть информацию нужно выполнить команду:


dig <имя домена>

АААА

Этот тип записи является эквивалентным типу записи A. Разница в том, что возвращается не IPv4, а IPv6.


dig <имя домена> A

MX

Этот тип записи нужен, чтобы определить по основному домену какой домен используется для сервера электронной почты. MX расшифровывается как Mail Exchange.

Мы все привыкли отправлять электронную почту в виде user@server1.loc, где user — имя пользователя а server1.loc — сервер, на котором пользователь зарегистрирован. Теперь представьте, что нужно отправить письмо пользователю user@server2.loc от пользователя user@server1.loc. server1.loc и server2.loc — это абсолютно 2 разных сервера. Так как же серверы понимают куда отправлять письмо?

Все просто! Почтовый сервер server1.loc смотрит на адрес, где после символа @ указан почтовый сервер. Он спрашивает у DNS какой домен используется для этого сервера:


dig <имя домена> MX

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

После этого, как получен домен почтового обменника, сервер запрашивает адрес из записи A или AAAA (смотря какая адресация требуется) и уже может спокойно подключиться для обмена корреспонденцией.

PTR

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


dig -x <адрес сервера>

Частая практика это проверка почтовым сервером отправитель, т.е. принимающий почтовый сервер спрашивает доменное имя. Если такой записи нет или она не ведет на тот же сервер, то должен возникнуть вопрос а стоит ли доверять ему. Это делается для защиты от «спамеров«.

CNAME

Эта запись используется для определения псевдонимов домена. К примеру, изменился домен сайта, но люди еще по старой памяти открывают старое название. Чтобы они так же могли продолжать работать с помощью CNAME устанавливается перенаправление на другой домен, а потом уже для другого домена определяется его реальный адрес. Обычно CNAME используется временно и удаляется через какой-то определенный срок.


dig <имя домена> CNAME

DNAME

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


dig <имя домена> DNAME

TXT

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


dig <имя домена> TXT

SRV

Эта запись предназначена для определения какая служба где находится. Так эту запись используют для определения серверов SIP (телефония), Active Directory (в корпоративных сетях), XMPP (служба обмена мгновенных сообщений) и т.д. У нее все та же роль: узнать реальный сервер, с которым можно установить соединение для дальнейшей работы.


dig _<имя службы>-._<протокол>.<домен> SRV

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

Это все?

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

Forward-сервер — это такой сервер, который является промежуточным и способен «кэшировать» запросы, чтобы разгрузить основной сервер и минимизировать время ответа клиенту.

Поделиться
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.