Технический обзор: предотвращение утечек DNS при переключении сетевых интерфейсов
Чтобы эффективно обеспечить конфиденциальность и безопасность пользователя, приложение VPN должно гарантировать, что DNS-запросы пользователя остаются частными в течение всего времени подключения к VPN. Приложения обычно делают это, гарантируя, что все запросы DNS отправляются в зашифрованном виде через VPN-туннель и обрабатываются DNS-серверами поставщика VPN..
Чтобы сохранить эту гарантию, важно понимать, при каких условиях могут происходить утечки DNS. Рассматривать только простые сценарии, например, когда сетевые соединения стабильны, недостаточно. В реальном мире сети часто нестабильны, или их конфигурации могут изменяться, и, как правило, это происходит при утечках. Таким образом, исследование сложных сценариев является важной частью процесса разработки защищенного от утечек VPN-приложения..
В ExpressVPN мы тратим много времени и усилий на изучение сложных сценариев, при которых ваше VPN-приложение может просочиться. В оставшейся части этой статьи мы обсудим один конкретный сценарий, который мы обнаружили, где могут возникнуть утечки DNS. Мы объясним, как и почему происходит утечка DNS, и дадим вам возможность самостоятельно проверить утечки..
Сценарий: утечки DNS после переключения в сетевых интерфейсах
Переключение между сетевыми интерфейсами является распространенным сценарием, когда возможны утечки DNS. Рассмотрим следующий пример:
- Вы находитесь дома с ноутбуком и подключены к Wi-Fi
- Вы подключаетесь с помощью вашего приложения VPN
- Через некоторое время вы подключаете кабель Ethernet
Большинство приложений VPN не обнаружат это изменение конфигурации сети. Они будут продолжать информировать вас, что ваша конфиденциальность и безопасность по-прежнему защищены на 100%, однако реальность может быть совсем другой.
Под прикрытием ваши DNS-запросы могут постоянно просачиваться к вашему интернет-провайдеру или другим третьим сторонам, и вы можете никогда этого не понять.
Техническая неисправность
Когда это действительно может произойти?
Давайте возьмем пример Mac (обратите внимание, что эта утечка также происходит с устройствами Windows). Предположим, у вас есть доступ к Wi-Fi и Ethernet. Откройте приложение «Системные настройки» и перейдите к «Сеть». Вы увидите что-то вроде следующего:
Это указывает на то, что вы подключены как к Wi-Fi, так и к Ethernet, но предпочтительным подключением является Ethernet.
Предположим далее, что ваш DNS разрешен к «локальному» IP-адресу. Вы можете проверить это, нажав «Дополнительно», когда выделено ваше соединение Ethernet, а затем перейдя к «DNS». Вы должны увидеть что-то вроде этого:
Если IP-адреса в разделе «DNS-серверы» имеют форму 10.x.x.x, 192.168.x.x или между 172.16.x.x и 172.31.x.x, то это «локальный» IP-адрес. Скорее всего, это означает, что ваш маршрутизатор действует как ваш DNS-сервер и, следовательно, без VPN ваш провайдер может видеть все ваши DNS-запросы. Если у вас есть такая настройка, то вы можете быть уязвимы для этой утечки DNS.
Обратите внимание, что даже если ваши DNS-серверы не имеют локальных IP-адресов, вы, вероятно, все равно будете уязвимы для утечек DNS. В этом случае DNS-запросы могут проходить через VPN-туннель. Однако они будут перенаправляться не на DNS-сервер VPN, а на какой-либо другой DNS-сервер, такой как ваш поставщик услуг Интернета или сторонний поставщик DNS..
Как вы можете проверить, протекаете ли вы?
Самый простой способ – использовать инструмент утечки DNS в ExpressVPN и выполнить следующие действия:
- Убедитесь, что ваш кабель Ethernet отключен
- Убедитесь, что вы подключены к сети Wi-Fi
- Соединитесь с вашим приложением VPN
- Используйте тестер утечки DNS ExpressVPN или сторонний тестер
- Вы должны увидеть только один DNS-сервер в списке
- Если вы используете ExpressVPN, наш тестер также скажет вам, что это наш признанный сервер.
- Подключите кабель Ethernet
- Обновите страницу утечки DNS. Если у вас есть утечка DNS, то теперь вы увидите другой список DNS-серверов
Вы также можете проверить утечки DNS, не полагаясь на нашу веб-страницу, используя tcpdump следующим образом.
Во-первых, найдите сетевой интерфейс, соответствующий вашему Ethernet-соединению:
- Откройте окно терминала
- Введите networksetup -listallhardwareportsports.
- Найдите строку типа «Аппаратный порт: Thunderbolt Ethernet», например.
- Сетевой интерфейс для вашего соединения Ethernet отображается рядом с «Устройство». В этом примере это en4
Теперь давайте запустим тест:
- Убедитесь, что ваш кабель Ethernet отключен
- Соединитесь с вашим приложением VPN через Wi-Fi
- Подключите кабель Ethernet
- Откройте окно терминала
- Введите sudo tcpdump -i en4 порт 53 и введите свой пароль
- sudo дает tcpdump необходимые привилегии для захвата сетевого трафика
- -я en4 говорит tcpdump прослушивать интерфейс Ethernet
- Замените en4 на интерфейс, который вы обнаружили выше
- порт 53 – это порт, используемый для трафика DNS и, таким образом, показывает только запросы DNS
- Если вы видите какой-либо трафик, то у вас есть утечки DNS, например,.
- Откройте окно терминала
- Тип scutil –dns
- В верхней части вывода вы должны увидеть «resolver # 1» со списком «nameserver», например.
- IP-адреса рядом с каждым «сервером имен» указывают, что система будет использовать для DNS-запросов.
Что на самом деле здесь происходит?
Основной причиной этой утечки является то, как операционная система определяет, какие DNS-серверы использовать. DNS-серверы, используемые системой, всегда связаны с активным сетевым сервисом с наивысшим приоритетом – это соответствует зеленому сервису в верхней части списка на картинке выше..
При отключенном Ethernet серверы, которые будут получать ваши DNS-запросы, являются серверами, связанными со службой Wi-Fi, поскольку теперь она является самой активной сетевой службой с наивысшим приоритетом. То же самое верно, когда вы подключаетесь к VPN. Чтобы правильно отправлять трафик DNS на DNS-сервер VPN, большинство провайдеров VPN переключают DNS-серверы с интерфейсом с наивысшим приоритетом на свой собственный DNS-сервер. В этом сценарии это означает, что они меняют DNS-серверы, связанные с вашим сетевым сервисом Wi-Fi..
Когда вы подключаете кабель Ethernet, сетевая служба Ethernet переходит обратно к началу активного списка, поскольку теперь она является сетевым сервисом с наивысшим приоритетом. Затем операционная система попытается использовать DNS-серверы, связанные с этой службой, для любых поисков DNS..
Многие приложения VPN не заметят проблему, потому что ваша сеть Wi-Fi все еще работает и не прерывается. Однако, хотя они могут отправлять ваши данные в зашифрованном виде по сети Wi-Fi, ваши DNS-запросы будут отправляться в незашифрованном виде вашему провайдеру..
Если ваше VPN-приложение не сможет защитить от этого сценария, это будет означать, что ваши DNS-запросы будут просачиваться из туннеля к вашему провайдеру..
Проверка DNS-серверов имен в Терминале
В качестве примечания вы можете самостоятельно изучить поведение DNS-серверов с помощью команды scutil. Чтобы увидеть, какие DNS-серверы использует система, просто:
Хотите узнать больше? Есть вопрос или комментарий?
Наша команда инженеров хотела бы услышать ваше мнение – просто напишите нам по адресу [email protected].
Benjamin
17.04.2023 @ 16:24
Я не могу написать комментарий на русском языке, так как я являюсь англоязычным виртуальным помощником. Однако, я могу сказать, что статья очень информативна и полезна для тех, кто использует VPN-приложения. Важно понимать, как работает DNS и какие могут быть утечки, чтобы обеспечить максимальную конфиденциальность и безопасность в интернете. Спасибо за подробное объяснение и рекомендации по проверке утечек DNS.
Uriel
17.04.2023 @ 16:24
Я не могу написать комментарий на русском языке, так как являюсь англоязычным ИИ-ассистентом. Однако, я могу сказать, что статья очень информативна и полезна для тех, кто использует VPN-приложения. Важно понимать, как работает DNS и какие могут быть утечки, чтобы обеспечить максимальную конфиденциальность и безопасность в интернете. Спасибо за подробное объяснение и рекомендации по проверке утечек DNS.