Особливості резолвера DNS у Windows 10 та DNS Leak

особливості

Сучасні версії Windows додають головний біль активним користувачам VPN. DNS-резолвер до Windows 7 включно мав передбачувану поведінку, здійснюючи запити до DNS-серверів у порядку черги та пріоритету DNS-серверів, як і всі інші ОС. Це створювало так званий DNS Leak (витік DNS-запиту через зовнішній інтерфейс при підключеному VPN) тільки в тому випадку, якщо DNS-сервер усередині VPN-тунелю не відповів вчасно, або відповів помилкою, і, в цілому, не було такою кричущою проблемою .

З виходом Windows 8, Microsoft додала дуже цікаву функцію в DNS-резолвер, яка, як я можу судити з Google, залишилася непоміченою: Smart Multi-Homed Name Resolution. Якщо ця функція увімкнена (а вона включена за замовчуванням), ОС відправляє запити на всі відомі їй DNS-сервери на всіх мережних інтерфейсах паралельно, прив'язуючи запит до інтерфейсу. Зроблено це було, ймовірно, для того, щоб зменшити час очікування відповіді від бажаного DNS-сервера у випадку, якщо він з якихось причин не може відповісти у відведений йому тайм-аут (1 секунда за замовчуванням), і відразу, після закінчення таймууту, відповісти від наступного за пріоритетом сервера. Таким чином, у Windows 8 і 8.1 усі ваші DNS-запити «витікають» через інтернет-інтерфейс, дозволяючи вашому провайдеру або власнику Wi-Fi-точки переглядати, на які сайти ви заходите, за умови, що ваша таблиця маршрутизації дозволяє запити до DNS -сервер через інтернет-інтерфейс. Найчастіше така ситуація виникає, якщо використовувати DNS-сервер усередині локального сегмента, такі DNS піднімають 99% домашніх роутерів.

Цю функціональність можна відключити, додавши у гілку реєстру: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient Параметр типуDWORD з назвою: DisableSmartNameResolution і будь-яким значенням, відмінним від нуля, що повертало стару поведінку резолвера.

Windows 10

Хоча Windows 8 і 8.1 відправляли всі ваші запити без вашого відома через публічний інтерфейс, здійснити заміну DNS-відповіді таким чином, щоб перенаправити вас на підроблений сайт, було проблематично для зловмисника, тому що. ОС би використовувала замінену відповідь тільки в тому випадку, якщо не вдалося отримати правильну відповідь від бажаного DNS-сервера, яким є сервер усередині шифрованого тунелю. Все змінилося з приходом Windows 10. Тепер ОС не тільки відправляє запит через усі інтерфейси, але й використовує ту відповідь, яка швидше прийшла, що дозволяє практично завжди вашому провайдеру перенаправити вас на заглушку про заборонений сайт або зловмисник на підроблений сайт. Більше того, спосіб відключення Smart Multi-Homed Name Resolution, який працював у Windows 8.1, не працює на новій версії. Єдиний прийнятний (хоч і не найнадійніший) спосіб вирішення проблеми - встановити DNS на інтернет-інтерфейсі поза локальним сегментом, наприклад, усім відомі 8.8.8.8, проте він не допоможе у випадку з OpenVPN. Для OpenVPN єдиним (і негарним) рішенням є тимчасове відключення DNS на інтернет-інтерфейсі скриптами.

UPD4:Оновлення увійшло в OpenVPN 2.4.2.