Быстрый способ проверить скорость VPN соединения с помощью SSH
Приветствую!
Короткая заметка про то, как проверить скорость Download/Upload с помощью SSH в Linux. Подобная диагностика бывает полезна при анализе проблем, связанных с передачей данных по защищенным каналам связи, таким как VPN.
Присоединяйтесь к нашему каналу в телеграм: t.me/r4ven_me, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат: t.me/r4ven_me_chat.
Демонстрация из статьи выполнялась в среде дистрибутива Linux Mint Debian Edition 6 (Debian 12). Все аналогичным образом будет работать и в других дистрибутивах Linux.
Подготовка
Для работы нам понадобятся:
- доступ к удаленному серверу по SSH;
- утилита контроля пайплайнов –
pv
(pipeviewer); - утилита низкоуровневой передачи данных –
dd
; - утилита вывода содержимого –
cat
.
Из списка выше доустановить потребуется лишь утилиту pv
(крайне полезная вещь). Она есть в стандартных репозиториях:
sudo apt update && sudo apt install pv
Проверка скорости
Сразу стоит отметить, что скорость передачи данных может зависеть от:
- пропускной способности сети;
- производительности CPU, так как SSH использует шифрование;
- настроек SSH, таких как алгоритмы шифрования.
В моем примере для подключения используется имя пользователя на удаленном сервере – ivan и адрес хоста – vpn.r4ven.me (можно указать IP). Замените эти значения в командах на свои.
Отключите VPN и проверьте скорость download с помощью команды:
Будьте осторожны с командой dd
! Чтобы случайно не перезаписать важные данные.
ssh ivan@vpn.r4ven.me dd if=/dev/zero bs=1M count=1024 | pv | cat > /dev/null
Для остановки проверки используйте сочетание клавиш
Ctrl+c
.
И теперь скорость upload:
dd if=/dev/zero bs=1M count=1024 | pv | ssh ivan@vpn.r4ven.me 'cat > /dev/null'
Затем включите VPN и выполните обе команды снова. Если без туннелирования трафика скорость значительно выше, значит факторы, влияющие на скорость передачи данных на самом сервере, где развернут VPN. Если скорость низкая в обоих случаях, вероятно дело в канале до сервера.
Что вообще делают эти команды
1-я команда (Download)
ssh ivan@vpn.r4ven.me dd if=/dev/zero bs=1M count=1024
– генерирует поток нулевых данных (из/dev/zero
) на удалённом сервере с помощью утилитыdd
размером 1 ГБ (1024 блока по 1 МБ) и отправляет их через SSH-соединение;| pv
– на локальной машине с помощью механизма перенаправления измеряет скорость получения по SSH данных;| cat > /dev/null
– перенаправляет поток данных, проходящий черезpv
в псевдоустройство (черную дыру), исключая нагрузку на диск.
2-я команда (Upload)
dd if=/dev/zero bs=1M count=1024
– генерирует поток нулевых данных (/dev/zero
) на локальной машине также с помощью утилитыdd
(1 ГБ);| pv
– измеряет скорость передачи данных;| ssh ivan@vpn.r4ven.me 'cat > /dev/null'
– передает данные через SSH на удалённый сервер также в черную дыру.
Таким образом выполняется синтетическая проверка, которая просто утилизирует канал не создавая при этом никаких файлов.
Если при включенном VPN маршрут до удаленного сервера идет не через туннель
В такой ситуации попробуйте временно добавить маршрут вручную, а после проведения проверок удалить. Но только если удаленный сервер – это не сам сервер VPN!
Вот пример команд:
# проверка маршрута
ip route get <IP_address>
# добавление маршрута через серетвой интерфейс tun0
ip route add <IP_address> dev tun0
# удаление добавленного ранее маршрута
ip route del <IP_address> dev tun0
Где <IP_address>
– IP адрес сервера, а tun0
– это виртуальный сетевой интерфейс вашего туннельного соединения на локальной машине. Замените значения на свои. Узнать их можно с помощью команд:
# ip адрес
ping -c1 vpn.r4ven.me | head -1 | awk -F'[()]' '{print $2}'
# список интерфейсов
ip address
На почитать
- SSH – Безопасное подключение к удалённым хостам: введение | Вороний блог
- Командная строка Linux, перенаправление ввода и вывода: операторы “>”, “<“, “|”
- Поднимаем OpenConnect SSL VPN сервер (ocserv) в docker для внутренних проектов | Вороний блог
- pv — маленькая, но очень полезная утилита | Habr
- Мануал утилиты pv | ubuntu.com (EN)