Легкое современное бенчмаркинг DNS для Linux

Вопрос или проблема

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

Сейчас я использую 8.8.8.8 с dnsmasq для разрешения имен. Одно из того, что хорошо работало в прошлом, это использование namebench для выбора DNS-сервера. Я запускал его с моего настольного компьютера.

На Windows это был загрузка менее 10 МБ. На Ubuntu…

Это требует 256 дополнительных пакетов и 492 МБ места. Это нормально для моей переполненной системы, но на минимальном программном обеспечении маршрутизатора это будет громоздко, и я бы предпочел удерживать эту систему как можно легче.

Мне нужна лучшая, более актуальная альтернатива.

Предварительные требования:

  • Должен работать на Ubuntu 18.04
  • Должен быть как можно легче – и я не хочу 10 МБ приложения с 400 МБ зависимостей.
  • Мне будет удобно с компиляцией, но было бы неплохо, если бы он находился в репозиториях. Я в порядке, если это PPA
  • Должен быть актуальным – namebench последний раз обновлялся 8 лет назад.
  • Чистое консольное приложение – мне не нужен и не хочется GUI.

Просто используйте dig. Он установлен нативно как часть базовой системы с Ubuntu (он входит в пакет dnsutils в системах, производных от Debian, таких как Ubuntu, название пакета отличается в других дистрибутивах Linux), предоставляет легкую информацию о времени для самого запроса и работает очень быстро.

Использование в вашем случае будет что-то вроде этого:

dig @1.1.1.1 one.one.one.one. ALL

Первый аргумент (с @) указывает, какой сервер запрашивать (в данном случае, публичный DNS-сервер CloudFlare). Второй аргумент – это доменное имя для поиска (в данном случае, одно из стандартных имен для DNS-сервиса CloudFlare). Последний аргумент говорит вернуть все записи, связанные с доменом (это важно, если вы используете систему, которая имеет как IPv4, так и IPv6).

Это должно предоставить вывод, похожий на следующий:

; <<>> DiG 9.12.2-P2 <<>> @1.1.1.1 one.one.one.one. ALL
; (1 сервер найден)
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- код операции: QUERY, статус: NOERROR, id: 4695
;; флаги: qr rd ra; ЗАПРОС: 1, ОТВЕТ: 2, АВТОРИТЕТ: 0, ДОПОЛНИТЕЛЬНЫЙ: 1

;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 1452
;; СЕКЦИЯ ВОПРОСА:
;one.one.one.one.               IN      A

;; СЕКЦИЯ ОТВЕТА:
one.one.one.one.        259     IN      A       1.1.1.1
one.one.one.one.        259     IN      A       1.0.0.1

;; Время запроса: 28 мс
;; СЕРВЕР: 1.1.1.1#53(1.1.1.1)
;; КОГДА: Пн Ноя 12 15:09:27 EST 2018
;; РАЗМЕР MSG получен: 76

;; Получен ответ:
;; ->>HEADER<<- код операции: QUERY, статус: NXDOMAIN, id: 43564
;; флаги: qr rd ra ad; ЗАПРОС: 1, ОТВЕТ: 0, АВТОРИТЕТ: 1, ДОПОЛНИТЕЛЬНЫЙ: 1

;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 1452
;; СЕКЦИЯ ВОПРОСА:
;ALL.                           IN      A

;; СЕКЦИЯ АВТОРИТЕТА:
.                       9078    IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2018111201 1800 900 604800 86400

;; Время запроса: 25 мс
;; СЕРВЕР: 1.1.1.1#53(1.1.1.1)
;; КОГДА: Пн Ноя 12 15:09:27 EST 2018
;; РАЗМЕР MSG получен: 107

Часть, которая вас интересует, это первая строка, которая говорит ;; Время запроса:, которая сообщает вам, сколько времени прошло с момента, когда ваша система отправила запрос, до момента получения ответа от сервера.

Существует еще одно большое преимущество использования dig для таких вещей. Если вы используете доменное имя, IP-адрес которого вам известен, вы можете быть уверены, что получаете правильные данные для него. Вы также можете протестировать известное фиктивное доменное имя (например, www.bogus.bogus.) и подтвердить, что у вас есть статус NXDOMAIN, как и должно быть (некоторые провайдеры, особенно интернет-провайдеры, перенаправляют их на рекламные страницы вместо того, чтобы сказать, что оно не указывает ни на что).


В качестве альтернативы, почему бы просто не настроить ваш DNS-резольвер на вашем маршрутизаторе для запроса нескольких серверов? Хорошие резольверы либо запрашивают все настроенные серверы параллельно (в результате чего автоматически используют информацию с самого быстрого, потому что получают ответ от него первым), либо они ведут информацию о том, как хорошо каждый из них работает, и предпочитают запрашивать быстрые (Unbound – это пример сервера, который это делает).

Ответ или решение

Легкое современное бенчмаркинг DNS для Linux

Если вы настраиваете собственный маршрутизатор на базе Ubuntu 18.04 и хотите оптимизировать работу DNS, то вам не обязательно прибегать к тяжелым утилитам, таким как namebench. Вместо этого, вы можете использовать встроенные инструменты, такие как dig, чтобы провести легкую и быструю проверку производительности DNS-серверов.

Преимущества использования dig

  1. Легковесность: dig является частью пакета dnsutils, который поставляется с большинством дистрибутивов Linux и не требует громоздких зависимостей.
  2. Быстрота: dig предоставляет мгновенную информацию о времени ответа DNS-запроса, что позволяет легко сравнивать производительность различных DNS-серверов.
  3. Консольное приложение: Подходит для использования на минимальных системах без графического интерфейса.

Установка dig

Обычно dig уже включен в вашу систему. Чтобы убедиться, что он установлен, вы можете выполнить следующую команду:

dig -v

Если dig не установлен, вы можете установить его с помощью следующей команды:

sudo apt update
sudo apt install dnsutils

Как использовать dig для бенчмаркинга DNS

Процесс бенчмаркинга состоит в выполнении DNS-запросов к различным серверам и сравнении времени ответа. Вот пример использования dig для выполнения запроса к DNS-серверу Cloudflare (1.1.1.1):

dig @1.1.1.1 one.one.one.one. ALL
Примеры результата

Вывод команды будет содержать секцию, показывающую время запроса:

;; Query time: 28 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)

Основная строка, которую вам следует обратить внимание, — это ;; Query time:, которая показывает, сколько времени занял запрос к серверу. Вы можете протестировать различные DNS-серверы, такие как 8.8.8.8 (Google DNS) или 9.9.9.9 (Quad9), и сравнить время ответа.

Проверка на корректность данных

Дополнительно, вы можете использовать доменное имя, для которого вы знаете IP-адрес, чтобы убедиться, что сервер возвращает корректные данные. Например, для тестирования на ошибки можно попробовать запросить несуществующий домен:

dig @1.1.1.1 www.bogus.bogus.

Вы должны получить статус NXDOMAIN, подтверждающий, что домен не существует.

Альтернативы и советы

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

Заключение

Использование dig для бенчмаркинга DNS в Ubuntu 18.04 — это эффективный и легковесный метод, который позволяет удобно анализировать производительность различных DNS-серверов. Такой подход не только поможет вам улучшить работу вашего маршрутизатора, но и позволит вам оставаться в курсе текущих тенденций в области сетевых технологий.

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

Капча загружается...