Утилита iperf - это генератор сетевого трафика, предназначенный для проверки скорости и пропускной способности сети. Программа кроссплатформена, и распространяется с открытым исходным кодом. Вы можете использовать её для проверки пропускной способности VPS серверов или для настройки и улучшения производительности сети.
Программа состоит из клиентской и серверной части, поэтому для работы вам понадобится как минимум два компьютера, подключённых к сети. В этой статье мы рассмотрим как установить и как пользоваться iperf. Обратите внимание, что мы будем говорить об последней версии программы iperf3.
Содержание статьи
Установка iperf
Как я уже сказал, программа кроссплатформенная, поэтому вы можете использовать её как в Windows, так и в Linux. Для установки в Ubuntu или Debian выполните:
sudo apt install iperf3
А для установки iperf в CentOS или Fedora:
sudo dnf install iperf3
В Windows программа ставится немного по другому. Просто скачайте утилиту из официального сайта и распакуйте куда-нибудь. Сразу же после этого вы сможете её использовать.
Синтаксис и опции iperf
Поскольку утилита имеет как серверную часть так и клиентскую, надо рассматривать обе отдельно. Для запуска сервера используется такой синтаксис:
$ iperf3 -s опции
Для запуска клиента используется ключ -c, которому надо передать адрес сервера:
$ iperf3 -c адрес_сервера опции
Теперь давайте рассмотрим общие опции программы:
- -p, --port - указать порт для сервера или к какому порту надо подключаться;
- -f, --format - формат выводимых данных, доступны значения: k,m,g,t,K,M,G,T;
- -i, --interval - интервал времени между выводами результата тестирования;
- -F, --file - использовать данные из файла вместо генерации случайных данных;
- -V, --verbose - вывод максимально подробной информации;
- -J, --json - вывод в формате JSON;
- --logfile - записывать информацию в лог файл;
- --forceflush - очищать историю вывода перед выводом следующего результата тестирования;
- -v, --version - версия программы.
Теперь разберемся с опциями только для серверной части:
- -D, --daemon - запустить сервер в фоновом режиме;
- -I, --pidfile - путь для записи PID файла процесса;
- -1, --one-off - обработать только одно подключение клиента, а затем выйти.
У клиентской части опций чуть больше:
- --sctp - использовать SCTP вместо TCP;
- -u, --udp - использовать UDP вместо TCP;
- --connect-timeout - таймаут для первого соединения с сервером в миллисекундах;
- -b, --bitrate - битрейт, для UDP используется по умолчанию 1 Мбит/сек, для TCP не ограничено;
- -t, --time - время одного теста в секундах, по умолчанию 10 секунд;
- -R, --reverse - обратный тест, не клиент отправляет данные серверу, а сервер клиенту;
- -P - количество потоков;
- -w - размер окна TCP;
- -4, --version4 - использовать только IPv4;
- -6, --version6 - использовать только IPv6.
Мы рассмотрели далеко не все опции, а только самые интересные и те, которые будут использоваться в нашей статье. Для просмотра всех опций выполните такую команду после установки программы:
man iperf3
Теперь вы знаете как установить iperf, а также основные её опции, но на этом инструкция не заканчивается. Дальше давайте перейдем к примерам использования iperf3.
Как пользоваться iperf
Для примеров я буду использовать сервер с адресом 192.168.0.101. Адрес клиента не имеет значения. Сначала необходимо запустить серверную часть программы. Для этого выполните:
iperf3 -s
Вы можете сразу указать в каких единицах измерения хотите видеть результаты. Для этого используется опция -f. Доступны такие варианты:
- k - килобиты;
- m - мегабиты;
- g - гигабиты;
- K - килобайты;
- M - мегабайты;
- G - гигабайты;
- T - терабайты.
Например:
iperf3 -s -f K
Аналогично для сервера можно задать порт с помощью опции -p. По умолчанию он работает на порту 5201:
ipref3 -s -p 4000
В любом случае, если на сервере установлен брандмауэр, то вам надо разрешить в нём подключение к порту 5201 или тому, который вы выбрали. Например, для ufw команда будет выглядеть так:
sudo ufw allow 5201
А для firewalld:
sudo firewall-cmd --permanent --add-port=5201/tcp
sudo firewall-cmd --permanent --add-port=5201/udp
sudo firewall-cmd --reload
И если вы хотите запустить программу в фоновом режиме, можете использовать опцию -D и перенаправить вывод в лог файл:
iperf3 -s -D --logfile /var/log/ipref.log
Убедится, что сервер запущен можно с помощью команды ss:
ss -tulpn | grep 5201
Обратите внимание на IP адрес, на котором слушает сервер, звездочка означает IPv4 соединения, а [::] - IPv6. Поэтому, возможно вам придется вручную указать откуда надо ждать подключений:
iperf3 -s -4 -D --logfile /var/log/ipref.log
Теперь к серверу можно подключаться. Для этого используйте опцию -c. Если вы меняли порт сервера, то здесь его надо указать с помощью опции -p:
iperf3 -c 192.168.0.101 -f K
В данном примере тест выполняется 10 секунд. Чтобы понять какая сейчас у вас пропускная способность сети следует смотреть на колонку Bitrate. Обращайте внимание на строки под чертой, они отображают среднее значение. В данном примере было передано 113 мебабайт со скоростью 11534 килобайт в секунду.
По умолчанию утилита выводит промежуточный результат каждую секунду, вы можете изменить это поведение с помощью опции -i. Например, 5 секунд:
iperf3 -c 192.168.0.101 -f M -i 5
А общую продолжительность теста можно задать с помощью опции -t. Например, 30 секунд:
iperf3 -c 192.168.0.101 -f M -i 5 -t 30
По умолчанию клиент отправляет данные серверу. Вы можете использовать опцию -R, чтобы сервер отправлял данные клиенту:
iperf3 -c 192.168.0.101 -f K -R
Если вы хотите видеть вывод сервера на клиенте, достаточно использовать опцию --get-server-output:
iperf3 -c 192.168.0.101 -f K --get-server-output
С помощью опции -P можно указать количество параллельных потоков тестирования, например, два:
iperf3 -c 192.168.0.101 -f K -P 2
Чтобы использовать UDP пакеты вместо TCP используйте опцию -u:
iperf3 -c 192.168.0.101 -f K -u
Если вы хотите узнать скорость работы вашего сетевого провайдера и у вас нет сервера в сети, можете использовать один из публичных iperf серверов. Полный список таких серверов можно найти здесь. Например:
iperf3 -c iperf.volia.net
Выводы
В этой статье мы рассмотрели как пользоваться iperf 3 для проверки пропускной способности сети, а также разобрались как узнать скорость вашего провайдера с помощью публичных серверов iperf. Как видите, всё не так уж сложно. А какие вы используете утилиты для проверки скорости работы сети? Напишите в комментариях!
Если кому нужно пиал когда скрипт для zabix Чтобы мониторить периодически скорость сети. В крон его сунуть и логи забирать:
#!/bin/bash
#IP-адрес Iperf-сервера
server=192.168.0.1
iperf3 -c $server -t 10 -J -f Mbits > iperf3_log
#Скорость Upload
echo "$(date +%FT%T) $(jq -r '.end.streams[0].sender.bits_per_second/1000/1000' iperf3_log) Mbits" >> bandwidth-UPLOAD
#Скорость Download
echo "$(date +%FT%T) $(jq -r '.end.streams[0].receiver.bits_per_second/1000/1000' iperf3_log) Mbits" >> bandwidth-DOWNLOAD
exit
Ураура!!!!!!!!!11111
Васе надо бы к доктору.
ipref3 -s -p 4000 - опечатка
iperf3 -c 192.168.0.101 -f g