Dyn DNS story

Повесть о том, как я Dyn DNS получал и сервер на ноутбуке поднимал.

Image for post

Основные понятия Domain Name System

Исторически, до появления доменной системы имен роль инструмента разрешения символьных имен в IP выполнял файл /etc/hosts. Сейчас он выглядит примерно так.

[ilya@localhost ~]$ cat /etc/hosts
# /etc/hosts: static lookup table for host names
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
# End of file

Но с ростом количества хостов в глобальной сети, отслеживать и обслуживать базу имен на всех хостах стало нереально затруднительно. В результате придумали DNS, представляющую собой иерархическую, распределенную систему доменных зон. А /etc/hosts используют, например, чтобы Adobe Photoshop не качал обновления.

Структура системы доменных имен

Доменная структура DNS представляет собой древовидную иерархию, состоящую из узлов, зон, доменов, поддоменов и др. элементов

Image for post

“Вершиной” доменной структуры является корневая зона. Настройки корневой зоны расположены на множестве серверов/зеркал, размещенных по всему миру и содержат информацию о всех серверах корневой зоны, а так же отвечающих за домены первого уровня (ru, net, org и др).(Информация о серверах корневой зоны расположена на www.root-servers.org. Всего серверов 312)

Image for post

Серверы корневой зоны обрабатывают и отвечают на запросы, выдавая информацию только о доменах первого уровня (то есть отвечают на любые запросы, как на нерекурсивные!)

Зона — это любая часть дерева системы доменных имен, размещаемая как единое целое на некотором DNS-сервере. Зону, для бОльшего понимания, можно назвать “зоной ответственности”. Целью выделения части дерева в отдельную зону является передача ответственности (Делегирование) за эту ветвь другому лицу или организации. В каждой зоне имеется, по крайней мере, один авторитетный сервер DNS, который хранит ВСЮ информацию о зоне, за которую он отвечает. (на картинке зоны обозначены синим.)

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

Запросы Dns

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

Image for post

Рекурсивный запрос посылает DNS серверу доменное имя и просит возвратить IP адрес запрошенного домена. При этом сервер может обращаться к другим DNS серверам.

  1. Клиент (браузер, почтовая программа, либо любое другое приложение) отправляет запрос резолверу, резолвер на основании указанных конфигов определяет адрес настроенного сервера имен.
  2. Резолвер посылает запрос указанному серверу имен.
  3. Сервер имен принимает данный рекурсивный запрос и, т.к. не имеет информации ни о домене, ни, возможно, даже о зоне name., отправляет рекурсивный (или нерекурсивный в зависимости от настроек) запрос серверу, отвечающему за корневую зону.
  4. Сервер корневой зоны не обрабатывает рекурсивные запросы, в результате обрабатывает данный запрос как итеративный и возвращает имя и адрес сервера, авторитетного за зону name.
  5. Сервер последовательно продолжает опрашивать авторитативные сервера для последующих зон, в порядке убывания уровня зон в имени
  6. пока не получает удовлетворительный ответ, данных шагов может быть больше, в зависимости от длины доменного имени
  7. и “вложенности” доменных имен.
  8. В итоге, сервер получает необходимый ответ от сервера имен, хранящего необходимую ресурсную запись о хосте.
  9. Сервер провайдера локальной сети возвращает резолверу клиента запрошенные данные.

Делегирование ответственности — это операция передачи ответственности за часть дерева доменных имен (зону) другому лицу или организации. За счет делегирования, в DNS обеспечивается распределённость администрирования и хранения зон.

Делегирование управления поддоменом blan4.no-ip.org мне приводит к созданию новой зоны, которая администрируется на моем ноутбуке независимо от остального пространства имен и может содержать любые доменный имена, которые я захочу, заканчивающиеся на *blan4.no-ip.org. С другой стороны, зона no-ip.org. содержит только доменные имена, оканчивающиеся на *.no-ip.org. Далее можно передать ответственность, например, на зону ololoev.blan4.no-ip.org.

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

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

Я же зарегестрировал себе доменное имя на сайте http://www.noip.com/. Причина, по которой я выбрал именно этот сайт очевидна. ЭТО БЕСПЛАТНО и кроме того у них есть услуга Dyn DNS. Дело в том, что Dom.ru обеспечивает меня не статическим ip адресом и нестабильным интернетом. Следовательно, при внезапном разрыве соединения я потеряю свой адрес. Поэтому dns имя будет недействительно!!

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

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

Для облегчения обновления IP-адреса, No-IP имеет открытый протокол, что позволяет разработчикам открытого программного обеспечения и производителям оборудования передавать по HTTP уведомления об изменении IP-адреса.

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

Практика!!

Настало время сделать свой сайт с DynDNS и Apache!!

Регестрируемся на сайте www.no-ip.com. Необходимо указать реальный почтовый адрес, потому что именно его использует программа обновления ip и dns.

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

На данный момент мы установили соответствие ip адреса хоста и его dns именем. Теперь необходимо установить программу для автоматического изменения ip.

Как это настроить?

На официальном сайте можно скачать программу, котора будет отправлять на сервер ваш новый ip адрес. Но счастливым обладателям маршрутизаторов D-Link, Sonicwall, SMC, Toshiba и ZyXEL надо просто указать в настройках устройства логин и пароль аккаунта с no-ip.org, а маршрутизатор уже сам все будет делать! Кстати, необходимо объяснить роутеру, где именно находится наш домашний сервер. Для этого придется пробросить порты.