«Какой DNS лучший для моего региона» — один из самых частых запросов, приводящих читателей на этот сайт, и честный ответ такой: со стороны его никто дать не может. Зато можно объяснить почему и показать, как измерить самому за две минуты.
Почему универсального ответа нет
Cloudflare, Google, Quad9 и остальные крупные резолверы работают по anycast: один и тот же адрес, скажем 1.1.1.1, анонсируется с сотен узлов по всему миру, и ваш запрос попадает на тот, который сеть провайдера считает ближайшим. «Ближайший» в смысле маршрутизации, а не километров. Два соседа в одном городе у разных провайдеров могут общаться с разными узлами: у одного 6 мс, у другого 40.
К этому добавляется кэш. Если домен, который вы запрашиваете, недавно уже разрешался на том же узле, ответ приходит мгновенно. Если нет, резолверу приходится пройти всю цепочку до авторитативного сервера, и тут качество сети провайдера значит больше, чем расстояние. Поэтому хорошее измерение разделяет два случая: запросы из кэша и «холодные» запросы.
Как измерить со своего подключения
Быстрый вариант — тест скорости DNS. Он делает пять раундов запросов к семи резолверам из браузера, со случайными именами, чтобы никто не ответил из кэша, и сортирует их по средней задержке. Ничего не устанавливает и ничего не сохраняет.
Два совета, чтобы результат был полезен:
- Запускайте из той сети, которой реально пользуетесь, а не с телефона по мобильным данным, если настраивать собираетесь домашний роутер.
- Повторите в другое время. Сети провайдеров вечером перегружены, и порядок может измениться.
Если удобнее терминал, dig даёт ту же информацию без посредников:
dig @1.1.1.1 example.com | grep "Query time"
dig @8.8.8.8 example.com | grep "Query time"
dig @9.9.9.9 example.com | grep "Query time"
Первый запрос к каждому резолверу обычно дольше, потому что заполняет кэш; повторите каждую строку два-три раза и берите устойчивое значение. В Windows nslookup время не показывает; используйте тест в браузере или Measure-Command в PowerShell.
Какие цифры считать хорошими
- Меньше 20 мс: отлично. Так бывает, когда у резолвера есть узел в вашем городе или соседнем.
- 20–50 мс: совершенно нормально. При просмотре сайтов разницы с предыдущей категорией вы не заметите.
- 50–100 мс: приемлемо, но на страницах, подгружающих ресурсы с множества доменов, начинает сказываться.
- Больше 100 мс: почти наверняка для вас есть вариант лучше.
И цифра, которая важнее задержки: потери. Резолвер, отвечающий за 8 мс, но не отвечающий на 10 % запросов, хуже резолвера с 25 мс, который отвечает всегда, потому что каждый потерянный запрос — это секунда-две ожидания, пока система повторит попытку. В нашем измерении из Мадрида DNS.WATCH терял 77 % запросов, а Comodo 42 %; ни один из них не вариант, как бы быстро он ни отвечал, когда отвечает.
Что мы измерили из Мадрида, для примера
При ответе из кэша Quad9 ответил за 5 мс, а Cloudflare, CleanBrowsing, DNS4EU и xdp.es за 6, всё из сети Telefónica. Google за 7. В холодном режиме, с принудительным полным разрешением, Cloudflare показал 22 мс, остальные держались в пределах 30–35, кроме небольших или сильно фильтрующих резолверов, которые перевалили за 100.
Эта таблица описывает конкретную сеть в конкретный день. Если вы в Мадриде у Telefónica, она вам пригодится; если в Москве, Алматы или Минске, она лишь ориентир того, как выглядит хорошая цифра.
Что меняется по регионам
Россия и СНГ. Локальные резолверы, прежде всего Яндекс DNS, обычно выигрывают у западных по задержке за счёт близости сети: у Cloudflare и Google узлы в Москве и Петербурге есть, но маршрут через провайдера может уводить в Европу. Учитывайте и то, что отдельные публичные резолверы у некоторых провайдеров работают нестабильно, так что измеряйте именно у себя.
Европа. У крупных игроков узлы почти во всех столицах, разница между ними — несколько миллисекунд. DNS4EU — европейский публичный резолвер, из Испании отвечает так же быстро, как Cloudflare.
Ближний Восток и Северная Африка. Покрытие узлами сильно различается по странам, а пиринговые соглашения каждого провайдера меняют результат даже внутри одного города. Здесь измерение не совет, а единственный путь.
Азия. В Китае и вокруг него локальный AliDNS обычно быстрее западных; тест включает его, чтобы сравнение оттуда было честным.
Частая ловушка: провайдер перехватывает DNS
Если в тесте все резолверы показывают почти одинаковое время и одинаковые результаты, насторожитесь. Некоторые провайдеры перехватывают DNS-трафик на порту 53 и отвечают сами, какой бы адрес вы ни указали. Вы измеряете не Cloudflare, а своего провайдера с вписанным адресом Cloudflare.
Тест в браузере использует DNS поверх HTTPS, который так перехватить нельзя, поэтому его цифры — цифры настоящего резолвера. Если это ваш случай, настройка DoH или DoT в системе — способ добиться, чтобы выбранный DNS действительно вас обслуживал.
Основной и дополнительный
Когда узнаете, какой быстрее, поставьте его основным. Дополнительный используется только когда основной не отвечает: это не распределение нагрузки, так что сочетать «самый быстрый и самый безопасный» в надежде на лучшее от обоих почти бессмысленно. Ставьте два от одного провайдера или самый быстрый и следующий за ним. Инструкции по настройке показывают, куда вписывать каждый в Windows, macOS, Android, iOS и роутере.