Linux #Linux #Сеть #Сервер #Ubuntu #Mac

Как проверить скорость и пинг до своего VPS: iperf3 и mtr на реальном примере

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

6 минут 2
Содержание
  1. 1Что понадобится
  2. 2Шаг 1. iperf3 на сервере
  3. 3Шаг 2. iperf3 на своём компьютере
  4. 4Мои результаты и как их читать
  5. 📤 Отдача: компьютер → сервер
  6. 📥 Загрузка: сервер → компьютер
  7. 🔀 Загрузка в 8 потоков
  8. Что это значит
  9. 5Шаг 3. Пинг и потери: mtr
  10. Как читать mtr
  11. 6Шаг 4. Канал самого VPS
  12. 7Шаг 5. Выключите iperf3 на сервере
  13. 8Ошибки, на которые я наткнулся
  14. 9Чек-лист проверки
  15. 10Частые вопросы
  16. Чем iperf3 лучше обычного спидтеста?
  17. Почему скорость в один поток ниже, чем в несколько?
  18. Какой пинг до зарубежного VPS считается нормальным?
  19. Что значит 100 % потерь на узле в mtr?
  20. Безопасно ли оставлять iperf3 включённым на VPS?
  21. Как проверить скорость до VPS с Windows?

У меня есть VPS за границей. Сайты онлайн-спидтестов показывают скорость до своих серверов, а мне интересно другое: сколько выжимает канал именно между моим домом и моим сервером. Для этого есть две консольные утилиты: iperf3 меряет скорость, mtr — пинг и потери на каждом узле маршрута.

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

Что понадобится

  • 🖥️ VPS на Linux с доступом по SSH. У меня Ubuntu 26.04 LTS.
  • 💻 Домашний компьютер. Я мерил с iMac, но команды те же на Linux и почти те же на Windows.
  • 🔓 Открытый на сервере порт 5201 — его использует iperf3.
  • 📴 Выключенный VPN. Иначе вы измерите туннель, а не канал.

Шаг 1. iperf3 на сервере

Подключитесь к VPS по SSH и установите iperf3:

Терминал
apt install iperf3

При установке Ubuntu спросит, запускать ли iperf3 как службу при загрузке:

Терминал
Start Iperf3 as a daemon automatically? [yes/no]

💡 Отвечайте no. Постоянно работающий iperf3 — открытая дверь: любой, кто найдёт порт, сможет гонять через ваш сервер трафик. Я ответил yes и потом получил ошибку, о ней ниже.

Запустите сервер на один замер:

Терминал
iperf3 -s -1

С ключом -1 он примет одно подключение и завершится. Для серии замеров запустите просто iperf3 -s, а потом остановите его сочетанием Ctrl + C.

Если на сервере включён файрвол ufw, откройте порт:

Терминал
ufw allow 5201

Если ufw не установлен (ufw: command not found), этот шаг пропустите. Но проверьте файрвол в панели хостера: там он часто называется «Firewall» или «Группы безопасности».

Шаг 2. iperf3 на своём компьютере

macOS — через Homebrew:

Терминал
brew install iperf3

Ubuntu и Debian: sudo apt install iperf3. Windows: скачайте сборку iperf3 с сайта iperf.fr и запускайте iperf3.exe из папки с ней.

Теперь три замера. Вместо 203.0.113.10 подставьте IP своего VPS.

Терминал
iperf3 -c 203.0.113.10 -t 20          # отдача: компьютер → сервер
iperf3 -c 203.0.113.10 -t 20 -R       # загрузка: сервер → компьютер
iperf3 -c 203.0.113.10 -t 20 -R -P 8  # загрузка в 8 потоков
КлючЧто делает
-cрежим клиента, дальше адрес сервера
-t 20мерить 20 секунд вместо 10 по умолчанию
-Rобратное направление: сервер отправляет, вы принимаете
-P 8восемь параллельных соединений

Мои результаты и как их читать

📤 Отдача: компьютер → сервер

iperf3 -c 203.0.113.10 -t 20
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  4]   0.00-1.00   sec  13.9 MBytes   116 Mbits/sec  590   54.7 KBytes
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec    0   1.33 MBytes
[  4]   2.00-3.00   sec  26.1 MBytes   219 Mbits/sec    0   1.41 MBytes
...
[  4]  18.00-19.00  sec  36.4 MBytes   304 Mbits/sec    0   2.03 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   0.00-20.00  sec   569 MBytes   238 Mbits/sec  604            sender
[  4]   0.00-20.06  sec   567 MBytes   237 Mbits/sec                  receiver

Главное — итог в последних строках: 238 Мбит/с. Что значат колонки:

  • Bitrate — скорость за каждую секунду.
  • Retr — сколько пакетов пришлось отправить повторно, потому что они потерялись. Чем меньше, тем лучше.
  • Cwnd — «окно» TCP: сколько данных соединение отправляет, не дожидаясь подтверждения. Растёт, пока канал справляется.

✅ Здесь всё хорошо. Повторные отправки только в первую секунду, пока TCP нащупывал скорость, потом ноль. Окно растёт, скорость плавно поднимается до 300 Мбит/с.

📥 Загрузка: сервер → компьютер

iperf3 -c 203.0.113.10 -t 20 -R
[  4]   0.00-1.00   sec  18.1 MBytes   152 Mbits/sec
[  4]   1.00-2.00   sec  27.5 MBytes   231 Mbits/sec
[  4]   3.00-4.00   sec  29.9 MBytes   251 Mbits/sec
[  4]   5.00-6.00   sec  19.9 MBytes   166 Mbits/sec
[  4]   8.00-9.00   sec  14.1 MBytes   118 Mbits/sec
...
[  4]  19.00-20.00  sec  16.8 MBytes   141 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   0.00-20.05  sec   377 MBytes   158 Mbits/sec  1344            sender
[  4]   0.00-20.00  sec   373 MBytes   157 Mbits/sec                  receiver

⚠️ Здесь интереснее. Первые пять секунд — 230–250 Мбит/с, потом скорость падает до 120–140 и там остаётся. Повторных отправок 1344: где-то по пути пакеты теряются.

🔀 Загрузка в 8 потоков

iperf3 -c 203.0.113.10 -t 20 -R -P 8 (итог)
[  4]   0.00-20.00  sec   237 MBytes  99.5 Mbits/sec   receiver
[  6]   0.00-20.00  sec   133 MBytes  55.7 Mbits/sec   receiver
...
[ 18]   0.00-20.00  sec   147 MBytes  61.8 Mbits/sec   receiver
[SUM]   0.00-20.00  sec   914 MBytes   384 Mbits/sec   receiver

В восемь потоков вместе — 384 Мбит/с, в 2,5 раза больше, чем в один.

Что это значит

ЗамерРезультат
Отдача, 1 поток238 Мбит/с
Загрузка, 1 поток157 Мбит/с
Загрузка, 8 потоков384 Мбит/с

Канал широкий: восемь потоков легко набирают почти 400 Мбит/с. А одиночное соединение в сторону дома теряет пакеты под нагрузкой и проседает до 130–150. Скорее всего, ограничение на магистрали между странами: на ней одиночный поток упирается в потери, а несколько потоков их обходят.

На практике браузер, торренты и менеджеры загрузок, которые качают в несколько потоков, используют канал почти полностью. Одиночное соединение, например VPN-туннель поверх одного TCP-подключения, будет работать в пределах 130–150 Мбит/с. Для повседневных задач этого хватает с запасом.

Шаг 3. Пинг и потери: mtr

mtr — это ping и traceroute в одном: он показывает каждый узел маршрута до сервера и для каждого считает потери и задержку.

Терминал
brew install mtr                         # macOS
sudo apt install mtr-tiny                # Ubuntu/Debian
sudo mtr -rwc 100 203.0.113.10

Ключи: -r — вывести отчёт и выйти, -w — не обрезать имена узлов, -c 100 — отправить 100 пакетов.

На Mac с процессором Intel Homebrew кладёт mtr в /usr/local/sbin, где sudo его не находит (sudo: mtr: command not found). Запускайте с полным путём:

Терминал
sudo /usr/local/sbin/mtr -rwc 100 203.0.113.10

На Mac с Apple Silicon путь другой: /opt/homebrew/sbin/mtr.

Мой результат, узлы провайдера и магистрали обезличены:

sudo mtr -rwc 100 203.0.113.10
HOST: iMac.local                    Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1                    0.0%   100    0.5   0.5   0.4   0.7   0.0
  2.|-- 10.19.22.1                     0.0%   100    2.3  32.1   2.1 364.0  59.8
  3.|-- 10.1.5.178                     0.0%   100    1.6   3.3   1.2  44.7   6.5
  4.|-- 10.1.5.49                      0.0%   100    1.8   2.4   1.5  11.7   1.7
  5.|-- ???                           100.0   100    0.0   0.0   0.0   0.0   0.0
  6.|-- core1.isp.example              0.0%   100    1.1   2.9   1.0  57.6   8.0
  7.|-- border.isp.example             0.0%   100    6.2  13.9   6.0 185.5  26.6
  8.|-- 198.51.100.70                  0.0%   100    7.5   9.6   7.3 108.7  11.6
  9.|-- 198.51.100.44                  0.0%   100   15.3  15.3  14.8  17.0   0.3
 10.|-- 198.51.100.53                  0.0%   100   14.5  14.7  14.4  18.1   0.4
 11.|-- ???                           100.0   100    0.0   0.0   0.0   0.0   0.0
 12.|-- 198.51.100.178                 0.0%   100   51.5  51.4  51.3  51.8   0.1
 13.|-- ae2.protected-by.zero-lag.net  0.0%   100   54.0  54.1  53.8  54.4   0.1
 14.|-- cr03.eqx.dataforest.net        0.0%   100   54.2  54.1  53.9  54.4   0.1
 15.|-- ???                           100.0   100    0.0   0.0   0.0   0.0   0.0
 16.|-- 203.0.113.10                   0.0%   100   55.2  55.0  54.6  56.3   0.3
КолонкаЧто значит
Loss%процент потерянных пакетов на этом узле
Sntсколько пакетов отправлено
Last, Avgпоследняя и средняя задержка, мс
Best, Wrstлучшая и худшая задержка
StDevразброс задержки: чем меньше, тем стабильнее

Как читать mtr

  • 🎯 Смотрите сначала на последнюю строку — это ваш сервер. У меня 0 % потерь, средний пинг 55 мс, разброс 0,3 мс. Это отличный результат для сервера в Европе.
  • ❓ ??? и 100 % потерь в середине — не проблема. Многие роутеры просто не отвечают на служебные пакеты mtr. Раз следующие узлы отвечают, трафик через них проходит.
  • 📈 Скачки на промежуточных узлах тоже не всегда проблема. У меня на втором узле худший пинг 364 мс, на седьмом — 185 мс. Но дальше задержка снова ровная, значит, эти роутеры просто отвечают на ping в последнюю очередь, а трафик пропускают нормально.
  • 🌍 Где задержка растёт резко и не падает обратно — там расстояние. У меня между 10-м и 12-м узлом пинг вырос с 15 до 51 мс: это перегон из России в Европу.
  • 🚩 Настоящая проблема — когда потери или рост задержки начинаются на каком-то узле и сохраняются до конца маршрута. Это место и есть узкое горлышко.

Шаг 4. Канал самого VPS

Чтобы понять, не упирается ли скорость в сам хостинг, проверьте его канал. Самый простой вариант:

Терминал
apt install speedtest-cli
speedtest-cli
Мой результат
Hosted by Turkcell (Kayseri) [3210.44 km]: 44.249 ms
Download: 147.33 Mbit/s
Upload: 9.37 Mbit/s

Отдача 9 Мбит/с выглядит страшно. Но iperf3 только что показал, что сервер отдаёт мне больше 150 Мбит/с. Дело в утилите: Python-версия speedtest-cli выбрала сервер за 3200 км и плохо меряет отдачу. Поэтому:

  • выберите ближний сервер вручную: speedtest-cli --list | head покажет список, а speedtest-cli --server ID запустит замер с нужным;
  • или поставьте официальный клиент Ookla Speedtest — он точнее;
  • и не верьте одному замеру: сравнивайте с iperf3.

Шаг 5. Выключите iperf3 на сервере

Если вы запускали iperf3 -s вручную, просто остановите его. Если согласились на автозапуск при установке:

Терминал
systemctl disable --now iperf3
Ответ системы
Removed '/etc/systemd/system/multi-user.target.wants/iperf3.service'.

Строка Removed означает, что служба остановлена и убрана из автозапуска.

Ошибки, на которые я наткнулся

unable to start listener for connections: Address already in use — на сервере порт 5201 уже занят. У меня это был iperf3, который запустился как служба после ответа yes при установке. Проверьте, кто держит порт:

Терминал
ss -tlnp | grep 5201

Если там iperf3 — сервер уже работает, просто мерьте с компьютера. Если другая программа — запустите iperf3 на другом порту (iperf3 -s -p 5202) и добавьте -p 5202 к командам на компьютере.

unable to connect to server ... nodename nor servname provided, or not known — компьютер не понял адрес сервера. Я просто забыл подставить IP вместо слова-заглушки из примера 🙈. Если адрес верный, проверьте, что сервер запущен и порт открыт в файрволе.

sudo: mtr: command not found на Mac — запускайте с полным путём, как в шаге 3.

Homebrew собирает пакеты из исходников и пишет This is a Tier 3 configuration — так теперь на всех Mac с Intel: Homebrew прекратил их поддержку. iperf3 у меня ставился около трёх минут, но работает нормально.

Чек-лист проверки

Тем же способом можно проверить и домашнюю сеть, например скорость между компьютером и домашним сервером на Proxmox. Если гигабитная сеть показывает 300–400 Мбит/с, ищите проблему в кабеле, роутере или Wi-Fi.

Частые вопросы

Чем iperf3 лучше обычного спидтеста?

Спидтест меряет скорость до своего сервера, обычно ближайшего к вам. iperf3 меряет канал именно между двумя вашими машинами: домом и VPS, двумя компьютерами в сети, компьютером и NAS. Так видно, сколько реально проходит там, где вам нужно.

Почему скорость в один поток ниже, чем в несколько?

Одно TCP-соединение снижает скорость при каждой потере пакета. На дальних маршрутах с потерями под нагрузкой оно не успевает разогнаться. Несколько соединений делят потери между собой, и в сумме набирают больше. Если разница большая, канал широкий, а ограничение где-то по пути.

Какой пинг до зарубежного VPS считается нормальным?

Из европейской части России до Германии или Нидерландов обычно 40–70 мс, до США — от 120 мс. Важнее стабильность: если разброс (StDev) единицы миллисекунд и потерь на последнем узле нет, канал хороший.

Что значит 100 % потерь на узле в mtr?

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

Безопасно ли оставлять iperf3 включённым на VPS?

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

Как проверить скорость до VPS с Windows?

Скачайте iperf3 для Windows и запускайте те же команды из командной строки в папке с iperf3.exe. Вместо mtr используйте WinMTR или встроенную команду pathping IP_сервера.

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.