Як працює сервер імен DNS?


14

У нас є два DNS-сервери, перелічені в нашій записи NS. Минулої ночі один з наших DNS-серверів зійшов. Як і очікувалося, деякі DNS-сервери не вирішували наших імен хостів. Я припускав, що це буде тимчасово і почне працювати, як тільки закінчиться термін TTL наших записів NS (1 година).

Через годину + пізніше я все ще отримував тайм-аути DNS з настільних комп'ютерів, які використовували сервери Earthlink, Verizon і OpenDNS. Я перевірив, чи відповідає інший сервер DNS:

dig @ns2.example.com www.example.com +short

Це спрацювало.

Мої запитання:

  1. Хтось має відповідь, чому інші DNS-сервери не вдаряли на наш інший DNS-сервер навіть після закінчення терміну дії TTL?
  2. Чи віддають перевагу серверам DNS головний DNS-сервер домену (із SOAзапису)?
  3. Чи існує який-небудь алгоритм, який використовується для вибору сервера імен з наявних записів NS? Я припускаю, що це конкретна реалізація, але, можливо, тут є деякі стандарти, які застосовуються.

TTL не має нічого спільного. Оскільки записи не були змінені, це не має відповідного ефекту.
Девід Шварц

Ах, я це бачу зараз. До.
Белмін Фернандес

Відповіді:


17

Це невдале роздратування. Кілька серверів DNS, як передбачається, підвищують надійність, але на практиці це часто має зворотний ефект.

Проблема полягає в тому, що клієнт лише так довго чекає відповіді, а сервер чекає приблизно стільки ж часу. Скажімо, у вас два DNS-сервери, A і B. Скажіть, A працює, а B - не вдалося. Це відбувається:

  1. Клієнт підключається до сервера імен Z і запитує у нього інформацію. Z вибирає B і надсилає запит.

  2. Клієнт тайм-аут, оскільки сервер імен Z не відповів.

  3. Клієнт намагається сервер імен Y. Y вибирає B і надсилає запит.

  4. Сервер імен Z закінчується та пробує А. Він отримує правильну відповідь, але клієнт більше не чекає.

  5. Клієнт тайм-аут, оскільки сервер імен Y не відповів.

  6. Клієнт здається, оскільки обидва його сервера імен не відповідають.

  7. Сервер імен Y вичерпується і намагається А. Він отримує правильну відповідь, але клієнт більше не чекає.

І немає хорошого рішення. Чим довше ви чекаєте, чи відповість сервер імен, тим довше потрібно чекати, оскільки сервер імен, якого ви чекаєте, сам чекає довше. Можливо, проблема полягала в тому, що Y і Z не здавались на B досить швидко.

По суті, якщо будь-який з ваших серверів імен відсутній, деякі клієнти через невдалу удачу вичерпаються, оскільки вони спробували лише поганих.

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


Я бачу, що ти маєш на увазі. Еек. Отже, сервер імен клієнта ( Z) не буде кешувати, який сервер імен останній використовував, що працював?
Белмін Фернандес

1
Деякі сервери імен роблять це, а іноді це допомагає. Часто це залежить від того, яким чином сервер імен не вдався. Ви повинні пам’ятати, що це все поверх UDP, тому невдача відповіді (навіть після повторної передачі чи двох) не підтверджує, що з сервером імен нічого поганого.
Девід Шварц

Я читав у своїй копії DNS та BIND (Paul Albitz та Cricket Lui, O'Rielly p278), що сервери Bind 8.2.3 вибирають сервер, який швидше реагує зі свого списку пересилачів, а це означає, що якщо сервер у списку виходить з ладу, це майже автоматично випадає. Bind 9 ще не реалізує це, він запитує серверів пересилання в порядку списку. Хтось знає, чи змінилося це?
Jaydee

Для уточнення, для тих, хто не знає налаштувань DNS (мені знадобилося певний час, щоб зрозуміти це), сервери імен DNS Z і Y у цьому прикладі, швидше за все, є рекурсивними серверами імен, що базуються в мережі клієнта, наприклад, DNS-сервери, які надає Інтернет-провайдер. своїм клієнтам через DHCP. І проблема виникає, коли ці сервери мають більш довге значення тайм-ауту, ніж клієнтська DNS-розв’язник (наприклад, операційна система пристрою.)
Jordan Rieger,

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