Передача зоны DNS

Поделись знанием:
(перенаправлено с «AXFR»)
Перейти к: навигация, поиск

Передача зоны DNS, AXFR — вид транзакции DNS. Является одним из механизмов репликации баз DNS между серверами. Существует два вида передачи зоны: полная (AXFRRFC 1035) и инкрементальная (IXFRRFC 1995). Имела очень широкое распространение, однако в современных серверах DNS вытесняется другими механизмами репликации.





Принцип действия

Передача зоны работает поверх протокола TCP и является клиент-серверной транзакцией. В ней принимают участие клиент, или англ. slave, запрашивающий передачу части данных из базы, и сервер, или англ. master, предоставляющий эти данные. В некоторых источниках они называются соответственно вторичным и первичным серверами. Передаваемая часть данных — зона DNS.

Эта транзакция состоит из преамбулы и собственно передачи данных. В ходе преамбулы происходит просмотр записи SOA (авторитетного источника) в начале зоны (англ. zone apex) — верхнем узле пространства имён этой зоны. Поля этой записи SOA, в частности, серийный номер, определяют, нужна ли передача зоны вообще. Клиент сравнивает серийный номер полученной записи SOA и уже имеющейся. Если номер новой записи выше, значит содержимое зоны изменилось в какой-либо степени, и клиент запрашивает фактическую передачу зоны. Если же серийные номера одинаковы, то содержимое зоны считается неизменным, и клиент может продолжать использовать уже имеющуюся копию данных.

В начале фактической передачи данных клиент отправляет запрос (код операции 0) специального типа AXFR (QTYPE AXFR = 252) через соединение TCP. Сервер в ответ последовательно отправляет сообщения со всеми ресурсными записями зоны. Первое сообщение содержит запись SOA начала зоны. Остальные сообщения не упорядочиваются. Сигналом конца передачи является повторная отправка записи SOA.

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

Выше изложены принципы полной передачи. Инкрементальная передача зоны отличается следующим:

  • Вместо запроса типа AXFR выполняется IXFR (код 251).
  • Клиент отправляет имеющуюся у него запись SOA в сообщении IXFR, уведомляя сервер о текущей, по его сведениям, версии зоны.
  • Сервер может ответить полной передачей способом AXFR либо инкрементальной передачей. В последнем случае будет передан список промежуточных изменений данных зоны, упорядоченный по серийным номерам зоны. Изменения будут представлены двумя списками: удалённых и добавленных записей. Изменение содержимого записи оформляется как удаление и вставка.

Передачу зоны инициирует только клиент. Сервер может отправлять сообщение NOTIFY известным ему клиентам, когда в зоне произошли изменения, однако планирование передачи находится целиком в ведении клиента. Передача зоны может быть запущена клиентом, если его базы данных пусты, и далее по расписанию, определяемому на основе полей refresh, retry и expire в записи SOA начала зоны.

Ограничения

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

Функциональные проблемы

Изменение серийных номеров

Преамбула передачи зоны опирается только на серийный номер, чтобы определить, изменились ли данные зоны, и нужна ли фактическая передача. В некоторых серверах DNS серийные номера SOA должны правиться администраторами вручную. Каждое изменение базы требует двух правок: собственно записи и серийного номера зоны. Это процесс трудоёмкий и ненадёжный; администратор может забыть сменить серийный номер либо сменить его неправильно (например, уменьшить или чрезмерно увеличить).

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

Кроме того, устарела сама парадигма репликации базы данных, основанная на проверке серийных номеров, когда центральный DNS-сервер хранит мастер-копию, а остальные серверы лишь её дублируют. Современные серверы со сложными бэк-эндами, такими как SQL и Active Directory, позволяют администраторам править несколько участков одновременно (системы с репликацией multi-master), где нижележащая база данных самостоятельно обрабатывает репликацию на другие серверы. Такая модель не соответствует старой парадигме единой централизованной монотонно возрастающей записи изменений, а значит в общем виде не совместима с передачей зоны. Современные серверы DNS со сложными бэк-эндами на базах данных зачастую создают «мнимый» серийный номер, симулируя наличие централизованного источника обновлений, однако это по меньшей мере несовершенство.

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

Сравнение серийных номеров

Сравнение серийных номеров предполагает использование арифметики серийных номеров (например, во избежание проблемы 2000 года) в соответствии с RFC 1982. Однако это не было чётко зафиксировано в RFC 1034, и в результате клиенты сравнивают номера в преамбуле по-разному. Одни лишь удостоверяются, что полученный номер отличается от имеющегося или ненулевой. Другие проверяют, что полученный номер находится в заданном интервале от имеющегося. Третьи кроме этого также делают проверку на ноль.

Множественные ресурсные записи

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

  • выполняли «обработку дополнительных секций» и включали в ответ связанные (англ. glue) ресурсные записи, такие как NS, SRV или MX;
  • группировали записи по доменному имени и отправляли, если позволял размер пакета, одним сообщением.

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

Раскрытие данных

Информация, содержащаяся в зоне DNS может считаться конфиденциальной с точки зрения операционной безопасности. Например, ресурсные записи могут содержать сведения о роли серверов или отпечатки ключей SSH (RFC 4255).

В [www.heise-online.co.uk/security/Anti-spammer-fined-for-accessing-DNS-records-of-private-network--/news/102013 2008 г.] суд Северной Дакоты, США, постановил, что несанкционированная передача приватной зоны, инициированная посторонним, является нарушением закона штата.

См. также

Документы RFC по теме

  • RFC 1034 Domain Names — Concepts and Facilities. (определение AXFR)
  • RFC 1995 Incremental Zone Transfer in DNS
  • RFC 1996 A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)
  • [tools.ietf.org/html/draft-ietf-dnsext-axfr-clarify draft-ietf-dnsext-axfr-clarify DNS Zone Transfer Protocol (AXFR)] (рабочий документ)

Напишите отзыв о статье "Передача зоны DNS"

Ссылки

  • [cr.yp.to/djbdns/axfr-notes.html How the AXFR protocol works]. Internet publication, D. J. Bernstein. Проверено 15 февраля 2005. [www.webcitation.org/6DxhzW1Gs Архивировано из первоисточника 26 января 2013].
  • [technet.microsoft.com/en-us/library/cc781340(WS.10).aspx Understanding zones and zone transfer]. Microsoft Windows Server 2003 product documentation. Проверено 27 ноября 2011. [www.webcitation.org/6Dxi003Yg Архивировано из первоисточника 26 января 2013].
  • [technet.microsoft.com/en-us/library/cc759550(WS.10).aspx How DNS Support for Active Directory Works]. Microsoft Windows Server 2003 product documentation. Проверено 27 ноября 2011. [www.webcitation.org/6Dxi0efXK Архивировано из первоисточника 26 января 2013].
  • [technet.microsoft.com/en-us/library/cc779655(WS.10).aspx DNS zone replication in Active Directory]. Microsoft Windows Server 2003 product documentation. Проверено 27 ноября 2011. [www.webcitation.org/6Dxi1FUEY Архивировано из первоисточника 26 января 2013].


Отрывок, характеризующий Передача зоны DNS

– Что же, ваше сиятельство, или мы пропали? – спросил он опять.
Князь Андрей, не отвечая, достал записную книжку и, приподняв колено, стал писать карандашом на вырванном листе. Он писал сестре:
«Смоленск сдают, – писал он, – Лысые Горы будут заняты неприятелем через неделю. Уезжайте сейчас в Москву. Отвечай мне тотчас, когда вы выедете, прислав нарочного в Усвяж».
Написав и передав листок Алпатычу, он на словах передал ему, как распорядиться отъездом князя, княжны и сына с учителем и как и куда ответить ему тотчас же. Еще не успел он окончить эти приказания, как верховой штабный начальник, сопутствуемый свитой, подскакал к нему.
– Вы полковник? – кричал штабный начальник, с немецким акцентом, знакомым князю Андрею голосом. – В вашем присутствии зажигают дома, а вы стоите? Что это значит такое? Вы ответите, – кричал Берг, который был теперь помощником начальника штаба левого фланга пехотных войск первой армии, – место весьма приятное и на виду, как говорил Берг.
Князь Андрей посмотрел на него и, не отвечая, продолжал, обращаясь к Алпатычу:
– Так скажи, что до десятого числа жду ответа, а ежели десятого не получу известия, что все уехали, я сам должен буду все бросить и ехать в Лысые Горы.
– Я, князь, только потому говорю, – сказал Берг, узнав князя Андрея, – что я должен исполнять приказания, потому что я всегда точно исполняю… Вы меня, пожалуйста, извините, – в чем то оправдывался Берг.
Что то затрещало в огне. Огонь притих на мгновенье; черные клубы дыма повалили из под крыши. Еще страшно затрещало что то в огне, и завалилось что то огромное.
– Урруру! – вторя завалившемуся потолку амбара, из которого несло запахом лепешек от сгоревшего хлеба, заревела толпа. Пламя вспыхнуло и осветило оживленно радостные и измученные лица людей, стоявших вокруг пожара.
Человек во фризовой шинели, подняв кверху руку, кричал:
– Важно! пошла драть! Ребята, важно!..
– Это сам хозяин, – послышались голоса.
– Так, так, – сказал князь Андрей, обращаясь к Алпатычу, – все передай, как я тебе говорил. – И, ни слова не отвечая Бергу, замолкшему подле него, тронул лошадь и поехал в переулок.


От Смоленска войска продолжали отступать. Неприятель шел вслед за ними. 10 го августа полк, которым командовал князь Андрей, проходил по большой дороге, мимо проспекта, ведущего в Лысые Горы. Жара и засуха стояли более трех недель. Каждый день по небу ходили курчавые облака, изредка заслоняя солнце; но к вечеру опять расчищало, и солнце садилось в буровато красную мглу. Только сильная роса ночью освежала землю. Остававшиеся на корню хлеба сгорали и высыпались. Болота пересохли. Скотина ревела от голода, не находя корма по сожженным солнцем лугам. Только по ночам и в лесах пока еще держалась роса, была прохлада. Но по дороге, по большой дороге, по которой шли войска, даже и ночью, даже и по лесам, не было этой прохлады. Роса не заметна была на песочной пыли дороги, встолченной больше чем на четверть аршина. Как только рассветало, начиналось движение. Обозы, артиллерия беззвучно шли по ступицу, а пехота по щиколку в мягкой, душной, не остывшей за ночь, жаркой пыли. Одна часть этой песочной пыли месилась ногами и колесами, другая поднималась и стояла облаком над войском, влипая в глаза, в волоса, в уши, в ноздри и, главное, в легкие людям и животным, двигавшимся по этой дороге. Чем выше поднималось солнце, тем выше поднималось облако пыли, и сквозь эту тонкую, жаркую пыль на солнце, не закрытое облаками, можно было смотреть простым глазом. Солнце представлялось большим багровым шаром. Ветра не было, и люди задыхались в этой неподвижной атмосфере. Люди шли, обвязавши носы и рты платками. Приходя к деревне, все бросалось к колодцам. Дрались за воду и выпивали ее до грязи.
Князь Андрей командовал полком, и устройство полка, благосостояние его людей, необходимость получения и отдачи приказаний занимали его. Пожар Смоленска и оставление его были эпохой для князя Андрея. Новое чувство озлобления против врага заставляло его забывать свое горе. Он весь был предан делам своего полка, он был заботлив о своих людях и офицерах и ласков с ними. В полку его называли наш князь, им гордились и его любили. Но добр и кроток он был только с своими полковыми, с Тимохиным и т. п., с людьми совершенно новыми и в чужой среде, с людьми, которые не могли знать и понимать его прошедшего; но как только он сталкивался с кем нибудь из своих прежних, из штабных, он тотчас опять ощетинивался; делался злобен, насмешлив и презрителен. Все, что связывало его воспоминание с прошедшим, отталкивало его, и потому он старался в отношениях этого прежнего мира только не быть несправедливым и исполнять свой долг.
Правда, все в темном, мрачном свете представлялось князю Андрею – особенно после того, как оставили Смоленск (который, по его понятиям, можно и должно было защищать) 6 го августа, и после того, как отец, больной, должен был бежать в Москву и бросить на расхищение столь любимые, обстроенные и им населенные Лысые Горы; но, несмотря на то, благодаря полку князь Андрей мог думать о другом, совершенно независимом от общих вопросов предмете – о своем полку. 10 го августа колонна, в которой был его полк, поравнялась с Лысыми Горами. Князь Андрей два дня тому назад получил известие, что его отец, сын и сестра уехали в Москву. Хотя князю Андрею и нечего было делать в Лысых Горах, он, с свойственным ему желанием растравить свое горе, решил, что он должен заехать в Лысые Горы.
Он велел оседлать себе лошадь и с перехода поехал верхом в отцовскую деревню, в которой он родился и провел свое детство. Проезжая мимо пруда, на котором всегда десятки баб, переговариваясь, били вальками и полоскали свое белье, князь Андрей заметил, что на пруде никого не было, и оторванный плотик, до половины залитый водой, боком плавал посредине пруда. Князь Андрей подъехал к сторожке. У каменных ворот въезда никого не было, и дверь была отперта. Дорожки сада уже заросли, и телята и лошади ходили по английскому парку. Князь Андрей подъехал к оранжерее; стекла были разбиты, и деревья в кадках некоторые повалены, некоторые засохли. Он окликнул Тараса садовника. Никто не откликнулся. Обогнув оранжерею на выставку, он увидал, что тесовый резной забор весь изломан и фрукты сливы обдерганы с ветками. Старый мужик (князь Андрей видал его у ворот в детстве) сидел и плел лапоть на зеленой скамеечке.
Он был глух и не слыхал подъезда князя Андрея. Он сидел на лавке, на которой любил сиживать старый князь, и около него было развешено лычко на сучках обломанной и засохшей магнолии.
Князь Андрей подъехал к дому. Несколько лип в старом саду были срублены, одна пегая с жеребенком лошадь ходила перед самым домом между розанами. Дом был заколочен ставнями. Одно окно внизу было открыто. Дворовый мальчик, увидав князя Андрея, вбежал в дом.
Алпатыч, услав семью, один оставался в Лысых Горах; он сидел дома и читал Жития. Узнав о приезде князя Андрея, он, с очками на носу, застегиваясь, вышел из дома, поспешно подошел к князю и, ничего не говоря, заплакал, целуя князя Андрея в коленку.
Потом он отвернулся с сердцем на свою слабость и стал докладывать ему о положении дел. Все ценное и дорогое было отвезено в Богучарово. Хлеб, до ста четвертей, тоже был вывезен; сено и яровой, необыкновенный, как говорил Алпатыч, урожай нынешнего года зеленым взят и скошен – войсками. Мужики разорены, некоторый ушли тоже в Богучарово, малая часть остается.
Князь Андрей, не дослушав его, спросил, когда уехали отец и сестра, разумея, когда уехали в Москву. Алпатыч отвечал, полагая, что спрашивают об отъезде в Богучарово, что уехали седьмого, и опять распространился о долах хозяйства, спрашивая распоряжении.
– Прикажете ли отпускать под расписку командам овес? У нас еще шестьсот четвертей осталось, – спрашивал Алпатыч.
«Что отвечать ему? – думал князь Андрей, глядя на лоснеющуюся на солнце плешивую голову старика и в выражении лица его читая сознание того, что он сам понимает несвоевременность этих вопросов, но спрашивает только так, чтобы заглушить и свое горе.