Яка роль записів NS на вершині домену DNS?


21
$ORIGIN example.com. ; not necessary, using this to self-document

$TTL 3600
@        IN     SOA   ns1.example.com. admin.example.com. (
                      1970010100 7200 1800 1209600 300)

@        IN     NS   ns1.example.com.
@        IN     NS   ns2.example.com.

@        IN     A    198.51.100.1
ns1      IN     A    198.51.100.2
ns2      IN     A    198.51.100.3

sub1     IN     NS   ns1.example.edu.

sub2     IN     NS   ns1.sub2
ns1.sub2 IN     A    203.0.113.1 ; inline glue record

Роль запису NS під вершиною домену добре зрозуміла; вони існують, щоб делегувати повноваження для субдомену іншому серверу імен. Приклади цього вище включають записи NS для sub1та sub2. Вони дозволяють серверу імен роздавати реферали для частин домену, для яких він не вважає себе авторитетними.

Призначення записів NS у вершині домену, ns1і ns2в цьому випадку Інтернет взагалі менш зрозумілий. Моє розуміння (яке може бути не цілісним) таке:

  1. Вони не використовуються для кешування DNS-серверів для визначення авторитетних серверів для домену. Це обробляється клеєм nameserver , який визначений на рівні реєстратора. Реєстратор ніколи не використовує цю інформацію для створення записів клею.
  2. Вони не використовуються для делегування повноважень на весь домен іншим серверам імен. Намагання зробити це з таким програмним забезпеченням, як ISC BIND, взагалі не призведе до "очікуваної" поведінки рефералів, оскільки сервер імен буде вважати себе авторитетним для зони.
  3. Вони не використовуються сервером імен для визначення того, чи повинен він повертати авторитетні відповіді ( AAнабір прапорів) чи ні; така поведінка визначається тим, чи програмне забезпечення вважається головним чи рабом зони. Більшість програмного забезпечення серверів імен цілком із задоволенням обслуговуватимуть вершини NS-записів, які не погоджуються з інформацією, що міститься у вищезазначених записах клею, що, в свою чергу, спричинить відомі веб-сайти перевірки DNS для створення попереджень для домену.

З цього приводу, що нам залишається? Чому ми визначаємо цю інформацію, якщо вона, схоже, не споживається кешуючи DNS-сервери в Інтернеті взагалі?

Відповіді:


21

Підпорядкована ідентифікація

NS-записи рівня Apex використовуються головним сервером для ідентифікації своїх підлеглих. Коли дані про авторитетний сервер імен змінюються, він буде рекламувати це за допомогою DNS NOTIFYповідомлень ( RFC 1996 ) усім своїм колегам у цьому списку. Ці сервери, у свою чергу, передзвонять із запитом на SOAзапис (який містить порядковий номер) і приймуть рішення про те, чи потрібно знімати новішу копію цієї зони.

  • Ці повідомлення можна надсилати серверам, які не вказані в NSрозділі, але для цього потрібні специфічні для сервера директиви щодо конфігурації (наприклад, also-notifyдиректива ISC BIND ). Записи вершин NS складаються з основного списку серверів, про які слід повідомляти за конфігурацією за замовчуванням.
  • Варто відзначити, що вторинні сервери також надсилатимуть повідомлення NOTIFY один одному на основі цих NSзаписів, що зазвичай призводить до відмов у реєстрації. Це можна відключити, доручивши серверам надсилати сповіщення лише для зон, для яких вони є майстрами (BIND:) notify master;, або пропускати NSсповіщення на основі повністю на користь сповіщень, визначених у конфігурації. (BIND: notify explicit;)

Авторитетне визначення

Питання вище містило помилковість:

Вони не використовуються для кешування DNS-серверів для визначення авторитетних серверів для домену. Це обробляється клеєм nameserver, який визначений на рівні реєстратора. Реєстратор ніколи не використовує цю інформацію для створення записів клею.

До цього легко дійти висновку, але не точного. Дані NSзаписів та клейових даних (такі, які визначені у вашому обліковому записі реєстратора) не є авторитетними. Цілком очевидно, що їх не можна вважати "більш авторитетними", ніж дані, що зберігаються на серверах, на які передано повноваження. Це підкреслюється тим, що для рефералів не встановлено aaпрапор (Авторитетний відповідь).

Проілюструвати:

$ dig @a.gtld-servers.net +norecurse +nocmd example.com. NS
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14021
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS

;; AUTHORITY SECTION:
example.com.            172800  IN      NS      a.iana-servers.net.
example.com.            172800  IN      NS      b.iana-servers.net.

;; ADDITIONAL SECTION:
a.iana-servers.net.     172800  IN      A       199.43.135.53
a.iana-servers.net.     172800  IN      AAAA    2001:500:8f::53
b.iana-servers.net.     172800  IN      A       199.43.133.53
b.iana-servers.net.     172800  IN      AAAA    2001:500:8d::53

Зверніть увагу на відсутність aaпрапорів для вищевказаної відповіді. Сам направлення не є авторитетним. З іншого боку, дані на сервері, на який посилаються, є достовірними.

$ dig @a.iana-servers.net +norecurse +nocmd example.com. NS
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2349
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS

;; ANSWER SECTION:
example.com.            86400   IN      NS      a.iana-servers.net.
example.com.            86400   IN      NS      b.iana-servers.net.

Зважаючи на це, ці відносини можуть стати дуже заплутаними, оскільки неможливо дізнатися про авторитетні версії цих NSзаписів без не авторитетних NSзаписів, визначених у батьківській стороні реферала. Що станеться, якщо вони не згодні?

  • Коротка відповідь - «непослідовна поведінка».
  • Довгий відповідь , що неймсервери спочатку недопалка все геть напрямок (і клей) на порожньому кеші, але ті NS, Aі AAAAзаписи можуть бути замінені в кінці кінців , коли вони оновлюється. Оновлення відбуваються, коли термін TTL на цих тимчасових записах закінчується або коли хтось явно вимагає відповіді на ці записи.
    • Aі AAAAзаписи даних про зону (наприклад, comсервери імен, що визначають клей для даних поза comзоною, як-от example.net), безумовно, будуть оновлені, оскільки це добре зрозуміла концепція, що сервер імен не повинен вважатися авторитетним джерелом такої інформації . (RFC 2181)
    • Коли значення NSзаписів різняться між батьківською та дочірньою сторонами рефералу (наприклад, сервери імен, що вводяться в панель управління реєстратора, відрізняються від NSзаписів, які живуть на тих самих серверах), досвід поведінки буде невідповідним, аж до дочірнього NSзаписи повністю ігноруються. Це відбувається тому, що поведінка недостатньо визначена стандартами, і реалізація різниться між різними рекурсивними реалізаціями сервера. Іншими словами, послідовного поведінки в Інтернеті можна очікувати лише в тому випадку, якщо визначення сервера імен для домену узгоджуються між батьківською та дочірньою сторонами рефералу .

Довгий і короткий факт полягає в тому, що рекурсивні DNS-сервери в Інтернеті відскакують між пунктами призначення, якщо записи, визначені на батьківській стороні реферала, не узгоджуються з авторитетними версіями цих записів. Спочатку переважнішими будуть дані, присутні у рефералі, лише замінені авторитетними визначеннями. Оскільки кеші постійно відновлюються з нуля в Інтернеті, Інтернет не може зупинитися на єдиній версії реальності з цією конфігурацією. Якщо авторитетні записи роблять щось незаконне згідно стандартів, наприклад, вказівка NSзаписів на псевдоніми, визначені аCNAME, це стає ще складніше усунути; домен буде чергуватися між робочим і зламаним для програмного забезпечення, яке відхиляє порушення. (тобто ISC BIND / названий)

RFC 2181 § 5.4.1 надає таблицю ранжування для достовірності цих даних і чітко пояснює, що дані кешу, пов'язані з рефералами та клеєм, не можуть бути повернені як відповідь на явний запит на записи, на які вони посилаються.

5.4.1. Ranking data

   When considering whether to accept an RRSet in a reply, or retain an
   RRSet already in its cache instead, a server should consider the
   relative likely trustworthiness of the various data.  An
   authoritative answer from a reply should replace cached data that had
   been obtained from additional information in an earlier reply.
   However additional information from a reply will be ignored if the
   cache contains data from an authoritative answer or a zone file.

   The accuracy of data available is assumed from its source.
   Trustworthiness shall be, in order from most to least:

     + Data from a primary zone file, other than glue data,
     + Data from a zone transfer, other than glue,
     + The authoritative data included in the answer section of an
       authoritative reply.
     + Data from the authority section of an authoritative answer,
     + Glue from a primary zone, or glue from a zone transfer,
     + Data from the answer section of a non-authoritative answer, and
       non-authoritative data from the answer section of authoritative
       answers,
     + Additional information from an authoritative answer,
       Data from the authority section of a non-authoritative answer,
       Additional information from non-authoritative answers.

   <snip>

   Unauthenticated RRs received and cached from the least trustworthy of
   those groupings, that is data from the additional data section, and
   data from the authority section of a non-authoritative answer, should
   not be cached in such a way that they would ever be returned as
   answers to a received query.  They may be returned as additional
   information where appropriate.  Ignoring this would allow the
   trustworthiness of relatively untrustworthy data to be increased
   without cause or excuse.

Добре написана відповідь! Я не згоден з "довгою і короткою" вашої відповіді. Основне використання DNS в Інтернеті - це отримання IP хоста, таким чином, запити "A". Розв'язувачі DNS завжди прийматимуть та замінятимуть реферал для отримання авторитетного відповіді "А". І він "завжди" буде кешувати лише запис рефералів. Єдиний раз, коли записи будуть замінені, - коли надходить явний запит на "example.com IN NS". Тоді резолютор запитає сервер у місці переходу. І ця відповідь AR замінить кешований відгук реферала (лише для TTL цього запису).
Wasted_Coder

Я можу помилятися відповідно до відповіді @BillThor. Я ґрунтував свої міркування на тому, що якщо сервер DNS оновить, він записує кешований запис NS, наприклад example.com, з авторитетної відповіді на NS (зараз минув). Це розірве ланцюг DNS. Оскільки він тепер застряг у циклі, де, поки (старий) NS-сервер продовжує відповідати, він не враховуватиме зміни на вищевказаному DNS-сервері (реєстраторі). Як і у випадку, якщо ви переміщуєте сервери DNS, але не оновлюєте або не приймаєте старий DNS-сервер в автономному режимі. Або ця "проблема" взагалі має місце сьогодні?
Wasted_Coder

@ Побачив, що я також не погоджуюся з вашим першим коментарем через багато припущень. Оскільки поведінка не чітко викладена стандартами, вона фактично є конкретною реалізацією. Цій презентації 6 років (початок із слайда № 11), але все ж з’являється крапка; Налаштування сервера батьків і дітей не змінюватимуться. Крім того, ви можете розраховувати лише на вимоги RFC 2181.
Ендрю Б

Я думаю, що в мене викликає занепокоєння питання, якщо кешовані записи NS в кешованих системах досягають TTL = 0, скажімо, для example.com. І для цього потрібно знайти новий запис хосту, який ще не є кешованим, скажімо для new.example.com. Зараз йому потрібні NS-сервери, наприклад.com, і, оскільки термін дії кешованих копій закінчився, було б погано намагатися натиснути на "термін дії" NS-сервера, щоб побачити, чи він все ще відповідає. ДОГОВІРЕ перевірити з наступним предком, таким чином НС для напряму. Це означає, що записи NS предків переважали б більшість разів (поки запит NS не буде оброблений).
Wasted_Coder

@Wasted Почніть зі слайду №11 і відзначте три шаблони: дочірнє орієнтоване не липке ( PPPCCCPPPCCC...), дочірнє орієнтоване липке ( PPPCCCCCC...) та батьківське липке ( PPPPPP...). Дитяча орієнтована неліпкість на сьогоднішній день є найбільш поширеною, а дитяча орієнтована липкість насправді є більш поширеною, ніж батьківська липкість. Клієнти дійсно відскакують між двома версіями реальності, якщо дані НС про дитину та батька не узгоджуються, якщо програмне забезпечення для розв'язувача не є батьківським, а це найменш вірогідний результат.
Андрій Б

3

NS записів делегованої зони забезпечують повноту визначення домену. Самі сервери NS покладаються на файл зони. Не очікується, що вони намагатимуться знайти себе, роблячи рекурсивний запит від кореневих серверів. Записи NS у файлі зон забезпечують ряд інших функцій ..

Сервери кешування можуть оновити список серверів імен, запитуючи сервер імен із кешу. Поки сервер кешування знає адресу сервера імен, він буде використовувати це, а не рекурсивно шукати відповідний запис NS.

Під час переміщення серверів імен важливо оновити старі сервери імен, а також нові сервери імен. Це дозволить уникнути перебоїв або невідповідностей, які призведуть до виходу із синхронізації двох визначень зони. Оновлені записи згодом будуть оновлені будь-якими серверами, які кешували записи NS. Це замінить кешований список серверів імен.

Записи NS також допомагають підтвердити правильність конфігурації DNS. Програмне забезпечення для перевірки часто перевіряє, що визначення сервера імен делегуючої зони відповідають таким, які надає зона. Ця перевірка може виконуватися на всіх серверах імен. Будь-які невідповідності можуть вказувати на неправильну конфігурацію.

Наявність записів NS дозволяє відключати (локальні) зони. Це можуть бути субдомени зареєстрованого домену або абсолютно новий домен (не рекомендується через зміни TLD). Хости, які використовують сервери імен як їх сервер імен, зможуть знайти зони, недоступні, повторюючись з кореневих серверів. Інші сервери імен можуть бути налаштовані для пошуку серверів імен для локальних зон.

У випадку розділеного DNS (внутрішнього / зовнішнього) може бути бажаним мати інший набір серверів DNS. У цьому випадку список NS (і, ймовірно, інші дані) буде іншим, і записи NS в файлах зон будуть містити відповідний список серверів імен.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.