Как пользоваться утилитой iperf на компе с ос windows, ее установка и опции

Bug Report for iPerf3

Before submitting a bug report, try checking out the latest version of the code, and confirm that it’s not already fixed.
Then submit to the iPerf3 issue tracker on GitHub: https://github.com/esnet/iperf/issues

Known Issues

The following problems are notable known issues, which are probably of interest to a large fraction of users or have high impact for some users, and for which issues have already been filed in the issue tracker. These issues are either open (indicating no solution currently exists) or closed with the notation that no further attempts to solve the problem are currently being made:

  • UDP performance: Some problems have been noticed with iperf3 on the ESnet 100G testbed at high UDP rates (above 10Gbps). The symptom is that on any particular run of iperf3 the receiver reports a loss rate of about 20%, regardless of the “-b“ option used on the client side. This problem appears not to be iperf3-specific, and may be due to the placement of the iperf3 process on a CPU and its relation to the inbound NIC. In some cases this problem can be mitigated by an appropriate use of the CPU affinity (“-A“) option. (Issue #55)
  • Interval reports on high-loss networks: The way iperf3 is currently implemented, the sender write command will block until the entire block has been written. This means that it might take several seconds to send a full block if the network has high loss, and the interval reports will have widely varying interval times. A solution is being discussed, but in the meantime a work around is to try using a small block size, for example “-l 4K“. (Issue #125, a fix will be released in iperf 3.1)
  • The “-Z“ flag sometimes causes the iperf3 client to hang on OSX. (Issue #129)
  • When specifying the TCP buffer size using the “-w“ flag on Linux, the Linux kernel automatically doubles the value passed in to compensate for overheads. (This can be observed by using iperf3’s “–debug“ flag.) However, CWND does not actually ramp up to the doubled value, but only to about 75% of the doubled value. Some part of this behavior is documented in the tcp(7) manual page. (Issue #145)

Tuning a UDP connection

iPerf creates a constant bit rate UDP stream. This is a very artificial stream, similar to voice communication but not much else.

You will want to adjust the datagram size (-l) to the size your application uses.

The server detects UDP datagram loss by ID numbers in the datagrams.
Usually a UDP datagram becomes several IP packets. Losing a single IP packet will lose the entire datagram.
To measure packet loss instead of datagram loss, make the datagrams small enough to fit into a single packet, using the -l option.
The default size of 1470 bytes works for ethernet. Out-of-order packets are also detected.
(Out-of-order packets cause some ambiguity in the lost packet count;
iPerf assumes they are not duplicate packets, so they are excluded from the lost packet count.)
Since TCP does not report loss to the user, I find UDP tests helpful to see packet loss along a path.

Описание всех параметров

Для просмотра всех возможных параметров с описанием (на английском), достаточно запустить iperf без параметров.

В большинстве случаев вполне достаточно запуска c параметрами по умолчанию, как это указано выше в разделе «Использование», для тонкой настройки привожу описание всех параметров iPerf3:

Общие:

-p, —port #  установить порт для прослушивания/подключения (по умолчанию 5001 для iperf2 и 5201 для iperf3)

-f, —format   формат отчёта: Kbits, Mbits, KBytes, MBytes

-i, —interval #  пауза между периодическими отчётами, в секундах

-F, —file name указывает файл который будет передаваться в качестве нагрузки вместо псевдослучайной последовательности

-A, —affinity n/n,m  запуск с привязкой к конкретному ядру процессора (только для linux)

-B, —bind <host>  привязка к хосту, интерфейсу или групповому адресу

-V, —verbose  вывод подробной информации

-J, —json  вывод в JSON формате

—logfile f  вывод лога в файл

 -d, —debug  вывод дополнительной информации для отладки

 -v, —version  вывод версии

 -h, —help вывод списка параметров

Только для сервера:

 -s, —server  запуск в режиме сервера

 -D, —daemon  запуск в режиме сервера как процесс (демон)

 -I, —pidfile file  создать PID файл

 -1, —one-off  закрыть сервер после отработки одного подключения

Только для клиента:

 -c, —client <host> запуск в режиме клиента и подключиться к серверу по адресу <host>

 -u, —udp использовать UDP, вместо TCP

 -b, —bandwidth #  задать пропускную способность в бит/сек (по умолчанию без ограничений для TCP и 1 Мбит/сек. для UDP)

 -t, —time #  длительность измерения в секундах (по умолчанию 10 сек)

 -n, —bytes #  количество байт, после передачи которых остановить измерение (вместо длительности по времени -t)

 -k, —blockcount #  количество блоков (пакетов), после передачи которых остановить измерение (вместо длительности -t или объема -n)

 -l, —len #  размер буфера для записи/чтения (по умолчанию 128 KB для TCP и 8 KB для UDP)

 —cport <port>  задать локальный порт подключения (по умолчанию рандомный порт)

 -P, —parallel #  количество параллельных потоков

 -R, —reverse запуск в обратном направлении (сервер будет отправлять, клиент принимать

 -w, —window #  размер TCP window size / размер буфера

 -C, —congestion <algo> выбрать алгоритм управления перегрузками TCP (только Linux и FreeBSD)

 -M, —set-mss #  задать максимальный размера сегмента TCP/SCTP (MTU-40 байт)

 -N, —no-delay задать TCP без задержки (отключение алгоритма Нэйгла)

 -4, —version4  использовать только IPv4

 -6, —version6  использовать только IPv6

 -S, —tos N  задать «тип сервиса» IP

 -L, —flowlabel N  задать IPv6 flow label (только Linux)

 -Z, —zerocopy использовать «zero copy» метод передачи данных (меньше загрузка CPU)

 -O, —omit N  не учитывать измерение первых N секунд

 -T, —title str  префикс для каждой выводимой строки

 —get-server-output  выводить результаты серверной части

Как пользоваться iperf

Для примеров я буду использовать сервер с адресом 192.168.0.101. Адрес клиента не имеет значения. Сначала необходимо запустить серверную часть программы. Для этого выполните:

Вы можете сразу указать в каких единицах измерения хотите видеть результаты. Для этого используется опция -f. Доступны такие варианты:

  • k – килобиты;
  • m – мегабиты;
  • g – гигабиты;
  • K – килобайты;
  • M – мегабайты;
  • G – гигабайты;
  • T – терабайты.

Аналогично для сервера можно задать порт с помощью опции -p. По умолчанию он работает на порту 5201:

В любом случае, если на сервере установлен брандмауэр, то вам надо разрешить в нём подключение к порту 5201 или тому, который вы выбрали. Например, для ufw команда будет выглядеть так:

sudo ufw allow 5201

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

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 секунд:

По умолчанию утилита выводит промежуточный результат каждую секунду, вы можете изменить это поведение с помощью опции -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

Copyright

iperf, Copyright (c) 2014-2017, The Regents of the University of
California, through Lawrence Berkeley National Laboratory (subject
to receipt of any required approvals from the U.S. Dept. of
Energy). All rights reserved.

If you have questions about your rights to use or distribute this
software, please contact Berkeley Lab’s Technology Transfer
Department at TTD@lbl.gov.

NOTICE. This software is owned by the U.S. Department of Energy.
As such, the U.S. Government has been granted for itself and others
acting on its behalf a paid-up, nonexclusive, irrevocable,
worldwide license in the Software to reproduce, prepare derivative
works, and perform publicly and display publicly. Beginning five
(5) years after the date permission to assert copyright is obtained
from the U.S. Department of Energy, and subject to any subsequent
five (5) year renewals, the U.S. Government is granted for itself
and others acting on its behalf a paid-up, nonexclusive,
irrevocable, worldwide license in the Software to reproduce,
prepare derivative works, distribute copies to the public, perform
publicly and display publicly, and to permit others to do so.

This code is distributed under a BSD style license, see the LICENSE
file for complete information.

Установка iperf3

Чтобы пользоваться утилитой, сначала необходимо свежую версию программы. На приведенной странице представлены сборки для ОС семейства Windows от XP до Win10. Там же можно найти варианты утилиты и для других операционных систем.

Можно распаковать загруженный архив в любую папку, но лучше выбрать для этой цели системный каталог Windows. Тогда при запуске командной строки к работе с утилитой можно приступить сразу же. К примеру, открыв окно CMD, можно сразу будет написать команду iperf3.exe -c 192.168.13.10 или любую другую.

Существуют варианты утилиты в типичном оконном Windows-исполнении. Примером такой программы служит iperf3 cygwin с gui-интерфейсом. Работать с подобными приложениями неподготовленному пользователю проще. Однако они имеют ограниченный функционал и часто выдают ошибки.

Iperf – утилита для тестирования пропускной способности сети.

Наткнулся на интересную статью про утилитку для тестирования пропускной способности сети. Имеется одно приложение, крайне зависимое от всё этой фигни, и каким то образом надо протестить и найти слабое место. Для начала просто опубликую статью, а потом сам напишу небольшой обзор, с тестом. Понеслась.

Как поступить, если необходимо произвести нагрузочное тестирование канала связи, маршрутизатора и при этом остаться при своих деньгах? Не знаете? Спросите меня :). Выход есть.
Заходим на сайт http://dast.nlanr.net/projects/Iperf/ (для линуксоидов http://www.netperf.org/) и скачиваем утилиту iperf (для Linux качаем netperf). Сразу замечу, что обе утилиты используют один и тот же протокол связи, и поэтому вполне возможно запустив сервер под Linux, генерировать трафик клиентом под Windows.

Внимание! Утилита работает под Windows 2000 и выше. Возможно, она запустится и под NT, но достоверных сведений об этом не обнаружено, а сам я не проверял ввиду отсутствия доступа к последней. В комплект утилиты входит документация, в которой расписаны ключики для запуска исполняемого файла

Всё довольно подробно, поэтому я здесь расскажу о примерах использования iperf и особенностях работы с ним

В комплект утилиты входит документация, в которой расписаны ключики для запуска исполняемого файла. Всё довольно подробно, поэтому я здесь расскажу о примерах использования iperf и особенностях работы с ним.

Прежде всего, нам необходимы два компьютера. Одини из них будет генерировать трафик, он называется клиентом, а другой – принимать пакеты и вести подсчёт статистики, он называется сервером. На обоих машинах запускается один и тот же исполняемый файл, но с разными ключами.

Теперь примеры.

Проверка на TCP трафике.

Сервер

Клиент

Здесь server_host – адрес машины, на которой запущен iperf в режиме сервера. Вот, собственно и всё. Сначала запускаем сервер, затем клиент, и в течение 10 секунд между ними будет идти трафик, после чего соединение будет разорвано и выведена статистика.

Чтобы увеличить продолжительность соединения, необходимо добавить в строку запуска клиента параметр -t nsec, где nsec – продолжительность соединения в секундах.

Не менее полезным будет ключик -i nsec. Здесь nsec соответствует периоду (в секундах, естественно), через который будет выводиться статистика.

Проверка на UDP трафике.

Для запуска iperf в режиме UDP необходимо добавить и клиенту и серверу ключи -u.

Протокол UDP более “тупой”, что даёт нам как некоторые преимущества, так и недостатки. Впрочем, для целей тестирования, недостатки опять-таки превращаются в преимущества.

Итак, что мы можем:

  • менять длину передаваемых пакетов
  • менять полосу передаваемого трафика
  • работать на односторонних каналах
  • использовать iperf без запуска сервера, если канал не сквозной, а необходимо просто генерировать заданный трафик для нагрузки

Для изменения длины пакета используется ключ -l length. Следует только помнить, что при length=0 реальная длина Ethernet-фрейма будет составлять 54 байта и делать в своих расчётах соответствующую поправку.

Для изменения полосы трафика используется ключ -b bandwidth. Параметр bandwidth выражается в битах в секунду и может содержать десятичную точку и суффиксы k и M, соответствующие приставкам кило- и мега-.

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

Запуск нескольких потоков трафика.

Мы можем запустить несколько экземпляров клиентов и серверов на одной и той же машине. Для развязки трафика используется назначение разных портов при помощи параметра -p port его значение на клиенте и соответствую щем сервере должно быть одинаковым (по умолчанию, он имеет значение 5001).

Практика показала, что при запуске нескольких клиентов на одной машине, iperf захватывает практически все ресурсы ЦП, из-за чего в некоторых потоках возможно пропадание пакетов. Здесь, видимо, имеется некая ошибка в коде, вызывающая некорректную работу при context switching. Всё вышеуказанное справедливо для iperf. Netperf работает под Linux вполне корректно.

В файлах помощи вы найдёте ещё параметр -S, позволяющий устанавливать значение Type Of Servise (TOS) в IP заголовке. Вынужден вас разочаровать, под Windows это не работает. (Что характерно, я не смог установить это поле и в стандартном ping для Windows).

Взято с берлоги инженера

Public iPerf3 servers

iPerf3 servers will only allow one iPerf connection at a time. Multiple tests at the same time is not supported.
If a test is in progress, the following message is displayed: “iperf3: error – the server is busy running a test. try again later”

iPerf3 server Characteristics Localization Datacenter Hosting Speed Port IP version Contact
bouygues.iperf.fr Linux 5.3 FranceÎle-de-France Telehouse 2Paris Voltaire 10 Gbit/s 9200 TCPto9222 TCP IPv4 and IPv6 @lafibreinfo
ping.online.netping6.online.netping-90ms.online.netping6-90ms.online.net IPv4 onlyIPv6 onlyIPv4 +90ms latencyIPv6 +90ms latency FranceÎle-de-France OnlineVitry DC3 10 Gbit/s 5200 TCP/UDPto5209 TCP/UDP IPv4 or IPv6
speedtest.serverius.net(Port 5002: add -p 5002) Netherlands Serveriusdatacenter 10 Gbit/s 5002 TCP/UDP IPv4 and IPv6 @serveriusbv
iperf.eenet.ee Estonia EENet Tartu 5201 TCP/UDP IPv4 only @EENet_HITSA
iperf.volia.net Ukraine Volia Kiev 5201 TCP/UDP IPv4 only @voliaofficial
iPerf3 server Characteristics Localization Datacenter Hosting Speed Port IP version Contact
iperf.it-north.net Linux 3.16Debian 8 Kazakhstan Petropavl 1 Gbit/s 5200 TCP/UDPto5209 TCP/UDP IPv4 only Brauninger A.F.
iperf.biznetnetworks.com Linux 2.6.32CentOS 6 Indonesia Biznet – MidplazaCimanggis 1 Gbit/s 5201 TCPto5203 TCP IPv4 and IPv6 Biznet Networks
iPerf3 server Characteristics Localization Datacenter Hosting Speed Port IP version Contact
iperf.scottlinux.com USACalifornia HurricaneFremont 2 1 Gbit/s 5201 TCP/UDP IPv4 and IPv6 @scottlinux
iperf.he.net USACalifornia HurricaneFremont 1 5201 TCP/UDP IPv4 and IPv6 HE forums

To add / remove a public iPerf3 server, please report them to vivien16@gueant.org

Script to host a iPerf3 server with Linux (Ubuntu / Debian)

iPerf3 not allow multiple tests to a server => it is necessary to start several iPerf processes for not having the message iperf3: error — the server is busy running a test. try again later
Systemd script to start 41 iPerf3 server (port 9200 to port 9240).
sudo adduser iperf —disabled-login —gecos iperf
sudo nano /etc/systemd/system/iperf3-server@.service

The «Restart = always» allows to restart iperf3 after one hour (RuntimeMaxSec = 3600) to limit the cases of no response or when the iperf3 server has ended abruptly.

sudo systemctl daemon-reload
To activate iperf3 when the server starts up:
for p in $(seq 9200 9240); do sudo systemctl enable iperf3-server@$p ; done

sudo reboot

To view the status and logs of iPerf3 :sudo systemctl status iperf3-server@*
sudo journalctl -u iperf3-server@*

To disable iperf3 when starting the server :for p in $(seq 9200 9240); do sudo systemctl disable iperf3-server@$p ; done

Установка iperf3 в CentOS 7 и 8

В CentOS 8 с установкой Iperf3 еще проще, так как это пакет является уже частью стандартных репозиториев, чтобы его поставить просто введите:

yum install iperf3

Если мы имеем дело с CentOS 7 и ниже, то нужно добавлять репозиторий epel-release

yum install epel-release

Открытие портов Iperf на CentOS

После того. как вы произвели инсталляцию пакета, вам необходимо открыть порты, которые будет слушать ваша служба при подключении к ней. Напоминаю, что порты по умолчанию у iperf и iperf3, это 5201. Для решения этой задачи мы выполним две команды:

firewall-cmd —permanent —add-port=5201/tcp

firewall-cmd —permanent —add-port=5201/udp

firewall-cmd —reload

Проверим слушает ли сервер входящие подключения по порту 5210, для этого выполните:

iperf3 -s

Iperf и windows.

Iperf не входит в стандартный дистрибутив windows, поэтому его надо скачать, например тут

Далее, необходимо поместить этот файл для удобства на диск С:

Если вы 2 раза кликните на то, что скачали, утилита запуститься и сразу «вылетит». Пользоваться ей надо следующим образом

  1. Зайдите в командную строку Пуск->выполнить->cmd или если Windows 10 в поиске необходимо набрать Cmd, он сам автоматически найдет то, что нам нужно.
  2. В открывшейся командной строке, надо перейти в папку, куда вы поместили скаченный iperf, в нашем случае она будет лежать на диске C:/, выполнив команду: cd c:/
  3. Чтобы запустить iperf, например, в режиме клиента, необходимо выполнить команду: iperf -c -t 30 -i 10, где -t — время теста, -i — интервал обновления данных теста

Как видим, исходящая скорость исходящая скорость до сервера x.x.x.201 в среднем 15 мегабит\сек

Примеры использования iPerf

Рассмотрим некоторые команды запросов к серверу для проверки скорости соединения.

Использование 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

Reverse Option: iPerf Version 2 vs 3

iPerf version 2 and 3 are currently maintained in parallel from two different teams. iPerf has been around for more than 15 years; iPerf 3 was created with the goal of a smaller and simpler code base, as well as offering a library for integrating with other code.

The two versions are incompatible with each other, and there are only a few differences in terms of the options and functionalities that they offer. In this post, I wanted to focus on a subtle difference that I often have to explain, even to network engineers that have been using iPerf for a while.

Regular iPerf Test

The client of an iPerf test is the host that sends data to the server, as depicted  in this image:

The sequence of events is as follows:

  1. The server iperf.netbeez.net starts listening on port 5000 (iperf -s -p 5000)
  2. The client starts the test towards the server (iperf -c iperf.netbeez.net -p 5000)
  3. The server accepts the connection
  4. The client detects that the connection with the server is successful
  5. The client starts uploading data to the server
  6. The client finishes the data upload prints the results and exits

This sequence is common on both versions.

This setup measures upload speed from the client to the server. Both iPerf versions have the option to measure download speed by setting the appropriate flag.

On version 2 the flag is “-r” and on version 3 it’s “-R”. However, the name of the option is not the only difference – let’s see how they differ.

Reverse iPerf Version 2

When you give the “-r” option there are two steps for the test:

Step 1: The client runs an upload speed exactly as described in the previous section:

Step 2: The server initiates a connection towards the client and uploads the test data

Cut down troubleshooting time and prove it’s not the network.

Request 15-day trial!

The problem with this implementation is that the host that initiates the test (iPerf client) needs to be accessible from the server in order to accept the new connection and receive the traffic. In many cases, this may not be possible. For example, if the client is NAT’ed or, if there are firewall rules that prevent incoming connections, then the reverse iPerf version 2 test fails.

Reverse iPerf Version 3

When you give the “-R” option to iPerf 3 then the test runs as follows:

The sequence of events is as follows:

  1. The server iperf.netbeez.net starts listening on port 5000 (iperf3 -s -p 5000)
  2. The client starts the test towards the server (iperf3 -c iperf.netbeez.net -p 5000 -R)
  3. The server accepts the connection
  4. The server starts uploading data to the client
  5. The server finishes the data upload and the client prints the results and exits

The subtle difference here is that the server uses the already established connection from the client to upload the data. This setup doesn’t have the problem that version 2 has, where the test fails if the client can’t accept the connection from the server.

Obviously, the version 3 reverse option is preferable for this reason. This gives you the option to run an upload and download test from and to the client without any restrictions.

Свой публичный сервер

Сервер iPerf может обрабатывать только одно подключение одновременно на порту. Поэтому, в условиях публичного использования необходим его запуск на множестве портов одновременно.

В официальной документации это предлагается делать скриптом:

#!/bin/dash
/bin/sleep 10
/usr/bin/killall iperf3
/bin/sleep 0.1
/usr/bin/killall -9 iperf3
/bin/sleep 0.1
if
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>&1
fi

* пример данного скрипта будет работать не на всех системах. При его использовании необходимо внести в него корректировки.

Мы же настроим сервер при помощи systemd. Ранее мы уже создавали один юнит для запуска iperf. Повторяем процедуру с небольшими изменениями.

Создаем юнит со следующим содержимым:

vi /etc/systemd/system/iperfd5205.service

Description=iPerfService
After=network.target
 

Type=forking
PIDFile=/var/run/iperf3.5205.pid
ExecStart=-/bin/iperf3 -s -p 5205 -D -I /var/run/iperf3.5205.pid
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
 

WantedBy=multi-user.target

* если сравнить с ранее созданным юнитом, мы добавили запуск сервера на порту 5205.

Перезапускаем systemd:

systemctl daemon-reload

Разрешаем юнит и запускаем сервис:

systemctl enable iperfd5205

systemctl start iperfd5205

Повторяем шаги для других портов — создаем для каждого отдельный юнит в systemd. Для публичного сервера лучше создать побольше. 

Установка iperf на CentOS 8

Ранее, я так же установил CentOS 8 в тестовой среде. Хочу отметить, что если вы попытаетесь добавить репозиторий epel-release командой:

yum install epel-release или yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

То он успешно установится, но когда вы попытаетесь сделать поиск iperf по нему, то обнаружите, что восьмая ветка не содержит данной утилиты.

dnf repository-packages epel list | grep -i iperf

Как я и писал выше не желательно устанавливать epel 7 и 8 версии репозитория, я лично в такой ситуации просто выхожу подобным образом. Я открываю сайт https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/ и ищу нужный мне пакет, копирую на нужный мне прямую ссылку.

Далее я устанавливаю в CentOS 8 пакет wget, для этого выполняем:

yum install wget -y

Далее скачиваем пакет, ссылку на который мы заранее выяснили.

wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/i/iperf-2.0.13-1.el7.x86_64.rpm

Далее производим установку iperf2 в системе, через выполнение команды:

rpm -ivh iperf-2.0.13-1.el7.x86_64.rpm

Так же для CentOS 8 рекомендуется включить репозиторий PowerTools, поскольку пакеты EPEL могут зависеть от пакетов из него

dnf config-manager —set-enabled PowerTools

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector