Чому наші записи DNS не поширюються в Інтернет?


22

Ми запускаємо сервери імен для нашого домену в нашій мережі. Ми використовуємо прив’язувати / називати. Давайте може зателефонувати в домен example.com . Одне, що я помітив нещодавно, коли заходжу на такий веб-сайт, як http://network-tools.com, і запускаю запити за URL-адресами, визначеними на наших серверах імен, я моментально бачу зміни.

Наприклад, якщо я додаю запис на наш DNS-сервер для url funny.example.com, а потім шукаю URL-адресу на http://network-tools.com , я одразу бачу відповідний зовнішній статичний IP- код .

Це говорить про те, що будь-які запити DNS, пов'язані з example.com , щоразу надходять прямо на наші DNS-сервери.

Мої підозри були підтверджені на початку тижня, коли наші сервери DNS знизилися протягом дуже короткого періоду. І за цей період часу, якщо я використовував http://network-tools.com для запиту example.com або будь-якого з його піддоменів, я отримав би нульові результати. Очевидно, це тому, що сервери DNS не працювали і не вдалося дістатися.

Тож це підводить мене до мого питання. Я вважав, що зміни на наших серверах DNS повинні пропонувати в Інтернеті інші DNS-сервери. Таким чином, якщо наш DNS тимчасово знижується, інші сервери в Інтернеті все ще знають, на що вказує IP-адреса example.com .

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

Де я повинен почати розслідування, чому зміни не вносять їх там? Я бачу на нашому брандмауері, що порт 53 трафіку належним чином перетворює його на наші DNS-сервери.

ОНОВЛЕННЯ

  1. Я знаю, що ви, хлопці, говорите, що неможливо опублікувати ваші налаштування DNS миттєво, але все, що я знаю, це таке: якщо я внесу зміни DNS на наші DNS-сервери та негайно перевірте це на http: // network-tools. ком , я бачу зміни негайно.

  2. Якщо я вимкну наші сервери DNS і потім спробую перевірити будь-яку URL-адресу за допомогою http://network-tools.com , сайт не може знайти жодну з URL-адрес. Але якщо я поверну DNS-сервери в Інтернет, раптом http://network-tools.com знову може знайти URL-адреси ... Це говорить про те, що сервери НЕ кешують наші настройки DNS. Я помиляюся? Також наші налаштування TTL наразі становлять 900 (15 хвилин), а наші DNS-сервери працюють вже більше року. Отже, не схожі на DNS-сервери в Інтернеті ще не мали можливості кешувати його. Чи причина серверів не кешує налаштування, оскільки TTL на даний момент настільки низький? Це щось має сенс, якщо це причина.


7
Оскільки jokerville.com - це справжнє зареєстроване доменне ім'я, якщо це фактично ваш домен, будь ласка, використовуйте example.comзамість цього - це офіційно зарезервовано для цієї мети.
mattdm

9
Причина того, що network-tools.com негайно бачить зміни, полягає в тому, що це мережевий інструмент, і ДЕЛІБЕРАТЕЛЬНО не кешує результати. Це інструмент для перегляду ваших серверів імен, а не звичайний клієнт DNS, тому він підкоряється різним правилам.
Майкл Коне

Відповіді:


42

Так, ви неправильно розумієте, як працює DNS. Я збираюся тут зробити деякий акцент, але, будь ласка, не ображайтесь, як ніхто не призначений.

DNS ЗАПИСИ НЕ ПРОДАЖАЮТЬСЯ. ВІДХОДЖЕНІ.

Коли це сказано, ось спрощене пояснення того, що відбувається:

  1. Ви створюєте новий DNS-запис (A, CNAME тощо)

  2. Віддалений користувач (більш конкретно процес \ додаток, запущений користувачем) намагається отримати доступ до послуги, доступ до якої здійснюється через цю запис DNS (веб-браузер, який намагається отримати доступ до веб-сайту, який працює, наприклад, на funny.example.com)

  3. Користувач DNS-клієнт надсилає запит DNS на його DNS-сервер, потім DNS-сервер знаходить ваші сервери імен (як правило, через низку рекурсивних запитів DNS) і запитує їх про інформацію щодо funny.example.com

  4. Ваші сервери імен відповідають на відповіді

  5. Потім сервер DNS користувачів надсилає цю інформацію користувачеві (конкретніше, користувачеві DNS-клієнтові розв’язувача), який, в свою чергу, повертає інформацію в процес \ додаток. Ця інформація постачається разом з тим, що називається TTL (Time To Live), який повідомляє клієнтові DNS-розв'язувачу, як довго ця інформація може зберігатися в кеш-пам'яті DNS (в пам'яті) і скільки часу інформація може вважатися поточною та точною

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

Отже, довге і коротке це:

Ваші записи DNS не поширюються. Жоден інший сервер DNS не має копії ваших записів або зон DNS. Клієнт або сервер DNS може кешувати інформацію про ваші записи DNS або зони (на основі їх запитів DNS ваших записів і зон DNS) у свій кеш DNS. Ця інформація тимчасово кешована і буде видалена з кешу DNS, коли термін дії TTL закінчиться.

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


Хороше пояснення, і я можу додати приклад протоколу, де є поширення (на відміну від DNS): BGP.
борцмейєр

11

це дуже допоможе, якби ви сказали нам своє фактичне доменне ім’я, то ми можемо відповісти на ваше запитання з посиланням на фактичну настройку та вказати на будь-які помилки.

Я схильний довіряти http://dns.squish.net/ для швидкого діагностування проблем з DNS. Це точно скаже вам, де лежать ваші проблеми після того, як ви внесли зміни - в основному, якщо ваша делегація з верхніх течій правильна, і ваші 2-3 сервери імен дають однаковий відповідь, а хтось не бачить нову запис, їм доведеться просто почекати їхньої локальної мережі, щоб побачити зміни. Якщо ця перевірка каже, що один із ваших серверів не дає такої ж відповіді, як інші, вам потрібно виправити цю проблему.

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

Я б радив, що перед будь-якими істотними змінами DNS ви зменшите свій TTL до 600 (10 хвилин), щоб заохотити кеші в Інтернеті не довго триматися на старих записах. Але деякі кеші проігнорують це, або припустимо 1 день, а то й 1 тиждень.

Невпинна відповідь на невдале запитання, сподіваюся, що в цьому було щось корисне.


1
+1. Щоб було зрозуміло, зміна вплине лише на тих клієнтів DNS, які вже мають інформацію в своєму кеші, для яких термін дії TTL не закінчився. Будь-які нові запити, для яких у кеші немає даних, будуть вирішені негайно.
joeqwerty

fyi: мертве посилання - squish.net/dnscheck
Аарон Ісав

8

Так, давня приказка: "Зміни DNS можуть зайняти 24-48 годин для поширення через Інтернет" було б точніше "Зміни DNS можуть бути кешовані на будь-яких серверах DNS, які запитували цей запис протягом останніх 86400 секунд".

Якщо ви хочете забезпечити надмірність вашого DNS у випадку, коли ваш сервер перейде в режим офлайн, вам слід заглянути в резервну службу DNS (наприклад, на dyndns.com) або створити власну вторинну NS.


5

Усі сервери DNS в Інтернеті є "третьою стороною" (я вважаю, що ви можете вважати кореневі DNS-сервери якось "власними" для Інтернету, але немає жодної технічної причини, чому ви могли б створити власний приватний корінь).

Ваш сервер DNS надає запропонований "час жити" (TTL) у кожній наданій вами відповіді. Віддалені розв'язувачі (інші DNS-сервери, що виконують рекурсивну роздільну здатність для клієнтів, бібліотеки рішень клієнтів тощо), повинні кешувати відповідь до цього TTL перед тим, як викинути його з кешу.

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

Деякі передумови помилки сервера: Чому це називається DNS "Розповсюдження"?


2

Коли хтось (або якийсь комп’ютер) в Інтернеті, так би мовити, хоче підключитися до однієї з ваших машин, вони запитують у свого локального сервера імен IP-адресу, яка відповідає імені хоста, яке їх цікавить.

Тож якщо ви скажете комусь "ей, подивіться на мій класний веб-сайт http://www.example.com ", комп'ютер іншого хлопця запитає його місцевого сервера імен: "Ей, що таке IP-адреса для www.example.com?"

Якщо припустити, що локальний сервер ніколи раніше не шукав відповіді на це питання, він попросить кореневі сервери імен дізнатись, який сервер (и) обробляє пошук для ".com". Коли він отримає таку відповідь, він запитає ті сервери, які сервери обробляють пошук для "example.com". Коли він отримає таку відповідь, якщо запитає у цих серверів IP-адресу для "www.example.com".

Коли сервер (и), наприклад ,.com.com відповість IP-адресою для www.example.com, вони також дадуть запитуючий сервер імен підказку про те, як довго він повинен запам'ятати відповідь на це питання. Цей натяк називається "TTL", або "час жити", і він вимірюється в секундах. Немає гарантії, що будь-який сервер зверне будь-яку увагу на TTL - деякі сервери імен можуть бути налаштовані так, щоб ніколи не запам'ятовували відповіді на пошук, і завжди повторюватимуть процес, навіть якщо його запитують кілька разів на секунду. Інші сервери імен можуть бути налаштовані таким чином, щоб тривалий час зберігати відповідь, навіть якщо ви запропонували зберігати дані лише короткий час, можливо тому, що вони хочуть мінімізувати мережевий трафік. TTL - це лише пропозиція, а не вимога чи гарантія.

Буквальна відповідь на ваше запитання - чому ваші записи DNS не розповсюджуються в Інтернеті, - це те, що вони цього не роблять, оскільки цього не повинні робити.

Крім того, якщо ви переглядаєте свою власну інформацію DNS за допомогою веб-сайту, призначеного для дослідження або відлагодження DNS-інформації, велика ймовірність, що сайт не збирається кешувати дані надовго або взагалі, незалежно від того, яка ваша пропозиція щодо TTL, оскільки ціль сайту - це, ймовірно, надання інформації про те, що система DNS каже ПРАВО ЗАРАЗ, а не 5 чи 50 чи 500 секунд тому. Ось чому ваші зміни відображаються негайно, і чому служба перестає працювати, як тільки ви від'єднаєте своїх серверів імен.

Я підозрюю, що вашим основним запитанням може бути "як я можу налаштувати такі речі, щоб якщо мій DNS-сервер перезавантажився або його жорсткий диск помер, інші люди в Інтернеті все ще зможуть бачити мої веб-сторінки?"

Відповідь на це питання полягає у створенні декількох серверів імен для вашого домену та їх запуску на різних машинах - в ідеалі, не просто на різних фізичних комп’ютерах, але з різними мережевими підключеннями, можливо, навіть у різних містах, штатах чи країнах чи континентах. Більшість цих серверів імен будуть створені як "раби", а це означає, що вони звертаються до "головного" сервера імен за їх інформацією, а потім повторюють цю інформацію будь-кому, хто запитає їх.

Отже, у ваших даних WHOIS з реєстратором вашого доменного імені ви можете налаштувати чотири сервери імен для вашого домену:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

де ns1.example.com - ваш поточний DNS-сервер. ns2.example.com може бути іншою машиною у вашій компанії / організації - в ідеалі не в тій самій підмережі і в тій же серверній стійці (або під столом того ж хлопця), що і ns1.example.com.

ns1.example.com буде вважатися "головним" сервером, і коли ви захочете змінити свій DNS, ви внесете зміни на цій машині.

ns2.example.com буде конфігуруватися як "підлеглий" сервер, який просто копіює всі дані, які ви встановили на ns1.example.com - але зовнішній світ не піклується про відмінність головного / підлеглого, ns2.example .com буде вважатися так само "офіційним", як і ns1.example.com.

ns1.otherguy.com і ns2.otherguy.com - це машини, які встановлені десь в іншому місці - можливо, ви домовитесь з другом / колегою в іншій організації, щоб запустити сервери імен один для одного, або, можливо, ви налаштуєтесь на dyndns.com або everydns.net або будь-який з інших безкоштовних або комерційних постачальників DNS. Однак якщо ви працюєте над цим, ви отримуєте такі машини, налаштовані як раби, щоб вони витягували інформацію про DNS для example.com з ns1.example.com (ваш "господар"), і вони будуть передавати цю інформацію про DNS будь-якій машині на Інтернет, який просить про це.

Після того як ваш реєстратор домену опублікує нові записи NS для вашого домену (які повинні бути приблизно миттєвими), тоді, коли хтось із Інтернету запитає, який сервер доменних імен обробляє "example.com", він отримає чотири відповіді -

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

Залежно від того, як налаштований сервер імен іншого хлопця, він може ставитися до цих чотирьох як до списку і запитувати їх по черзі, як отримати "www.example.com" - або він може задати всім чотирьм одне і те ж питання на в той же час, і просто візьміть відповідь з тієї машини, яка відповість першою. У будь-якому випадку, якщо ns1.example.com не працює через те, що жорсткий диск помер, або ви вирішили перезавантажити або будь-що інше, інші 3 машини будуть доступні, щоб відповісти на питання замість цього, і ваш веб-сайт і надалі буде видно.

Найпростіший спосіб вирішити цю проблему - зареєструватися у постачальника послуг DNS, який буде обробляти DNS для вашого домену - ціна на це коливається від вільних до тисяч (можливо, навіть десятків чи сотень тисяч) доларів на місяць, залежно від необхідний рівень обслуговування. Ви можете отримати досить надійну послугу за 30 доларів / рік або близько того. Безкоштовні сервіси не жахливі і, отже, мають досить хороший коефіцієнт виграшу за гроші, але якщо ви залежаєте від веб-сайту, щоб заробити гроші, ви повинні отримати 30 доларів за рік, що коштує DNS .

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


0

Кешування, виконане іншими серверами DNS, залежить від TTL, призначеного для запису. У вашому випадку TTL може бути дуже низьким або високим. Чи можете ви надати більше інформації про вашу конфігурацію DNS?

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