Вопрос или проблема
В настоящее время я строю и настраиваю свой собственный маршрутизатор на 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
- Легковесность:
dig
является частью пакетаdnsutils
, который поставляется с большинством дистрибутивов Linux и не требует громоздких зависимостей. - Быстрота:
dig
предоставляет мгновенную информацию о времени ответа DNS-запроса, что позволяет легко сравнивать производительность различных DNS-серверов. - Консольное приложение: Подходит для использования на минимальных системах без графического интерфейса.
Установка 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-серверов. Такой подход не только поможет вам улучшить работу вашего маршрутизатора, но и позволит вам оставаться в курсе текущих тенденций в области сетевых технологий.