Сетевые принципы и технологии | Основы построения и работы компьютерных сетей

 

В этом разделе представлены небольшие статьи и заметки, рассматривающие базовые принципы сетевых коммуникаций, сетевые технологии, основы построения и работы компьютерных сетей.

Публичные DNS серверы - какой выбрать для безопасного и приватного доступа в Интернет?   (Дата: 16.09.2019)

Публичные DNS серверы В этой заметке я не буду детально рассматривать систему доменных имен DNS, как она устроена и как работает. Остановлюсь только на практическом аспекте выбора публичного DNS сервера для сетевых устройств и клиентов сети.

Напомню лишь, что DNS это критичный компонент сетевой инфраструктуры. Если DNS сервер, настроенный в IPv4 или IPv6 TCP/IP стеке не отвечает, то на компьютере Вы увидите предупреждение, что Интернет недоступен, соединение без Интернета. Даже если и проходит ping по IP адресам известных интернет ресурсов.

Обычно, в таких случаях я дают ping на легко запоминающиеся IP адреса, например:

  • ping 1.1.1.1
  • ping 8.8.8.8
  • ping 9.9.9.9

 

и др. Но об этом чуть позже.

И если ping проходит, а в браузере сайты не открываются, то это верный признак проблемы с DNS.

Выбор DNS серверов это компромисс между скоростью его работы, безопасностью и предоставляемыми ими дополнительными возможностями.

Когда вы подключаетесь к Интернет-провайдеру, помимо IP адреса (или диапазона адресов), он еще выдает Вам маску подсети, шлюз и свои DNS серверы.

Но далеко не всегда эти DNS серверы будут достаточно безопасны и оптимальны именно для ваших задач. Не секрет, что практически все Интернет- провайдеры регистрируют ваши обращения к ресурсам Интернета в лог файлах DNS запросов. Туда попадают и Ваши IP адреса и запросы к конкретным сайтам, доменным именам, URL-ам.

И, как правило, использование протоколов HTTPS/SSL от этого не спасает, ибо первый запрос HTTP GET к URL транслируется сначала в DNS запрос для определения IP адреса сайта. Он никак не шифруется и не скрывается обычными DNS серверами. И только после установления защищенного соединения с сайтом трафик начинает шифроваться. Но домен Вы уже «засветили». Эта информация может быть использована для составления Вашего личного Интернет профиля, интересов и привычек.

Либо, эта информация может передаваться Интернет-провайдерами по запросу сами знаете кого и куда. Проект СОРМ» и иже с ним никто не отменял и не собирается. Количество подобных проектов только растет и методы сбора личной информации расширяются. Например, внедряемая сейчас в России система «глубокого анализа пакетов» DPI.

Кстати (или некстати), такого рода информация пользуется большим спросом и активно продается/покупается в Даркнете. Она может быть использована злоумышленниками, например, для таргетированной рекламы, кражи денег с банковских карт, и прочих неблаговидных целей.

В любом случае, не думаю, что кому-либо понравиться, чтобы за ним следили. Даже если Вы и не делаете ничего нелегального, а просто серфите Интернет.

Что же можно сделать в этой ситуации?

Проблему маскировки DNS запросов от посторонних позволяет решить новая технология «DNS поверх HTTPS» (DNS-over-HTTPS, или сокращенно DoH). Она позволяет шифровать все DNS запросы и ответы. Конечно же, эта технология должна поддерживаться с обеих сторон, как DNS сервером, так и браузером.

Хорошая новость в том, что эту технологию можно применять уже прямо сейчас, все прекрасно работает!

Вторая проблема, которую позволяет решить DoH это атаки типа Man-In-The-Middle (MiTM, «Мужик посередине»). Если DNS обмен не зашифрован, то злоумышленник может подменить ответ DNS сервера и перенаправить весь трафик на фейковый сайт, где может быть вредоносное программное обеспечение, вирусы, фишинговые страницы для сбора логинов и паролей. Да и много еще каких зловредов.

Какой оптимальный DNS сервер выбрать?

Вот пятерка наиболее известных и популярных публичных DNS серверов:

 

Выбор конкретного DNS сервера зависит от Ваших первичных задач и приоритетов. Например, поддерживает ли DNS сервер технологии DoH, DoT, обеспечивает ли защиту от опасных и вредоносных сайтов, есть ли защита от ботов, блокируются ли «взрослые» сайты, насколько быстро сервер отвечает на запрос и т.д.

Например, самые быстрые DNS сервера на сегодняшний день и с очень широкой географической зоной покрытия, это Cloudflare DNS. Убедиться в этом можно утилитой dig из командной строки Linux:

dig @1.1.1.1 mail.ru | grep time

Linux dig

В параметрах надо через @ указать IP адрес DNS сервера, и какой сайт резолвить. В этом примере вручную перебираются все пять рассматриваемых здесь DNS серверов, и запрашивается IP адрес сайта mail.ru.

Для наглядности и упрощения анализа времени ответа DNS сервера можно с помощью утилиты grep в выводе оставить только строку, содержащую time.

Чтобы Linux был всегда под рукой, даже если Вы и работаете под Windows, можно включить поддержку Linux подсистемы и установить из Microsoft Store нужный вам его вариант.

Мне лично нравится Ubuntu. Если интересно, как все это прикрутить к Windows, пишите в комментариях внизу страницы, сделаю тогда видео.

Если же Вы не фанат Linux, то можно просто воспользоваться одной из утилит для Windows, например DNS Benchmark.

DNS Benchmark

Все полные характеристики рассматриваемых DNS серверов можно посмотреть по выше приведенным ссылкам и подобрать для себя наиболее подходящий.

Для себя же я выбрал Cloudflare DNS, и вот почему:
  • самый быстрый
  • безопасный, не ведет логов
  • поддерживает «DNS-over-HTTPS»
  • легко запоминающиеся IP адреса (1.1.1.1, 1.0.0.1)
  • можно указывать как для сетевых устройств (маршрутизаторов, межсетевых экранов и т.д.), так и для конечных пользователей сети

 

Ранее я активно пользовался OpenDNS (Cisco Umbrella) и Google DNS, пока не перешел на Cloudflare. Пишите Ваши соображения и рекомендации в комментариях.

Также есть дополнительная группа серверов, поддерживающих новые технологии, включая «DNS-over-HTTPS».

И еще, ориентироваться на результаты работы команды ping для замера скорости ответа сервера особого смысла нет. Важнее скорость получения ответа на DNS запрос (dig), а она может быть гораздо выше, чем просто ping.

А теперь самое интересное и практичное!

Поддержка «DNS поверх HTTPS» в браузерах

Совсем не обязательно дожидаться официального анонса поддержки этого функционала в популярных браузерах. Сегодня все это уже прекрасно работает в последних версиях Mozilla Firefox и Google Chrome.

Mozilla Firefox (версия 60.х и старше)

Для проверки версии введите в адресную строку браузера about:support

Самый простой способ включить DoH, это установить последнюю версию Firefox, зайти в

Настройки > Основные > Параметры сети > Включить DNS через HTTPS

(или ввести в адресной строке about:preferences), перейти в Параметры сети и поставить галку напротив "Включить DNS через HTTPS":

DoH Firefox

По умолчанию будут использоваться серверы Cloudflare, но можно поменять их и на другие.

Либо, для пытливых умов и/или владельцев старых версий Firefox можно сделать следующее (еще дополнительно включить и eSNI для TLS 1.3):

  • ввести в адресную строку Firefox about:config
  • подтвердить, что принимаете на себя вес риски, когда откроется страница с предупреждением
  • через строку поиска найти параметр network.trr.mode и дважды щелкнуть по нему (TRR: Trusted Recursive Resolver)
  • установить значение, равное 2, чтобы DNS-over-HTTPS использовался по умолчанию, а стандартный DNS-сервер в качестве резервного (оптимальный вариант для совместимости)
  • также можно установить значение 1, если хотите чтобы Firefox автоматически выбрал самый быстрый вариант между DNS или DoH; 3 – чтобы использовался только DoH; 4 – теневой режим (зеркалирование): запускает DoH параллельно со стандартным DNS для синхронизации и измерений, но использует только результаты стандартного DNS; 0 – чтобы отключить DoH по умолчанию, 5 – чтобы отключить DoH по выбору

  • через строку поиска найти параметр network.trr.uri, дважды щелкнуть по нему и ввести адрес сервера DNS-over-HTTPS. По умолчанию там уже стоит https://mozilla.cloudflare-dns.com/dns-query, но можно указать и https://dns.google.com/experimental
  • найти параметр network.trr.bootstrapAddress и, дважды щелкнув по нему установить значение 1.1.1.1 (если выбрали Cloudflare), либо 8.8.8.8 (если выбрали Google DNS)

  • найти параметр network.security.esni.enabled и установить его значение в true

  • перезапустите браузер Firefox

 

Вот наглядная демонстрация основных шагов:

 

Проверка работы DoH в Firefox

Для проверки, работает ли DoH и с какими сайтами, введите в адресной строке about:networking#dns

Откроется страница с кэшем DNS и в столбце TRR будет указано значение «true» для сайтов, где используется DoH.

Также можно проверить работоспособность всех настроек безопасности браузера, перейдя по ссылке: https://www.cloudflare.com/ssl/encrypted-sni/

Если все 4 галки зеленые, то поздравляю! Теперь Вы защищены от шпионажа за вашими действиями в Интернет, точнее, за посещаемыми сайтами. И в качестве бонуса, Вы также сможете заходить и на заблокированные РКН сайты без всяких дополнительных VPN!

 

DoH в Google Chrome

Для включения DoH в браузере Google Chrome, надо запустить его со следующими параметрами:

--enable-features="dns-over-https<DoHTrial" --force-fieldtrials="DoHTrial/Group1" --force-fieldtrial-params="DoHTrial.Group1:server/https%3A%2F%2F1.1.1.1%2Fdns-query/method/POST

 

Передать этот параметр можно в Shortcut, через который Вы запускаете Google Chrome. Я делаю это через Панель задач (Taskbar), но можно также создать Shortcut и на десктопе.

Например,

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --enable-features="dns-over-https<DoHTrial" --force-fieldtrials="DoHTrial/Group1" --force-fieldtrial-params="DoHTrial.Group1:server/https%3A%2F%2F1.1.1.1%2Fdns-query/method/POST

 

Для проверки работы DoH с Cloudflare достаточно перейти по ссылке https://1.1.1.1/help

 

 

На этом пока все, пишите Ваши комментарии, вопросы и предложения внизу страницы.

Безопасного всем серфинга!

 

В начало ›

 

Автор: Алексей Николаев, CCIE #27142 (Security)

Метки: DNS, DNS-over-HTTPS, DNS поверх HTTPS, DoH


На главную ›   К списку статей ›