Меню
RU

AdGuard представляет первый в мире резолвер DNS-over-QUIC

AdGuard DNS — первый публичный резолвер, который использует новый протокол DNS-over-QUIC. Мы невероятно гордимся и рады, что добились такого и можем предоставить нашим пользователям возможность первыми опробовать его в деле. Сейчас мы расскажем вам, что это такое, какие у него есть плюсы и минусы, а главное, как его использовать.

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

Что такое QUIC?

Чтобы разобраться в тонкостях DNS-over-QUIC, логично сначала понять, что такое QUIC. Так что давайте сделаем один шажок назад, чтобы затем сделать два шага вперёд.

QUIC — это относительно новый транспортный протокол. Проще говоря, он передаёт пакеты информации между серверами или между сервером и клиентом. Есть разные способы сделать это (другие протоколы), вы наверняка слышали о старом добром TCP, который в основном использовался в сети в последние десятилетия.

По сравнению с TCP, у QUIC выше скорость, надёжность и лучше шифрование. Помимо этого, он решает несколько важных проблем, масштабы которых не были очевидны во времена, когда разрабатывался старый стек протоколов.

Head-of-line blocking

Как упоминалось раньше, долгое время мы жили, используя TCP и другие протоколы, работающие поверх него — TLS, SSL, HTTP. Должно быть, эти аббревиатуры по меньшей мере кажутся вам знакомыми, и неудивительно: они существуют уже давно и прекрасно справляются со своей работой. Но есть одна загвоздка: они хорошо работают в практически идеальных условиях, то есть в сетях с высоким качеством связи. Стоит выйти из дома во внешний мир с его LTE и мобильными сетями в целом, как вы неизбежно наткнётесь на слабый сигнал, медленное соединение и что-либо ещё. И даже внедрение современных стандартов вроде 5G не спасёт от неприятностей — в городе вы запросто найдёте место с плохой связью, взять хотя бы лифты.

Годы с этой проблемой, и вот мы уже в стадии принятия, рассматриваем проблемы со связью как нечто естественное — сеть плохая, поэтому страницы загружаются медленно или не загружаются вообще. Но почему? Мы подходим к теме так называемой Head-of-line blocking. По протоколу TCP пакеты данных передаются порциями. Представьте, что ваш браузер отправляет несколько запросов, а сервер возвращает несколько ответов, скомпонованных вместе в определённом порядке. Стоит одному из них потеряться в пути из-за слабого соединения, и карточный домик рассыпается. Остальные пакеты не могут быть обработаны и остаются в очереди, ожидая, пока потерянный пакет будет отправлен вновь.

По протоколу TCP, если один пакет данных потерялся, остальные не могут быть обработаны

Благодаря особенностям реализации, в случае QUIC данные не остаются в очереди, а обрабатываются сразу по их получении. Если первый пакет данных потерялся из-за слабого сигнала, остальные, тем не менее, будут обработаны без задержки.

По протоколу QUIC другие пакеты данных могут быть обработаны, даже если первый потерялся по пути

Миграция соединения

Мы привыкли к тому, что каждое устройство в интернете однозначно определяется его IP-адресом, и это в каком-то смысле верно. Но представьте себе день обычного человека. Давайте даже возьмём меня в качестве примера. Каждое утро я покидаю комфортную зону дома (и его стабильный Wi-Fi) и еду на работу. Я спускаюсь на лифте, и мой телефон переключается с домашнего Wi-Fi на 4G. Его IP-адрес меняется, а все активные подключения разрываются. Я снова открываю браузер, и он вынужден заново устанавливать соединения с сайтом и моим DOH-сервером, работающем на AdGuard Home. Это занимает время, и я быстро теряю терпение. Затем я добираюсь до офиса, подключаюсь к Wi-Fi, и всё заново.

QUIC разработан с учётом всего этого. Когда он используется, ваш телефон беспрепятственно будет переключаться с одного IP-адреса на другой — это называется connection migration («миграция соединения»). Всё устроено более сложно, и на самом деле QUIC позволяет соединениям пережить изменения конечных адресов, а не только IP-адресов (порт тоже меняется).

DNS-over-QUIC

DNS-over-QUIC — это DNS-протокол, который пользуется преимуществами транспортного протокола QUIC и использует его, чтобы передавать DNS-запросы. Сейчас DoQ находится в стадии черновика стандарта, но это не мешает нам экспериментировать с ним и пробовать его использовать.

Почему не DNS-over-HTTPS

Тут сложнее: в будущем DNS-over-HTTPS также получит поддержку QUIC за счёт использования протокола HTTP/3, построенного как раз на нём. Так что вопрос имеет смысл, и правда, зачем?

Есть сразу несколько причин, но все они сводятся к одному факту: HTTP — не транспортный протокол. Он предназначен для разных целей, но в теории может использоваться и как транспортный протокол. С точки зрения приватности, HTTP-протокол только привносит дополнительные риски для передачи DNS-запросов:

  • HTTP cookies
  • Другие HTTP-заголовки (Authentication, User-Agent, Accept-Language)
  • Больше возможностей fingerprinting для злоумышленников
  • Трекинг, использующий ETag

Каждая из этих проблем может и должна быть учтена на уровне DNS-over-HTTPS клиента, но не забывайте, что клиентов теперь — великое множество. Это и браузеры, и операционные системы, и сторонний софт. Практически невозможно найти клиентское решение для каждого.

AdGuard DNS-over-QUIC

Мы рады первыми из публичных DNS-резолверов реализовать текущую спецификацию DNS-over-QUIC в наших DNS-серверах. Предлагаем вам первыми её протестировать! Самый простой способ это сделать — использовать одно из наших приложений, где DoQ уже поддерживается: AdGuard для Android или AdGuard для iOS.

Как включить DoQ в AdGuard для Android

  • Откройте приложение, а затем боковое меню
  • Перейдите в Настройки > DNS-фильтрация и включите её
  • Выберите любой из DNS-серверов AdGuard из списка доступных серверов
  • В разделе Тип сервера выберите DNS-over-QUIC (экспериментальный)

Как включить DoQ в AdGuard для iOS

  • Откройте приложение, а затем вкладку Защита
  • Включите DNS-защиту и откройте её меню
  • В разделе DNS-сервер выберите любой из доступных DNS-серверов AdGuard
  • Выберите DNS-over-QUIC (экспериментальный) из доступных протоколов

Хотите большего?

Пожалуйста! Вот подборка ссылок, которые пригодятся, если вы хотите по полной использовать все возможности DoQ, а также обладаете определёнными техническими навыками:

  • dnslookup — простая утилита для выполнения DNS-запросов. Поддерживает все популярные протоколы: DoH, DoT, DoQ, DNSCrypt.

  • AdGuard Home — хотите свой собственный DoQ-сервер? Не проблема! AdGuard Home получил поддержку DoQ в последнем релизе. Если ваш AdGuard Home работает как публичный сервер, вы можете настроить в нём шифрование.

  • dnsproxy — AdGuard Home для вас слишком тяжёлый и вам нужен простой forwarder? Используйте dnsproxy — простой DNS-прокси с поддержкой DoH, DoT, DoQ и DNSCrypt.

  • DnsLibs — хотите встроить DoQ в ваше приложение? Возьмите на заметку эту библиотеку на C++, которую мы используем в продуктах AdGuard.

Понравился пост?