Итак, идём на ftp компании Nominum и забираем архив с исходниками последней версии (2.0.0.0-1 на момент написания):
user@server:~/build$ wget ftp://ftp.nominum.com/pub/nominum/dnsperf/2.0.0.0/dnsperf-src-2.0.0.0-1.tar.gz
user@server:~/build: tar xvf dnsperf-src-2.0.0.0-1.tar.gz
Чтобы скомпилировать dnsperf потребуется поставить несколько пакетов:user@server:~/build$ sudo apt-get install libkrb5-dev libcap-dev libbind-dev libxml2-dev libssl-dev build-essential
Для сборки требуется заголовочный файл "isc/hmacsha.h", который по какой-то причине отсутствует в дебиановском пакете libbind-dev (увидите "dns.c:46:25: error: isc/hmacsha.h: No such file or directory"), поэтому скачиваем исходники bind'а и ручками копируем необходимый файл в /lib/include: user@server:~/build$ apt-get source bind9
user@server:~/build$ sudo cp bind9-9.7.3.dfsg/lib/isc/include/isc/hmacsha.h /usr/include/isc/
Обращаю внимание что исходники можно скачать не из-под рута (вообще под рутом лучше не сидеть). "bind9-9.7.3.dfsg" - имя каталога с исходниками bind'а.Компилируем/собираем:
user@server:~/build$ cd dnsperf-src-2.0.0.0-1
user@server:~/build/dnsperf-src-2.0.0.0-1$ ./configure
user@server:~/build/dnsperf-src-2.0.0.0-1$ make
Дабы не захламлять систему предпочел не устанавливать dnsperf, а запускать прямо из каталога с исходниками. Если таки соберётесь устанавливать, то воспользуйтесь checkinstall.Для тестов требуется файл с запросами к ns-серверу следующего формата:
<имя_записи> <тип_записи>
Пример файла:
user@server:~/build/dnsperf-src-2.0.0.0-1$ cat testqueries.txt
yandex.ru A
ya.ru A
google.com A
yandex.ru MX
google.com MX
На ftp-сервере Numinum есть тестовый файл с безумным количеством зон.Теперь наконец-то можно приступить к тестированию:
user@server:~/build/dnsperf-src-2.0.0.0-1$ ./dnsperf -p 53 -d testqueries.txt -s my-ns-server.org -l 60
[Status] Sending queries (to xxx.xxx.xxx.xxx)
[Status] Started at: Tue Oct 9 17:52:02 2012
[Status] Stopping after 60.000000 seconds
[Timeout] Query timed out: msg id 56113
[Status] Testing complete (time limit)
Statistics:
Queries sent: 4065386
Queries completed: 4065385 (100.00%)
Queries lost: 1 (0.00%)
Response codes: NOERROR 4007017 (98.56%), SERVFAIL 39824 (0.98%), NXDOMAIN 18544 (0.46%)
Average packet size: request 33, response 86
Run time (s): 60.001270
Queries per second: 67754.982520
Average Latency (s): 0.001462 (min 0.000098, max 0.023186)
Latency StdDev (s): 0.000741
Вкратце опишу параметры утилиты dnsperf:
- -a local_address - адрес, с которого будут отправлены запросы
- -b bufsize - размер буферов приёма и отправки в килобайтах
- -c clients - количество имитируемых клиентов, для каждого клиента используется свой сокет для отправления (порт)
- -d datafile - путь к файлу с запросами, если он не указан dnsperf будет брать запросы из стандартного ввода (stdin)
- -D - добавляет к отправляемым запросам бит DO (DNSSEC OK)
- -e - включает EDNS0, добавляя к отправляемым пакетам запись OPT (RFC 2671)
- -f family - указывает какой протокол будет использовать для отправки:
inet - IPv4
inet6 - IPv6
any - IPv4 и IPv6 - -h - показать помощь
- -l limit - указывает время тестирования в секундах
- -n runs_through_file - сколько раз будет прогнан файл запросов
- -p port - указывает на какой порт сервера будут отправлены запросы
- -q num_queries - максимальное число отправляемых запросов
- -Q max_qps - ограничивает количество отправленных запросов в секунду
- -s server - сервер, которому будем отправлять запросы
- -t timeout - таймаут для запросов
- -u - использовать динамические запросы, требуется другой формат входного файла. Возможно позже его опишу
- -v - включаем режим отладки, будут отображены некорректные запросы (SERVFAIL и т.п.)
- -x local_port - порт с которого будут отправлены запросы
- -y [algorithm:]name:secret - добавляет TSIG-запись ко всем отправленным пакетам. Алгоритм по умолчанию - hmac-md5
Старница диагностических утилит на сайте Numinum: http://www.nominum.com/support/measurement-tools/
Комментариев нет:
Отправить комментарий