Запис DNS, який часто змінюватиметься? [зачинено]


17

Як зробити запис домену, який може часто змінюватися?

Скажімо, example.orgвказує на 203.0.113.0. Через дві хвилини це має вказувати 198.51.100.0.

Це будуть звичайні веб-сайти, що стоять за доменом ("нормальні" лише в сенсі доступу до них за допомогою звичайних веб-браузерів), але з дуже коротким терміном служби. Домен вказуватиме на адресу не більше ніж за 3-4 години до того, як він перемкнеться або вимкнеться. Немає необхідності захищати DNS-сервер від частих запитів.

Моїм підходом було б встановити TTL на 60 секунд і просто змінити запис, коли потрібно зробити перемикання. У гіршому випадку, це призведе до того, що користувач повинен чекати максимум 60 секунд, перш ніж новий сервер буде доступний.

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

Дякую!


9
Навіщо саме вам потрібна ця можливість? Який "звичайний веб-сайт" працює на інфраструктурі, яка зникає через 3-4 години? Є рішення, які вам спадають на думку, але незрозуміло, що ви робите зі швидкими змінами DNS або яку поведінку ви очікуєте під час переходів.
Майкл - sqlbot

@ Michael-sqlbot, "нормальний", тобто сенс веб-програми, доступ до якого здійснюється через браузер, але далеко не класичний веб-сайт. Один екземпляр програми дійсно матиме кілька годин роботи. Я просто хочу використовувати спільний пул доменних імен для них. Я вже порадив вивчити техніку балансування навантаження. Але оскільки екземпляри програми не є взаємозамінними, я не впевнений, що її застосовно взагалі.
Андрій8

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

Чому б замість цього не вийти з ладу ip?
giammin

Відповіді:


38

Це називається Fast Flux DNS Records . І зазвичай автори шкідливих програм приховують свої сервери інфраструктури.

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

Навіть якщо у вас є TTL 1 хвилина, один запис, швидше за все, буде дійсним більше ніж:

  1. Кеші браузера

    Браузери зазвичай кешують записи DNS протягом різної кількості часу. Firefox використовує 60 секунд , Chrome також використовує 60 секунд , IE 3.x і раніше кешується протягом 24 годин , IE 4.x і вище кешується протягом 30 хвилин.

  2. Кеш ОС

    Windows зазвичай не шанує TTL . TTL для DND не схожий на TTL для пакету IPv4. Це скоріше ознака свіжості, ніж обов’язкове освіження. У Linux може бути налаштований nscd для встановлення потрібного часу користувача, не зважаючи на DNS TTL. Наприклад, він може кешувати записи на тиждень.

  3. Кеш ISP

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

Балансир навантаження зроблений, щоб робити саме те, що ви хочете. Якщо балансир навантаження на місці, ви можете мати 2 або 4 або 10 серверів, які працюють в Інтернеті одночасно, поділяючи навантаження. Якщо одна з них перейде в режим офлайн, на службу це не вплине. Зміна записів DNS матиме простої між часом, коли сервер вимикається і DNS змінюється. Це займе більше однієї хвилини, оскільки вам доведеться виявити час простою, змінити записи та чекати, коли вони поширяться.

Тому використовуйте балансир навантаження. Він зроблений, щоб робити те, що ви хочете, і ви точно знаєте, чого очікувати. Швидка настройка DNS-потоку матиме неоднозначні та непослідовні результати.


11
Незважаючи на це, використовуйте балансир навантаження. У вас буде висока доступність, гнучкий пул, журнали, безліч показників і статистики, ви можете отримати пріоритет на той чи інший сервер і менше боліти головою.
ThoriumBR

4
Так, ви, швидше за все, виявите, що деякий жахливий провайдер десь потребує годин або цілого дня, щоб отримати вашу зміну DNS.
Робін

2
@Mehrdad Залежно від того, як ви це визначаєте, це робить. У Німеччині, якщо у вас є лінія ADSL, ви повинні пройти автентифікацію через PPPoE, і тоді вам буде призначена IP-адреса з діапазону комутованого доступу. До недавнього часу (а в деяких рядках все-таки) ваше з'єднання було перервано через 24 години, тому вам довелося повторно ввійти (або ваш CPE зробив це за вас).
glglgl

3
Щоб додати до коментаря @ glglgl: Найважливішим моментом є те, що вам призначали іншу IP-адресу щоразу, коли ви повторно входили в систему. Така поведінка була наміром: провайдери хотіли заборонити користувачам запускати сервери у своїх SOHO.
Бінарус

1
@Binarus не тільки це, але, як правило, Інтернет-провайдер з 2000 абонентами не має 2000 IP-адрес у своєму пулі. Оскільки не кожен клієнт буде активний одночасно, як тільки якийсь користувач відключиться, інший може підключитися та захопити той самий IP-адресу.
ThoriumBR

6

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

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

Незважаючи на те, що хвилюються та стискаються з приводу коротких TTL, вони, як правило, працюють частіше за все, до того, що, можливо, вам потрібно просто спробувати їх. Коли $ {day_job} коли наші сайти переходять зі "старої" платформи на "нову" платформу, це часто означає, що вони мігрують таким чином, що нічого в інфраструктурі не ділиться. Мій перший крок у такій міграції - це скидання TTL до 60-х років достатньо далеко перед розрізом, так що старий TTL має кілька кратних самих себе, щоб вичерпатися, що дає мені обґрунтовану впевненість, що ці перехідні RR з короткими TTL будуть "поширюватися" . " Коли я готовий до скорочення, я переконфігурую старий балансир¹, щоб закріпити трафік до нової системи - через Інтернет - таким чином, щоб балансир більше не врівноважував декілька внутрішніх систем, а натомість "

Потім я вирізаю DNS і спостерігаю за новим балансиром і старим.

Мене завжди приємно дивує те, як швидко відбувається перехід. Схоже, майже завжди це пошукові павуки та сторонні сайти "перевірки здоров'я", які незрозуміло прив'язуються до старих записів.

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

Але у наведеному вище описі ви знаходите рішення проблеми: "балансир завантаження" - конкретно і точніше, зворотний проксі - може бути системою, на яку вказує ваш відкритий запис DNS.

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

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

Є сервіси, які надають такі можливості в глобальному масштабі, і той, з яким я найбільше знайомий, - це CloudFront. (Швидше за все, Cloudflare буде служити точно тій самій цілі, оскільки невелика кількість тестувань, які я зробив, вказує на те, що він також поводиться правильно, і я впевнений, що є й інші.)

Хоча в основному продається як CDN, CloudFront є своєю суттю глобальною мережею зворотних проксі-серверів із можливістю додаткового кешування відповідей. Якщо www.example.comвказівки на CloudFront та CloudFront налаштовані для переадресації цих запитів backend.example.com, а DNS-запис backend.example.comвикористовує короткий TTL, то CloudFront зробить правильно, тому що він шанує цей короткий TTL. Коли заміна запису зміниться, весь трафік буде мігрувати до моменту запуску TTL.

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

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

тл; dr: перенаправляйте запити до системи, яка виконує функції проксі-сервера для реального веб-сервера, щоб лише конфігурація проксі відповідала зміні IP-сервера вихідного коду, а не DNS, орієнтований на браузер.

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

І, звичайно, кешування вмісту також може бути корисним за рахунок зменшення навантаження на початковий сервер або транспорт - я налаштував веб-сайти на CloudFront, де сервер-джерело знаходився в ланцюзі ADSL, а ADSL по суті обмежений для пропускної здатності в потоці. Сервер-джерело, на якому CloudFront підключається для отримання вмісту, не повинен бути сервером всередині екосистеми AWS.


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

² Єдине знання нового балансира про старий - це те, що йому потрібно довіряти X-Forwarded-For старого балансира і що він не повинен робити ніяких обмежень на основі IP, що обмежуються на вихідні адреси старого балансира.

³ Коли проксі-сервер є одним або декількома серверами, якими ви керуєте, у вас є можливість пропустити за допомогою DNS на зворотному боці та просто використовувати IP-адреси в конфігурації проксі-сервера, але хост / розподілений сценарій, що обговорюється, згодом потребує цього другого рівня DNS .


2
Дякую, як завжди, за ще одну чудову відповідь. "На $ {day_job}, коли наші сайти переходять зі" старої "платформи на" нову "платформу, [...]": Був там, зробив це. +1!
gf_

4

Коли я змінюю записи DNS, часто місячні будуть використовувати стару IP-адресу. Сказавши це, TTL всього за кілька секунд - це те, що Amazon використовує, наприклад, для створення резервного сервісу.

Замість зміни DNS можна поставити перед ним проксі-сервер / балансир завантаження.


1
У моїх тестах TTL60 секунд, здається, працює більшу частину часу, але у мене були деякі клієнти, які затрималися приблизно на 10-20 хвилин.
Andrew8

1

Ви можете вивчити використання динамічного DNS. Це розраховано саме на той сценарій, який @glglgl згадав у коментарі вище. Я вважаю, що вони використовують низький TTL, що, як було зазначено раніше, може бути не 100% ефективним, оскільки клієнти можуть ігнорувати це. Але це працює «досить добре».

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


Існує багато DNS-серверів рівня ISP, які не шанують TTL. Я працюю над продуктом, який перемикає інформацію про DNS приблизно два рази на рік. У нас є багато людей, які DNS-сервери кешують нашу стару інформацію протягом декількох тижнів після того, як ми її змінюємо. Якщо ви не контролюєте клієнтську сторону, не розраховуйте на те, що це буде добре працювати.
Майкл Ганц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.