Прикрі проблеми DNS

Хоча служби DNS в загальному прості, в їх роботі бувають певні порушення. Досить часто причиною цих порушень виявляються неясні формулювання або погано документовані параметри в різних діалогових вікнах Windows. У даній статті розглядаються типові неполадки DNS, які доставляють чимало клопоту адміністраторам.

Збій динамічного оновлення

Управління DNS в домені спрощується завдяки можливості динамічного оновлення записів A і PTR на серверах DNS клієнтами Windows Управління DNS в домені спрощується завдяки можливості динамічного оновлення записів A і PTR на серверах DNS клієнтами Windows. Таким чином, якщо в інтегрованої з AD зоні на підприємстві використовується IP-адресація, клієнтські комп'ютери можуть динамічно оновлювати AD, додаючи в неї свої нові IP-адреси. Але іноді можна помітити, що клієнтські комп'ютери не поповнюють записів DNS новими адресами. Щоб коректно виконати оновлення, необхідно дозволити динамічне оновлення на сервері DNS. Для цього потрібно відкрити вікно властивостей зони DNS і вибрати режим Secure only for Dynamic updates (екран 1).
Потім слід відкрити діалогове вікно Advanced TCP / IP Settings мережевого адаптера на клієнтській системі, вибрати вкладку DNS і переконатися, що встановлений прапорець Register this connection's addresses in DNS.
Нарешті, клієнтська служба DHCP (не тільки клієнтська служба DNS) виконує реєстрацію DNS і повинна функціонувати на кожному комп'ютері. Навіть якщо DHCP не використовується для призначення IP-адрес, клієнтська служба DHCP повинна працювати на всіх комп'ютерах для динамічного оновлення записів DNS.
За замовчуванням клієнт оновлює записи DNS при початковому завантаженні, при зміні IP-адреси або імені або при виконанні команди ipconfig / registerdns. Крім того, клієнт повторно реєструє IP-адресу через кожні 24 години.

Падіння продуктивності через клієнтської служби DNS

При запуску клієнтської служби DNS все записи з hosts-файлу завантажуються в кеш. Якщо для блокування доступу до небажаних іменах вузлів використовується дуже великий hosts-файл, ця служба може істотно сповільнити роботу комп'ютера. В такому випадку її варто відключити.
Зазвичай відключення клієнтської служби DNS не впливає на перетворення DNS. Тоді виникає питання, навіщо взагалі потрібна така служба.
Справа в тому, що наявність клієнтської служби DNS - не обов'язкова вимога для перетворення імен; вона лише підвищує ефективність і гнучкість цього процесу. Головна мета клієнтської служби DNS - забезпечити локальне кешування записів DNS. По суті, служба являє собою сервер DNS. Замість того щоб опублікувати базу даних записів DNS, вона просто кешируєт раніше перетворені записи DNS для прискорення майбутніх операцій. Крім кешування, служба оптимізує мережеві з'єднання шляхом приоритизации записів про ресурси на основі мережевого розташування, швидкості і готовності.

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

Обов'язкова оптимізація правил брандмауера

Якщо брандмауер налаштований на передачу будь-яких запитів на сервер DNS, то необхідні правила, що перешкоджають зловживань з боку сторонніх осіб. DNS-запити зазвичай надходять в UDP-порт 53 з порту-джерела з номером більше 1023. Сервер DNS відповідає з порту-джерела 53 на той же порт, який використовується клієнтом. Більшість брандмауерів c перевіркою пакетів на відповідність заданим умовам може обслуговувати відповіді DNS, тому для управління запитами досить одного правила.
Якщо розмір відповіді на запит перевищує 512 байт, то сервер DNS повідомляє клієнту, що відповідь усічений. Клієнт може повторно подати запит з Extended DNS, в якому використовуються UDP-відповіді більшого розміру, або клієнт може повторно надіслати запит через TCP. Якщо дозволені запити TCP, необхідно правило, яке дозволяє надходження пакетів в TCP-порт 53 з порту-джерела з номером більше 1023. Якщо відомо, що сервер DNS не відповідає на запити розміром більше 512 байт, то порт можна залишити закритим. У деяких серверах DNS UDP- або TCP-порт 53 використовується в якості порту-джерела і порту призначення для запитів сервер-сервер, тому, можливо, доведеться відповідним чином налаштувати брандмауер.

Яким чином Windows опитує кілька серверів DNS

За замовчуванням Windows спочатку запитує зазначений першим сервер DNS на первинному мережевий адаптер. Якщо цей сервер не відповідає протягом секунди, Windows посилає запит на вказаний першим сервер DNS на будь-якому іншому мережевому адаптері комп'ютера. Якщо відповіді не отримано протягом двох секунд, Windows посилає запит всім серверам DNS на всіх мережевих адаптерах комп'ютера. Якщо протягом двох секунд жоден сервер не відгукується, Windows знову посилає запит всім серверам і чекає чотири секунди. При необхідності запит всім серверам повторюється, і очікування триває вісім секунд.
Windows вносить корективи в список опитуваних серверів DNS в залежності від умов роботи мережі. Якщо жоден із серверів DNS для адаптера не відповідає на запити, Windows передбачає, що відбулася відмова мережі, і не запитує сервери через цей адаптер протягом 30 секунд. Якщо один сервер DNS на мережевому адаптері повертає негативну відповідь на запит, Windows не посилає повторних запитів ні на один з серверів DNS цього адаптера. Крім того, Windows може змінити порядок опитування серверів DNS на користь сервера, який відповідає швидше за інших.

Повільна процедура настройки з графічного інтерфейсу

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

c:> netsh interface ip
show dns

Очистити список серверів DNS мережевого адаптера можна за допомогою команди

c:> netsh interface ip
set DNS «Local Area Connection»
static none

де «Local Area Connection» - ім'я мережевого адаптера.
Щоб додати сервер DNS для мережевого адаптера ( «Local Area Connection» - ім'я мережевого адаптера), потрібно ввести

:> netsh interface ip
set DNS «Local Area Connection»
static 192.168.0.1

Проблеми домену DNS

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

c:> nslookup

Ця команда повинна видати список IP-адрес, які вказують на кожен з контролерів домену. Якщо отримані інші результати, необхідно перевірити настройки DNS.
Перевірити конфігурацію DNS можна, виконавши швидкий тест конфігурації мережі на будь-якому комп'ютері Windows XP або Windows Server 2003. У командному рядку потрібно ввести

c:> netsh diag show test

При цьому виконується луна-тестування всіх серверів DNS і шлюзів в конфігурації TCP / IP. Якщо є набір ресурсів Microsoft Windows Server 2003 Resource Kit, то можна застосувати команду netdiag або dnsdiag

C:> netdiag / test: dns

або

C:> dnsdiag

Щоб протестувати загальнодоступні сервери DNS ззовні, можна використовувати один з наступних URL: http://www.dnsreport.com/ або http://www.dnsstuff.com/ . За допомогою команди

c:> echo ls -d
nslookup -

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

BIND - акронім, а не дієслово

У діалоговому вікні властивостей сервера DNS є параметр BIND Secondaries. BIND - НЕ дієслово, а скорочення від слів Berkeley Internet Name Domain, і означає воно реалізацію DNS, яка використовується для обробки DNS-запитів в Internet.
При передачі зони сервер DNS використовує більш швидкий метод передачі зони зі стисненням, який забезпечує передачу багатьох записів в одному TCP-повідомленні. Цей формат несумісний зі старими версіями BIND. Необхідно вибрати режим BIND Secondaries, якщо використовується більш рання версія BIND, ніж 4.9.4. Цей параметр забороняє сервера DNS Windows задіяти більш швидкий метод передачі зони.

Коли відключати рекурсию?

Рекурсія - процес, який використовується DNS для пошуку заслуговує на довіру сервера в домені. Якщо направити на сервер DNS запит про комп'ютер в домен і для даного домену сервер не заслуговує на довіру і не має кешованої копії запитаної записи хоста, то сервер рекурсивно опитує інші сервери в Internet, щоб знайти сервер DNS, що містить правильну відповідь. Якщо сервер не виконує рекурсії, то він повідомляє клієнту, що йому нічого не відомо про записи, або вказує, де можна знайти запис.
Щоб визначити ситуації, в яких слід відключити рекурсию, необхідно проаналізувати типи записів, що містяться на сервері DNS. Якщо серверу DNS для домену відомі всі записи домену, то рекурсія не знадобиться. Наприклад, контролер домену в своєму розпорядженні відомості про кожному комп'ютері домену, тому немає необхідності надсилати кудись запит. Те ж саме відноситься до загальнодоступного сервера DNS, в якому зберігаються опубліковані записи доменів.
Рекурсію зазвичай дозволяють на серверах, які забезпечують перетворення DNS для локальних користувачів. Тобто якщо користувачеві дозволено доступ в Internet, слід надати йому рекурсивний сервер DNS, який може перетворити будь-яке ім'я хоста в Internet.
Важливо не відкривати рекурсивні сервери DNS для доступу поза компанією. Сервер може бути атакований і використаний в якості учасника атак з відмовою в обслуговуванні (DDoS).

Блокування вузлів Internet

Існує проблема, виникнення якої не пов'язано з DNS, однак DNS дозволяє частково розв'язати цю проблему. Блокувати доступ користувача до небажаних вузлів Internet можна за допомогою брандмауера або сервера-посередника, але ці рішення не завжди ефективні. Наприклад, провайдер послуг доступу в Internet може побажати блокувати вузли з певними іменами, не вимагаючи від користувачів застосування сервера-посередника і не створюючи надмірного навантаження на брандмауер. Один з альтернативних варіантів - блокування імен вузлів на сервері DNS.
Для цього в першу чергу необхідний список заблокованих вузлів. Список розповсюджувачів небезпечних програм, відформатований для серверів DNS Microsoft, можна знайти на сайті Malware Block Lists за адресою
http://www.malware.com.br/#blocklist . Цей список можна безпосередньо імпортувати на сервер DNS. Можна також використовувати список блокування з сайту hpHosts Online за адресою http://www.hosts-file.net/ або з сайту Spamassassin Blacklists за адресою http://www.sa-blacklist.stearns.org/sa-blacklist , Але їх доведеться переформатувати.
Інша альтернатива - OpenDNS ( http://www.opendns.com/ ), Безкоштовна DNS-служба, яка забезпечує фільтрацію шляхом блокування відомих вузлів фішингу. Щоб задіяти OpenDNS, досить помістити IP-адреси сервера служби DNS в свою мережеву конфігурацію.
Слід пам'ятати, що використання DNS для блокування лише перешкоджає перетворенню імен вузлів, внесених до списку. Це не заважає користувачам звертатися до вузлів шляхом введення IP-адреси і не блокує вузлів, яких немає в списку.
На закінчення хочу підкреслити, що у проблем DNS зазвичай є прості рішення, але необхідно ясно розуміти принципи роботи цієї служби. Вивчити основи DNS не завадить кожному ІТ-фахівця.

Марк Барнетт ( [email protected] ) - незалежний консультант з безпеки і автор, який спеціалізується на проблемах безпеки Windows. Володар сертифікату IIS MVP

Додаткові поради по DNS

До мене часто звертаються з питаннями про особливості DNS. Нижче наводяться два ради про обслуговування.
На серверах DNS Windows можна задіяти як циклічну ротацію (round-robin rotation), так і впорядкування з мережевою маскою (netmask ordering). Часто імені вузла, такого як http://www.microsoft.com/ , Відповідає кілька IP-адрес для більш ефективного балансування навантаження і підвищення продуктивності. Ці IP-адреси можуть бути різними шляхами до одного сервера або можуть вказувати на географічно рознесені сервери.

Щоб збалансувати навантаження від DNS-запитів, сервер DNS використовує циклічну ротацію для проходу за списком IP-адрес, рівномірно розподіляючи трафік між різними серверами. При упорядкуванні з мережевою маскою сервер DNS намагається видати IP-адреса вузла, фізично розташованого найближче до клієнта. Для цього сервер DNS переглядає кілька перших октетів IP-адреси, припускаючи, що сервер з IP-адресою, схожим на адресу клієнта, буде ближче розташований до нього фізично. За замовчуванням сервер DNS віддає перевагу будь-якою адресою хоста в одній мережі класу C з клієнтом.
Може здатися, що не можна одночасно застосувати циклічну систему і впорядкування з мережевою маскою, але, як показано на екрані A, Windows дозволяє поєднувати обидва методи. Якщо обрані обидва методи, Windows перевіряє список IP-адрес вузла, щоб з'ясувати, наскільки близько IP-адреси відповідає IP-адресою клієнта. Якщо виявлено збіг, цього IP-адресою буде призначений вищий пріоритет для циклічної ротації. Результат: сервер DNS виконує циклічну ротацію IP-адрес, але частіше вибирає найближчі до клієнта сервери.

Інтеграція DNS і Active Directory

При установці DNS на контролері домену (DC) Windows можна зберегти зонні файли не в простих текстових файлах, а в базі даних Active Directory (AD). Виникає питання: навіщо тоді інтегрувати зону з AD?
У більшості випадків інтеграція зон DNS з AD приносить багато переваг, головне з яких - більш ефективна реплікація. У зонах, інтегрованих з AD, автоматизована реплікація записів DNS між серверами. Реплікація AD - реплікація з декількома «провідними», тобто можна внести зміну на будь-якому DC, і ця зміна буде автоматично поширене по домену. Для зон DNS, які не інтегровані з AD, необхідно призначити первинні і вторинні сервери DNS. Зміни зазвичай вносяться на первинному сервері, який оновлює всі вторинні.

Коли відключати рекурсию?
Виникає питання: навіщо тоді інтегрувати зону з AD?