Speedtest CLI на сервере: проверка скорости канала из консоли
Установка Speedtest CLI от Ookla на Linux-сервер без репозитория, выбор ближайшего тестового сервера, чтение результата и проверка IPv4/IPv6. Ubuntu, Debian, AlmaLinux.

Speedtest CLI — консольная версия speedtest.net от Ookla. Запускается на сервере без графики и показывает задержку, скорость загрузки и отдачи и потери пакетов. Это самый быстрый способ понять, упирается ли ваш проект в канал сервера или проблема где-то дальше по маршруту.
Ниже — установка из готовой сборки, выбор правильного тестового сервера (по умолчанию Speedtest иногда промахивается на другой континент) и разбор типичных ошибок.
1. Установка
Официальный скрипт установки через репозиторий поддерживает не все дистрибутивы: на Debian 12 он отвечает This distribution version is not currently supported. Надёжнее взять готовый бинарник с сайта Speedtest — он работает на любом Linux и не тянет зависимостей.
# Сборка для 64-битных серверов x86_64
curl -LO https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz
# Распаковываем только сам бинарник в /usr/local/bin
tar -xzf ookla-speedtest-1.2.0-linux-x86_64.tgz -C /usr/local/bin speedtest
# Архив больше не нужен
rm ookla-speedtest-1.2.0-linux-x86_64.tgz
speedtest --version
Сборки для ARM и свежие версии — на официальной странице Speedtest CLI. Команды одинаковы для Ubuntu, Debian и AlmaLinux, потому что пакетный менеджер не задействован.
2. Первый запуск
speedtest
При первом запуске программа попросит принять лицензию — напишите YES и нажмите Enter. Больше спрашивать не будет.
Для запуска из скриптов или по cron условия принимаются сразу ключами:
speedtest --accept-license --accept-gdpr
Тест расходует трафик. Один прогон на гигабитном порту съедает 1–2 ГБ. Если на тарифе ограничен месячный трафик, не ставьте Speedtest в cron каждые пять минут.
3. Выбор ближайшего сервера
Speedtest определяет местоположение по IP-адресу и подбирает тестовый сервер сам. Для серверных подсетей геолокация часто врёт, и тест уходит на другой конец света: задержка 150 мс, скорость вдвое ниже реальной.
Правильнее выбрать сервер вручную — в том же городе, где стоит VPS. Список серверов по названию города можно вытащить из API speedtest.net. Заодно команда покажет, есть ли у сервера IPv6 — это пригодится ниже.
# Вместо Frankfurt подставьте Amsterdam, Helsinki, Moscow и т.д.
curl -s "https://www.speedtest.net/api/js/servers?engine=js&search=Frankfurt&limit=8" | python3 -c '
import json, socket, sys
for s in json.load(sys.stdin):
try:
socket.getaddrinfo(s["host"].split(":")[0], None, socket.AF_INET6); ip = "IPv4 + IPv6"
except OSError:
ip = "только IPv4"
print(s["id"], "|", s["sponsor"], "|", ip)'
Число в начале каждой строки — номер сервера. Запускаем тест на него ключом -s:
speedtest -s 31120
4. Как читать результат
| Поле | Что значит |
|---|---|
| Server | Сервер и город, с которым шёл тест |
| Idle Latency | Задержка в покое. Чем меньше, тем лучше |
| Download | Скорость загрузки — как быстро сервер получает данные |
| Upload | Скорость отдачи — как быстро сервер отправляет. Для сайтов, VPN и раздачи файлов важна именно она |
строки с ms под скоростями |
Задержка под нагрузкой. Если сильно выше Idle Latency — канал забит |
| Packet Loss | Потери пакетов, норма 0.0% |
| Result URL | Ссылка на результат на speedtest.net, удобно приложить к тикету |
Ожидания: на порту 1 Гбит/с нормальный результат 850–900 Мбит/с, остальное уходит на служебные заголовки. На порту с меньшей полосой результат будет чуть ниже её номинала.
5. IPv4 и IPv6
Если у вашего сервера есть IPv6 и у тестового сервера он тоже есть, Speedtest пойдёт по IPv6. Маршруты по двум протоколам различаются, поэтому и цифры могут отличаться, особенно задержка.
Чтобы проверить скорость именно по IPv4, выберите из списка шага 3 сервер с пометкой «только IPv4» — Speedtest сам подключится к нему по IPv4.
Проверить, что IPv6 на сервере вообще работает:
ping -6 -c 4 2606:4700:4700::1111
0% packet loss — работает. Network is unreachable или полные потери — IPv6 не настроен. Для теста скорости это не страшно, Speedtest переключится на IPv4.
Ключи
-iи-Iне переключают протокол. Они выбирают исходящий адрес и интерфейс. Если указать IPv4-адрес, а сервер с IPv6, тест упадёт сCannot open socket. Выбирайте сервер «только IPv4».
Полезные ключи
| Команда | Что делает |
|---|---|
speedtest -L |
Ближайшие серверы по мнению Speedtest |
speedtest -s НОМЕР |
Тест на конкретный сервер |
speedtest -a |
Автоподбор единиц: Кбит/с, Мбит/с, Гбит/с |
speedtest --progress=no |
Без полосы прогресса, для логов |
speedtest -f json |
Результат в JSON для скриптов |
speedtest --help |
Все ключи |
Частые ошибки
«This distribution version is not currently supported» — так отвечает скрипт установки из репозитория на новых системах. Ставьте бинарник из шага 1.
Сервер в другой стране, пинг больше 100 мс — геолокация по IP промахнулась. Найдите сервер в своём городе и укажите его через -s. По той же причине speedtest -L может показывать далёкие серверы.
«Connection refused» или «Cannot open socket» — выбранный тестовый сервер не принял соединение. Если тест продолжился на другом сервере — ничего делать не нужно, если остановился — выберите другой номер.
«Could not retrieve or read configuration» — не удалось связаться со speedtest.net. Проверьте интернет на сервере: curl -I https://www.speedtest.net. Если запускали с -i и IPv6-адресом — уберите ключ, у сайта speedtest.net нет IPv6.
Скорость заметно ниже тарифной — сначала убедитесь, что тестовый сервер рядом и пинг маленький. Потом повторите на два-три разных сервера: медленным бывает сам тестовый сервер. Если скорость низкая везде — приложите несколько Result URL к обращению в поддержку tanaka.host.
Удаление
Программа — один файл:
rm /usr/local/bin/speedtest
rm -r ~/.config/ookla # настройки и принятая лицензия
Speedtest проверяет канал до ближайшего узла. Если нужно измерить скорость между двумя своими серверами — это iperf3, а если скорость в норме, а сайт всё равно тормозит у конкретных клиентов — трассировка mtr.