Шифруем DNS-запросы или dnscrypt-proxy в действии — НЕТ утечке DNS

Протокол DNS предполагает открытый обмен информацией между клиентами (в число которых входит и Ваш компьютер) и DNS-серверами. Таким образом, «подсмотреть» адреса посещаемых Вами сайтов (утечка DNS, «DNS Leak«) или даже подменить их (!) не составляет особенного труда, даже при использовании VPN.

Например, рассмотрим информацию, передаваемую при запросе IP-адреса сайта ya.ru у DNS-серверов Google 8.8.8.8 и 8.8.4.4 при выполнении команды ping:

Перехватываем сетевые пакеты — происходит обращение к порту 53 по IP-адресам 8.8.8.8 и 8.8.4.4:

Смотрим содержимое запроса:
Имя сайта (ya.ru) содержится в запросе открытым текстом:
0x02 (2 символа) 0x79 (y) 0x61 (a) 0x02 (2 символа) 0x72 (r) 0x75 (u) 0x00 (конец)

Как же скрыть эту информацию от посторонних глаз? Протокол DNSCrypt (криптографическая защита DNS-трафика) нам поможет 🙂

Применим в деле чудесную утилиту dnscrypt-proxy, использующую для защиты наших секретов эллиптическую криптографию (Curve25519).

Сначала подключаемся к Интернету и скачиваем подходящую версию утилиты dnscrypt-proxy по адресу https://download.dnscrypt.org/dnscrypt-proxy/:
dnscrypt-proxy-win32-full-*.zip (для 32-битных систем  Windows);
dnscrypt-proxy-win64-full-*.zip (для 64-битных систем Windows)
например:

Распаковываем содержимое скачанного архива, например, в папку C:\dnscrypt :

Свежую версию файла со списком публичных DNS-резольверов можно загрузить по адресу:
https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv

Редактируем файл конфигурации dnscrypt-proxy.conf:
задаем имя (Name) удаленного DNS-резольвера (они описаны здесь) ResolverName :

DNS-резольвер принимает запрос от клиента (Вашего компьютера) и отправляет его к DNS-серверу.

я выбрал вот такой французский сервер:

dnscrypt.org-fr использует цифровую подпись — DNSSEC, спонсор — компания Scaleway, предлагающая услуги «облачного» хостинга на серверах с ARM-процессорами:

задаем локальный адрес для прием DNS-запросов LocalAddress:

Тестируем полученную конфигурацию:
запускаем утилиту dnscrypt-proxy из командной строки с правами администратора:

В некоторых случаях возможно появление ошибки, связанной с сертификатами сервера:

Одной из причин ее возникновения может служить неверная установка даты и времени на локальном компьютере.

проверяем правильность определения IP-адреса на примере сайта example.com с помощью утилиты hostip:
(IP 93.184.216.34)

проверяем адрес используемого DNS-резольвера:
(должен отображаться адрес выбранного при настройке DNS-резольвера — 212.47.228.136)
с помощью утилиты hostip

Убедившись, что всё в порядке, закрываем запущенную утилиту dnscrypt-proxy, нажимая сочетание клавиш CTRL + C .

Запускаем утилиту dnscrypt-proxy как службу:

Изменяем адреса DNS-серверов для Ваших сетевых адаптеров:
каждый адаптер имеет свои настройки DNS для протокола IPv4:

задаем как адрес DNS-сервера локальный адрес 127.0.0.1:

Переподключаемся к Интернету и проверяем адрес используемого сервера:

Проверяем работу резольвера посредством сайта ipleak.net :

посредством сайта Perfect Privacy :

Перехватив пакеты, можно убедиться, что теперь мой компьютер обращается к порту 443 сервера с IP-адресом 212.47.228.136:

Сам запрос зашифрован:

Voila
!

 



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *