Тематические термины: iPerf, Linux, CentOS, Windows
iPerf является кроссплатформенным приложением и может быть установлен на любую популярную операционную систему. В данной инструкции будет рассмотрена установка сервера на Linux CentOS и клиента как на последнем, так и Microsoft Windows.
По сути, нет отдельного iPerf для сервера или клиента — это один и тот же программный продукт, который может запускаться в режиме сервера или выполнять клиентские команды.
Для начала выполняем установку расширенного репозитория:
yum install epel-release
Устанавливаем iPerf:
yum install iperf3
Открываем порт в брандмауэре:
firewall-cmd –permanent –add-port=5201/tcp
firewall-cmd –permanent –add-port=5201/udp
firewall-cmd –reload
* в данном примере мы открыли порт 5201 (для iPerf по умолчанию) для пакетов TCP и UDP.
Запускаем сервер:
На экране появится:
———————————————————–Server listening on 5201———————————————————–
Сервер ждет запросов.
Напомню, что клиент может быть установлен на любую систему. Также, как в первом случае, выполняем установку клиента на другой компьютер в сети.
После можно сразу выполнить команду:
iperf3 -c 192.168.0.15
* где 192.168.0.15 — iPerf сервер.
На клиенте мы увидим что-то подобное:
[ 4] local 192.168.0.20 port 47068 connected to 192.168.0.15 port 5201[ ID] Interval Transfer Bandwidth Retr Cwnd[ 4] 0.00-1.00 sec 104 MBytes 873 Mbits/sec 10 391 KBytes[ 4] 1.00-2.00 sec 110 MBytes 921 Mbits/sec 4 393 KBytes[ 4] 2.00-3.00 sec 111 MBytes 928 Mbits/sec 1 478 KBytes[ 4] 3.00-4.00 sec 104 MBytes 875 Mbits/sec 5 423 KBytes
* где:
Общие для сервера и клиента:
Для сервера:
Для клиента:
Также самый свежий список ключей можно получить командой:
man iperf3
По умолчанию, программу нужно запускать вручную. Если мы хотим, чтобы сервер запускался автоматически и работал как служба systemd, выполняем инструкцию ниже.
Создаем юнит в systemd со следующим содержимым:
vi /etc/systemd/system/iperfd.service
[Unit]Description=iPerf ServiceAfter=network.target
[Service]Type=forkingPIDFile=/run/iperf3.pidExecStart=-/bin/iperf3 -s -D -I /run/iperf3.pidExecReload=/bin/kill -HUP $MAINPIDRestart=always
[Install]WantedBy=multi-user.target
* где
Перезапускаем systemd:
systemctl daemon-reload
Разрешаем созданный сервис:
systemctl enable iperfd
Запускаем его:
systemctl start iperfd
Проверяем:
systemctl status iperfd
Рассмотрим некоторые команды запросов к серверу для проверки скорости соединения.
Использование UDP
iperf3 -c 192.168.0.15 -u
* сам сервер не нужно запускать в UDP-режиме, так как он принимает любые запросы.
Альтернативные порты
Для этого необходимо сначала запустить сервер на нужном порту:
iperf3 -s -p 443
* кстати, можно запустить несколько процессов iperf одновременно, которые будут слушать на разных портах.* стоит не забывать по настройки брандмауэра. В данном примере понадобиться ввести команды firewall-cmd –permanent –add-port=443/tcp и firewall-cmd –reload.
Теперь можно запускать клиента:
iperf3 -c 192.168.0.15 -p 443
Проверка скорости в течение 30 секунд с интервалами по 2 секунды
iperf3 -c 192.168.0.15 -t 30 -i 2
Несколько параллельных запросов
iperf3 -c 192.168.0.15 -P 3
Отправляем на проверку 3 Гб данных
iperf3 -c 192.168.0.15 -n 3G
Скачиваем iPerf под Windows с официального сайта. Распаковываем архив и запускаем командную строку (cmd). Переходим в распакованную папку (команда cd).
Можем работать с iperf. Команды такие же, как для Linux, например:
iperf3.exe -c 192.168.0.15
Для работы с iPerf в графическом интерфейсе есть различные утилиты, например Iperf3-Cygwin-GUI. Скачиваем архив, распаковываем его и запускаем iperf3cygwingui.bat.
В открывшемся окне для простой проверки нужно только прописать адрес iPerf-сервера и нажать кнопку Run Iperf3:
Однако, на моей практике, программа не заработала, а после запуска зависала (или не запускался iperf3.exe). Проблему удалось решить с помощью скачанного с официального сайта клиента (файлов iperf3.exe и cygwin1.dll), которыми я заменил одноименные файлы в папке bin.
При желании, программу можно также запустить в режиме сервера:
Для работы в графическом интерфейсе также есть популярная программа jperf. Ее можно скачать с сайта sourceforge. Однако, она создана с использованием старой версии iperf, поэтому я не стал уделять ей много внимания. В целом, процесс и внешний вид не сильно отличается от Iperf3-Cygwin-GUI.
Клиент и сервер совместимы, но нужно знать, что по умолчанию, рабочий порт для iPerf — 5001, для iPerf3 — 5201.
Поэтому либо необходимо запускать сервер:
iperf3 -s -p 5001
* также не забываем настроить брандмауэр.
Либо запускаем клиентские запросы командой:
iperf -c 192.168.0.15 -p 5201
Актуальные публичные сервера iPerf можно найти на официальном сайте программы. Внимательно смотрите на описания серверов и рабочие порты.
Пример проверки с использованием сервера во Франции:
iperf3 -c bouygues.testdebit.info -p 5200
или в Индонезии:
iperf3 -c iperf.biznetnetworks.com
Сервер iPerf может обрабатывать только одно подключение одновременно на порту. Поэтому, в условиях публичного использования необходим его запуск на множестве портов одновременно.
В официальной документации это предлагается делать скриптом:
#!/bin/dash/bin/sleep 10/usr/bin/killall iperf3/bin/sleep 0.1/usr/bin/killall -9 iperf3/bin/sleep 0.1if [ `ps -C iperf3 | wc -l` = “1” ]then /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5200 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5201 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5202 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5203 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5204 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5205 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5206 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5207 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5208 -D >/dev/null 2>&1 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5209 -D >/dev/null 2>&1fi
* пример данного скрипта будет работать не на всех системах. При его использовании необходимо внести в него корректировки.
Мы же настроим сервер при помощи systemd. Ранее мы уже создавали один юнит для запуска iperf. Повторяем процедуру с небольшими изменениями.
Создаем юнит со следующим содержимым:
vi /etc/systemd/system/iperfd5205.service
[Unit]Description=iPerfServiceAfter=network.target
[Service]Type=forkingPIDFile=/var/run/iperf3.5205.pidExecStart=-/bin/iperf3 -s -p 5205 -D -I /var/run/iperf3.5205.pidExecReload=/bin/kill -HUP $MAINPIDRestart=always
* если сравнить с ранее созданным юнитом, мы добавили запуск сервера на порту 5205.
Разрешаем юнит и запускаем сервис:
systemctl enable iperfd5205
systemctl start iperfd5205
Повторяем шаги для других портов — создаем для каждого отдельный юнит в systemd. Для публичного сервера лучше создать побольше.
В данный момент сервер обрабатывает другой запрос или он завис. Если мы являемся администратором сервера, перезагружаем его, в противном случае, ждем.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies