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.