iperf3: замер скорости между двумя серверами
Как измерить реальную пропускную способность канала между своими серверами или до публичного узла iperf3, почему одно TCP-соединение не забивает канал и как читать sender/receiver/Retr. Ubuntu, Debian.

Speedtest показывает скорость до ближайшего узла сети, но чаще нужно другое: с какой скоростью пойдёт бэкап между двумя вашими серверами, упрётся ли перенос сайта в канал, сколько реально даёт туннель. Для этого есть iperf3 — он гоняет данные между двумя точками, которые вы выбираете сами, и показывает, сколько прошло по каналу.
Если нужен сервер, с которого удобно смотреть сеть «со стороны», подойдёт любой VPS на tanaka.host: Ubuntu или Debian ставятся при заказе, оплата по дням.
Как устроен замер
iperf3 — одна программа в двух режимах. На одной машине она запускается сервером: открывает порт 5201 и ждёт. На другой — клиентом: подключается и 10 секунд (по умолчанию) шлёт данные так быстро, как позволяет сеть. Обе стороны считают байты за каждую секунду и выводят среднюю скорость. Данные генерируются в памяти и никуда не пишутся, поэтому диск на результат не влияет — меряется именно сеть.
Три вещи, которые влияют на цифры:
- Задержка. TCP не шлёт данные бесконечно без подтверждений: отправил порцию, дождался ACK, расширил окно. Чем дальше серверы, тем дольше каждый круг и тем медленнее одно соединение разгоняется. На дальних маршрутах одно соединение часто не занимает весь канал — помогает замер в несколько потоков (
-P). - Потери. Потерянный пакет TCP трактует как перегрузку и сбрасывает скорость. Число повторных отправок видно в колонке Retr.
- Направление. По умолчанию данные идут от клиента к серверу — вы меряете отдачу клиента. Ключ
-Rразворачивает поток: отправляет сервер. Цифры в две стороны почти всегда разные, это нормально — пути и загрузка каналов туда и обратно не совпадают.
1. Установка
sudo apt update && sudo apt install -y iperf3
AlmaLinux, Rocky: sudo dnf install -y iperf3.
Debian при установке спросит Start Iperf3 as a daemon automatically? — отвечайте No. Сервер iperf3 нужен только на время замера, держать открытый порт постоянно незачем.
Для замера между своими серверами ставьте iperf3 на оба.
2. Замер до публичного сервера
Самая быстрая проверка канала — до публичного узла iperf3. Например, ping.online.net в Париже принимает подключения на портах 5200–5209.
# Отдача: данные идут с вашего сервера
iperf3 -c ping.online.net -p 5200 -t 10
# Приём: данные идут на ваш сервер
iperf3 -c ping.online.net -p 5200 -t 10 -R
Главное в выводе — две итоговые строки под пунктиром:
sender— сколько отправила передающая сторона;receiver— сколько дошло до принимающей. Ориентируйтесь на неё.Bitrate— средняя скорость за весь замер;Retr— число повторных отправок. Десятки-сотни на 10 секунд — на маршруте теряются пакеты.
Строки выше итога — скорость за каждую секунду. Если она скачет в разы, канал неравномерно загружен или есть потери.
Публичный сервер обслуживает один замер за раз. На ошибку
the server is busy running a testберите другой порт из диапазона 5200–5209 или повторите через минуту.
3. Замер между своими серверами
На первом сервере запускаем сервер:
iperf3 -s
Он слушает порт 5201 до Ctrl+C. Если на нём включён брандмауэр, откройте порт на время замера:
sudo ufw allow 5201/tcp
# RHEL: sudo firewall-cmd --add-port=5201/tcp
На втором сервере — клиент:
# От второго сервера к первому
iperf3 -c IP_ПЕРВОГО_СЕРВЕРА -t 10
# В обратную сторону
iperf3 -c IP_ПЕРВОГО_СЕРВЕРА -t 10 -R
# В четыре параллельных потока
iperf3 -c IP_ПЕРВОГО_СЕРВЕРА -t 10 -P 4
После замера остановите сервер и закройте порт: sudo ufw delete allow 5201/tcp.
Не меряйте на одной машине.
iperf3 -c 127.0.0.1показывает скорость копирования памяти, а не сети — десятки гигабит, к каналу отношения не имеющие.
Полезные параметры
| Ключ | Что делает |
|---|---|
-t 30 |
Длительность замера в секундах |
-P 4 |
Несколько параллельных потоков |
-R |
Обратное направление: сервер отправляет клиенту |
-p 5202 |
Другой порт |
-u -b 100M |
Замер по UDP с заданной скоростью 100 Мбит/с |
-4 / -6 |
Принудительно IPv4 или IPv6 |
-J |
Вывод в JSON |
UDP-режим полезен для оценки потерь и джиттера на заданной скорости — например, перед настройкой VPN или голосового сервера: в итоге iperf3 покажет Lost/Total Datagrams.
Частые ошибки
the server is busy running a test. try again later — сервер занят чужим замером. На публичных узлах это обычное дело: другой порт или минуту подождать.
unable to connect to server: Connection refused — на этом адресе и порту никто не слушает. Проверьте, что на первом сервере запущен iperf3 -s и порт тот же.
Подключение висит и заканчивается таймаутом — порт закрыт брандмауэром на стороне сервера. Откройте 5201/tcp.
Скорость ниже ожидаемой:
- Запустите с
-P 4. Если суммарная скорость заметно выше одиночной — одно соединение упирается в задержку, а канал свободен. - Сравните оба направления: с
-Rи без. - Если Retr большой — проверьте маршрут и потери с помощью mtr.
Для низкоуровневого разбора, куда деваются пакеты, пригодится tcpdump.