Сисадминские байки. из склепа :)
Вся системная кухня работы DNS серверов и взаимодействия между ними
(и с ними) считается достаточно сложной, пожалуй самой сложной после работы
систем нижнего уровня по передаче пакетов IP. Постараюсь немного раскрыть
некоторые особенности работы всей системы domain name service (DNS)
с точки зрения конечного пользователя - сервера провайдера. (хотя, кстати,
DNS сервер провайдера, в принципе, от корневого DNS сервера ничем не отличается)
Ранее я объяснял некоторые вещи со стороны юзера, но вот....
Начем, разумеется, с начала. Допустим вы хотите получить настоящее
имя (типа some.isp.ru), которое будет известно всем. Первое: вы
его можете получить у вашего провайдера. Тогда у вас получится нечто типа
<ваше_имя>.<имя_домена_провайдера>.ru. Например: cooler.irk.ru. Ведь,
хозяином домена второго уровня (irk.) является провайдер и он вправе
раздавать домены третьего уровня (своего) всем кому пожелает. Так что получить
имя домена <cooler> несложно. А вот если мы хотим получить домен второго
уровня? Ну... чтоб было. :))
Например, хотим www.domen.ru. Очевидно, нам по аналогии нужно
спросить хозяина домена верхнего уровня, т.е. <.ru>. Этим доменом
владеет компания РосНИИРОС
- она же и занимается регистрацией доменов второго уровня в России.
Причем, компания владеет такими популярными (черт знает с какой точки
зрения) доменами второго уровня как .COM.RU, .ORG.RU, .NET.RU, .EDU.RU,
.PP.RU, .AC.RU и тд. Поэтому, если вы захотите иметь домен типа dars.com.ru
- то, опять же - к владельцу домена <.com.ru> (которым опять
таки является РосНИИРОС).
Ага, но ведь неплохо бы для начала получить свой IP адресок.
Без него-то вообще, никак. А еще лучше - сетку адресов. Чтоб можно было
подсети делать. Или свои поддомены раздавать под этими адресами. Сетка
IP адресов получается там же - в www.ripn.net.
Кстати, за нее тоже деньги хорошие нужно платить.
Ладно, ок, у нас есть свой уникальный IP адрес. Теперь, мы хотим,
чтобы человек, набрав www.domen.ru попал к нам на сервер (вернее,
скажем, чтобы ему вернулся правильный IP адрес в ответ на это имя).
Естественно, нужно прописать имя domen (кстати, имя domen еще
свободно :)) в DNS серверах. Это произойдет после того, как
РосНИИРОС зарегистрирует это имя. Для этого, нужно сначала по крайней мере
в двух различных серверах DNS (первичном и вторичном, причем, эти сервера
должны находиться в разных IP сетях) прописать (пока, наперед,
так сказать) свое соответсвие IP адреса и имени. После этого послать
заявку и... все. Собственно, это и есть кратко описанный путь регистрации
своего домена второго уровня. Да, чуть не забыл: еще денежку надо заплатить
:))
Т.е. простыми словами говоря, ведущему зоны (.ru) сообщается,
где будет находиться зона .domen. И тогда он делегирует вашему DNS
серверу полномочия на преобразования имен с вашим доменом второго уровня.
Ну, например, кто-то полез спрашивать "а гдей-то у нас находится адрес
site.domen.ru?" А ему будет говориться - а вон, лезь-ка на сам .domen.ru
- он тебе все и расскажет.
Записи соответствий (имен и IP адресов) на серверах DNS имеют много
различных служебных полей. Одним из них является поле "обновление".
Оно указывает, через какое время нужно спросить вышестоящий (или другой)
DNS сервер о соответствии имени и IP конкретного адреса и обновить его
у себя.
О! Это я уже про кэш для DNS рассказываю. Ладно, пусть будет кэш. На
самом деле, кэш у провайдера играет двойственную роль. Во-первых, это конечно,
база данных каких-то записей соответствия имен, которые например, провайдер
раздал своим пользователям. Например, мой домен третьего уровня cooler
- он ведь только у провайдера хранится. А во-вторых, это собственно, кэш,
для того, чтобы каждый раз не заставлять юзера ждать поиска имени далекого
сервера, а сразу выдать ему готовое соответствие IP адресу. Конечно, там
ведется статистика наиболее частоупотребимых имен и при случае переполнения
DNS кэша, удаляться будут самые редкоупотребляемые. Известно, что DNS сервера
общаются между собой по протоколу UDP (user datagram protocol). В отличие
от TCP протокола, он не требует ответа на посланный пакет. (udp используется,
где надо небольшие порции информации передавать не очень часто, просто
кинул датаграмму и все, и не надо предварительно обмениваться пакетами
для установления tcp сессии). Посылая друг другу запросы по цепочке
для прямого или обратного преобразования имени, они в конце концов добираются
до сервера, который содержит запись о нем.
Например, кроме сервера .irk.ru никто больше не знает о существовании
домена третьего уровня "cooler". (Ну, еще правда могут знать вторичные
DNS сервера, которые может заводить даже сам пользователь для того, чтобы
каждый раз не лазить за именами в сеть). Таким образом, за домены уровней
от 3-го отвечают какие-то отдельные сервера. Ну про это я уже писал.
Но я вот к чему клоню. Представьте, что если один сервер отослал другому
запрос на расшифровку имени, а у того точно она (расшифровка) есть
и он должен был возвратить ее запрашиваемому серверу, но вот взял, да не
отресолвил его, а отослал этот запрос обратно, типа, разбирайся мол, сам.
А тот обратно ему ( "твои уровни - сам и разбирайся...") Таким образом,
возникает петля пересылок, называемая еще DNS storm (DNS шторм), которая
растет как снежный ком, потому как общаются DNS сервера по протоколу UDP,
который не предусматривает подтверждения на пакеты. И после того, как сервера
напосылавшись запросов друг другу и устав ждать ответа на них, начинают
слать еще и дополнительные запросы (типа - "ну ты там спишь, что ли?! -
давай, ресолви мне адрес!"), тут-то все и начинается! Любой канал грузится
по-черному.
После того, как сисадмины разберутся со своими серверами и кое-чего
там поправят, нужно еще немного ждать, пока пакеты не прекратят хождение
(ну много их, и в очереди они пока стоят!) и канал не разгрузится.
Короче, пока шторм не уляжется :)) Такая коллизия кстати, имела место в
действительности у одного суб-провайдера, который неправильно настроил
свой DNS сервер (хотя он должен был ресолвить свои имена сам, а он вместо
этого поставил forward на DNS сервер своего провайдера).
Мда... ну и напоследок: домен третьего уровня ваш провайдер просто
обязан вам его у себя зарегистрировать, да еще и бесплатно. Сразу же оговорюсь:
только если домен у провайдера подпадает под географическое название. Т.е.
например irk.ru - похож на "Иркутск", поэтому они зарубать такие
просьбы не должны. А уж домен irkutsk.ru и подавно должен вам пойти
навстречу... Это условие при регистрации доменов второго уровня такое,
и провайдер его прекрасно знает :))
Что характерно, что .com .org .net получить куда
проще, дешевле и быстрее, чем .ru
Продолжение еще будет...
Автор хочет выразить благодарность за помощь
to: Павел, Макс.
|