Утечка DNS
Утечка DNS — это уязвимость безопасности, при которой DNS-запросы пользователя раскрываются серверам DNS интернет-провайдера, несмотря на использование сервисов VPN для их сокрытия. Хотя данная проблема затрагивает в первую очередь пользователей VPN, предотвращать такие утечки рекомендуется и при работе через прокси-серверы, а также при обычном подключении к интернету[1].
Процесс
Данная уязвимость позволяет интернет-провайдеру, а также любым лицам, осуществляющим мониторинг связи, видеть, какие сайты посещает пользователь. Это возможно потому, что DNS-запросы браузера направляются напрямую к DNS-серверу провайдера, минуя VPN-канал.
Утечка происходит только при некоторых типах VPN, например, в случае «раздельного туннелирования», когда часть трафика всё равно идёт по локальному сетевому интерфейсу, даже при активном VPN-соединении.
Начиная с Windows 8, компания Microsoft внедрила функцию «Интеллектуальное многоканальное разрешение имён» (англ. Smart Multi-Homed Name Resolution). Она изменила обработку DNS-запросов: теперь каждый DNS-запрос может отправляться по всем доступным сетевым интерфейсам компьютера. Несмотря на то что в целом это ускорило разрешение доменных имён, пользователи VPN оказались подвержены утечкам DNS, поскольку система перестала использовать только сервера, предоставленные VPN. Вместо этого DNS-запросы отправлялись по всем доступным интерфейсам, и обращались к стандартным DNS-серверам пользователя, то есть трафик DNS выходил за пределы VPN-туннеля[2][3].
Предотвращение
Существуют специализированные сайты, позволяющие проверить наличие утечки DNS. Для борьбы с утечками DNS применяют следующие методы:
- Шифрование DNS-запросов с помощью DNS поверх HTTPS или DNS поверх TLS, что не позволяет третьим лицам просматривать содержимое запросов.
- Использование VPN-клиентов, перенаправляющих DNS-запросы внутри VPN-туннеля. Не все приложения VPN эффективно защищают от утечек DNS. Так, исследование CSIRO 2016 года показало: 84 % из 283 VPN-приложений для Android из Google Play, которые они протестировали, допускали утечку DNS[4][5].
- Изменение настроек DNS на локальном компьютере, чтобы сеть целиком использовала другие DNS-сервера. Для этого существуют сторонние приложения, например NirSoft quicksetdns.
- Применение фаервола для полной блокировки DNS на устройстве (обычно исходящие UDP, иногда TCP-подключения к порту 53), или назначение DNS-серверов на несуществующие адреса, например, 127.0.0.1 или 0.0.0.0 (через командную строку или сторонние приложения, если это невозможно в настройках ОС). В этом случае потребуется альтернативный способ разрешения доменов, например, через прокси-сервер или специализированные программы (Proxifier, ProxyCap) для настройки работы с прокси. Многие приложения позволяют явно указывать собственные прокси.
- Использование анонимных браузеров, таких как браузер Tor, которые не только анонимизируют пользователя, но и обеспечивают использование собственных DNS внутри операционной системы.
Список сайтов для проверки утечек DNS
Поскольку отдельные сайты могут ошибочно выдавать ложноположительный результат, рекомендуется проверять итоги вручную. Важно удостовериться, что страна, провайдер и IP-адрес не совпадают с домашним провайдером пользователя.
Заключение
Определить, использует ли система заданные DNS-серверы и есть ли утечка DNS, не всегда просто. Самый надёжный способ — проводить проверки на различных сервисах онлайн-тестирования. Иногда провайдер по умолчанию использует публичные DNS-серверы, и пользователь может этого не замечать, однако при этом провайдер всё равно может собирать данные о запросах. В такой ситуации рекомендуется сменить DNS-сервера на альтернативные, защищённые от утечек. Например, если провайдер использует публичные DNS от Google, имеет смысл протестировать работу через Cloudflare DNS и проверить отсутствие утечек DNS в сторону Google.


