- How to test the network speed/throughput between two Linux servers
- My sample set up to test the network speed/throughput between two Linux servers
- Step 1 – Installation
- Install iperf on a Ubuntu/Debian Linux server
- A note about installing iperf3 on a Debian/Ubuntu Linux
- Installing iperf on a Fedora latest/RHEL/CentOS 8 Linux server
- A note about installing iperf3 on a CentOS/RHEL/SL/Oracle Linux
- Install iperf on a CentOS/RHEL/Oracle/Scientific Linux server
- A note about installing iperf3 on a CentOS/RHEL/SL/Oracle Linux
- Step 2 – Start an iperf server on serverA (server mode)
- A note about firewall config
- Step 3 – Start an iperf server on serverB (client mode)
- How to use UDP rather than TCP
- How to set number of parallel client threads to run (client mode options)
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Мониторинг пропускной способности и скорости сети в Linux
- Speedtest
- iPerf
- NetHogs
- nload
- CBM – Color Bandwidth Meter
- vnStat
- iftop
- slurm
- Полезно?
- Почему?
- тестирования сети в Линукс
- traceroute
- tcpdump
- ngrep
- mii-tool
How to test the network speed/throughput between two Linux servers
You can test the network speed/throughput between Ubuntu/CentOS/Debian/Fedora Linux or Unix box using the iperf command. Iperf commands show info about bandwidth, delay, jitter, and datagram loss. It is a tool for performing network throughput measurements. It can test either TCP or UDP throughput. To perform an iperf test the user must establish both a server (to discard traffic) and a client (to generate traffic). This page explains how to test the network speed/throughput between two Linux servers.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | Yes |
Requirements | Linux with iperf |
Est. reading time | 8 mintues |
My sample set up to test the network speed/throughput between two Linux servers
Fig.01 Test network speed between two Linux computers
Step 1 – Installation
You need to install iperf as per your Linux distro version. There are two versions of iperf:
The iperf/iperf3 works on Linux, Unix, Windows, *BSD and other operating systems.
Install iperf on a Ubuntu/Debian Linux server
Type the following apt-get command/apt command to install iperf on both servers:
$ sudo apt-get update
$ sudo apt-get install iperf
Here is what we see on Ubuntu 20.04 LTS system:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
A note about installing iperf3 on a Debian/Ubuntu Linux
It is also possible to install iperf3 (latest version) as follows:
$ sudo apt-get install iperf3
Outputs:
Installing iperf on a Fedora latest/RHEL/CentOS 8 Linux server
Type the following dnf command to install iperf on both servers:
$ sudo dnf install iperf
A note about installing iperf3 on a CentOS/RHEL/SL/Oracle Linux
Type the following command:
$ sudo dnf install iperf3
Install iperf on a CentOS/RHEL/Oracle/Scientific Linux server
Type the following yum command to install iperf on both servers (first turn on EPEL repo for CentOS/RHEL 7.x):
$ sudo yum install iperf
If you are using the latest version of Fedora and CentOS/RHEL 8.x try the dnf command as follows:
$ sudo dnf install iperf3
Installing iperf3 on a CentOS or RHEL 8.x server
A note about installing iperf3 on a CentOS/RHEL/SL/Oracle Linux
Type the following command:
$ sudo yum install iperf3
Step 2 – Start an iperf server on serverA (server mode)
Type the following command to run iperf in server mode:
iperf -s
OR
iperf3 -s
Sample outputs:
Please note down the TCP port # 5001 .
A note about firewall config
Please note that you must open TCP port 5001 on the serverA. See how to use ufw to open a port on Ubuntu/Debian Linux:
$ sudo ufw allow from 192.168.149.0/24 to 192.168.149.69 port 5001 proto tcp
CentOS/RHEL/Fedora users need to the port using FirewallD. See how to set up a firewall using FirewallD on CentOS 8:
sudo firewall-cmd —zone=public —add-port=5001/tcp —permanent
It is also possible to change the port by passing the -p option as follows (e.g. open and use TCP port 2323):
iperf -s -p 2323
iperf3 -s -p 4242
Step 3 – Start an iperf server on serverB (client mode)
Type the following command to run in client mode, connecting to 192.168.149.69:
iperf -c
iperf -c
iperf -c 192.168.149.69 -p 2323
iperf -c 192.168.149.69
OR
iperf3 -c
iperf3 -c
iperf3 -c 192.168.149.69 -p 2323
iperf3 -c 192.168.149.69
Sample outputs:
Fig.02: Linux network speed test result
How to use UDP rather than TCP
On the server side:
iperf -s -u
On the client side:
iperf -c 192.168.149.69 -u
How to set number of parallel client threads to run (client mode options)
Pass the -P option:
iperf -c 192.168.149.69 -P 3
You can also set time in seconds to transmit for (default 10 secs) as follows:
iperf -c 192.168.149.69 -P 3 -t 30
Sample outputs:
Here is output from iperf3:
## on the server side ##
iperf3 -s
## on the client side ##
iperf3 -c 192.168.149.69
Sample outputs:
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Мониторинг пропускной способности и скорости сети в Linux
Сегодня в статье рассказываем про инструменты с открытым исходным кодом, которые позволяют вам проверить скорость вашего Интернета и пропускную способность в Linux.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Speedtest
Speedtest — старый фаворит. Это инструмент для проверки скорости загрузки и скачивания с использованием speedtest.net. Он реализован на Python, упакован в Apt, а также доступен с pip. Вы можете использовать его как инструмент командной строки или в скрипте Python.
Установите его с помощью:
Затем запустите его с помощью команды speedtest :
Это быстрая, и пригодная для скриптов утилита, поэтому вы можете запускать его регулярно и сохранять результаты в файл или базу данных для записи скорости вашей сети с течением времени.
Fast — это услуга, предоставляемая Netflix. Его веб-интерфейс расположен на Fast.com, а интерфейс командной строки доступен через npm:
И веб-сайт, и утилита командной строки предоставляют один и тот же базовый интерфейс — это простой тест скорости, и ничего лишнего:
Команда показывает вашу скорость скачивания (download) через Интернет. Чтобы получить скорость загрузки (upload), используйте флаг -u :
iPerf
iPerf (iPerf3) — отличный способ проверить скорость вашей локальной сети (а не скорость Интернета, как это делают два предыдущих инструмента). Пользователи Debian, Raspbian и Ubuntu могут установить его с помощью apt:
iPerf также доступен в Window и Mac
После установки вам понадобятся два компьютера в одной сети, чтобы использовать его (на обоих должен быть установлен iPerf). Один мы будем использовать в качестве сервера.
Узнайте IP-адрес сервера:
Запустите iperf на сервере:
Это компьютер входящих соединений от клиентов. Теперь запустите на втором компьютере iperf с флагом -c и укажите ip-адрес сервера.
NetHogs
NetHogs это утилита для проверки полосы пропускания, который группирует информацию по процессам. Это может быть полезно, чтобы понять кто занимает всю полосу пропускания. NetHogs входит во многие дистрибутивы. Для его установки используйте:
Для запуска используйте:
Вы можете указать определенный интерфейс после команды:
Также у команды есть дополнительные параметры, такие как выбор задержки для частоты обновления -d , информации о версии -V , tracemode -t .
nload
nload позволяет отслеживать сетевой трафик и использование полосы пропускания в режиме реального времени, с большим количеством дополнительной информации, такой как: общий объем передаваемых данных, минимальное и максимальное использование сети и многое другое. Также nload строит графики входящего и исходящего трафика.
- device — выбор интерфейса
- -a — промежуток в секундах, для подсчитывания среднего значения
- -i — стопроцентная планка на графике пропускной способности в kBit/s
- -m — отображение нескольких интерфейсов, без графика
- -t — интервал обновления в миллисекундах
- -u — режим отображения: Bit/s, kBit/s, MBit/s
Для установки используйте:
CBM – Color Bandwidth Meter
CBM — очень простой инструмент, который отображает сетевой трафик на всех подключенных устройствах. Удобство заключается в том, что команды отображаются в нижней части терминала.
Для установки используйте команду:
После этого просто запустите:
vnStat
vnStat — это монитор сетевого трафика, который использует статистику сетевого интерфейса, предоставляемую ядром, что означает что он не будет перехватывать трафик и в результате гарантирует низкую загрузку ЦПУ. Особенность vnStst в том, что он сохраняет все данные в собственной базе.
vnStat также предоставляет веб-интерфейс на основе php для отображения графической статистики. Для настройки веб-интерфейса vnStat в вашей системе должны быть установлены пакеты Apache , php и php-gd .
Для установки используйте команду:
iftop
iftop — это инструмент для мониторинга, который создает обновляемый список сетевых подключений между парами хостов в реальном времени.
Для установки используйте:
Будет произведен запуск с мониторингом всех интерфейсов.
slurm
slurm — это еще один инструмент мониторинга сетевой нагрузки для linux, который показывает результаты в графике ascii.
Команды для установки:
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Полезно?
Почему?
😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Источник
тестирования сети в Линукс
Эта заметка выросла из шпаргалки для самого себя. Мне по работе приходится отлавливать баги в сети. Как проверить скорость в VPN-туннеле? Почему сервер не пингуется? Или пингуется, но не доступен. Кто забил весь канал торрентами? Где пропадают пакеты? Почтовый клиент выдает непонятную ошибку, что произошло на самом деле? Эти и многие другие вопросы периодически возникают у любого пользователя. Под катом описание программ входящих во все современные дистрибутивы, начиная от пинга и до таких экзотических как ngrep. А так же картинками, если картинками можно назвать, копии дампа с консоли.
# ping -n -i 0.2 -s 512 -I eth0 ya.ru
PING ya.ru (93.158.134.8) from 10.0.94.2 eth0: 512(540) bytes of data.
520 bytes from 93.158.134.8: icmp_seq=1 ttl=59 time=17.5 ms
520 bytes from 93.158.134.8: icmp_seq=2 ttl=59 time=15.0 ms
520 bytes from 93.158.134.8: icmp_seq=3 ttl=59 time=14.7 ms
3/3 packets, 0% loss, min/avg/ewma/max = 14.757/15.777/16.899/17.512 ms
520 bytes from 93.158.134.8: icmp_seq=4 ttl=59 time=14.7 ms
^C
Ключ -n означает, что надо выводить IP адреса вместо доменных имен, это полезно если пингуете по IP, тогда не будет тратится время на разрешение доменого имя, а еще, если DNS сервер не доступен это приведет к паузе в несколько секунд. Ключ -i задает интервал между отправкой пакетов, а -s размер пакета. Размер не может быть больше, чем MTU интерфейса. При помощи комбинации ключей -i и -s можно загрузить канал на любую ширину. -I задает имя интерфейса, через который будет отправлен пакет, полезно, если надо обойти таблицу маршрутизации. Чтобы вывести статистику, как я сделал я после третьего пакета, надо послать пингу сигнал SIGQUIT, с клавиатуры это делается Cntr+\
traceroute
#traceroute -N 16 -q 1 -A ya.ru
traceroute to ya.ru (77.88.21.8), 30 hops max, 60 byte packets
1 10.94.171.1 (10.94.171.1) [AS65534] 1.402 ms
2 1.32.108.213.hl.ru (213.108.32.1) [AS47333] 1.618 ms
3 94.122.dsl.westcall.net (195.177.122.94) [AS20485/AS25408] 2.859 ms
4 b0-152.mrouter.r.westcall.net (84.52.109.161) [AS25408] 3.021 ms
5 GW-Yandex.retn.net (87.245.250.102) [AS9002] 3.266 ms
6 aluminium-vlan901.yandex.net (77.88.56.111) [AS13238] 14.037 ms
7 gallium-vlan901.yandex.net (77.88.56.126) [AS13238] 16.517 ms
8 hummer-vlan2.yandex.net (87.250.228.136) [AS13238] 16.443 ms
9 ya.ru (77.88.21.8) [AS13238] 15.809 ms
traceroute показывает маршрут до удаленного хоста. По умолчанию он работает довольно медленно, так как опрашивает каждый роутер на пути пакета, по очереди и по три раза. Вы видите три времени ответа рядом с каждым хостом или три звездочки, если он не отвечает. Но traceroute можно ускорить. Ключ -N показывает сколько шагов пути пакета, они называются хопами, найти за 1 цикл, а -q количество запросов, которые будут отправлены к хосту. Ключ -A показывает номер автономной системы. Автономная система — блок IP сетей, выделенных одному оператору.
#mtr ya.ru
Приведет к такому экрану.
mtr это помесь пинга с трейсроутом. Наглядно видно, где проседает канал. В дебиан-образных дистрибутивах консольная версия ставится из пакета mtr-tiny
tcpdump
Иногда полезно глубже заглянуть, что же происходит в сети. Какие пакеты приходят и уходят. Например, чтобы удостовериться, что пакеты все таки уходят, а не блокируются фаерволом.
Вот что происходит при команде
В соседнем терминале запущен tcpdump
%sudo tcpdump -ni eth1 udp and port 53 and host 10.0.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
13:09:39.038766 IP 10.94.171.10.41440 > 10.0.1.1.53: 24708+ A? ya.ru. (23)
13:09:39.040403 IP 10.0.1.1.53 > 10.94.171.10.41440: 24708 3/2/0 A 77.88.21.8,[|domain]
Расшифровываю вывод. С хоста 10.94.171.10 порт 41440 на 10.0.1.1 порт 53 пошел запрос А записи для адреса ya.ru. 53 порт это протокол DNS следующая строчка это ответ DNS сервера, по адресу 10.0.1.1
Не смотря на название, tcpdump знает множество сетевых протоколов. Ключ -i показывает какой интерфейс будем слушать, -n не запрашивать имена в DNS для IP адресов. Дальше в командной строке идет описание какие именно пакеты мы будем отлавливать. Здесь я не буду описывать команды фильтрации — их множество, остановлюсь только на возможностях. И так можно выбирать с какого и на какой хост идет пакет, с какого и на какой порт и даже диапазон портов. Можно группировать фильтры при помощи скобок и логических слов and, or, not. Выбирать протоколы icmp, arp, tcp, udp подробности в мане.
ngrep
#ngrep -W byline -d eth0 NOTIFY port 5060
interface: eth0 (213.108.32.94/255.255.255.255)
filter: (ip or ip6) and ( port 5060 )
match: NOTIFY
#
U 213.108.33.128:5060 -> 85.114.2.44:5060
NOTIFY sip:85.114.2.44 SIP/2.0.
Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-2c32804.
From: 8126221842 ;tag=4751f3b994a4aca8o0.
To: .
Call-ID: a85b76bd-dc9f6574@192.168.1.2.
CSeq: 22858 NOTIFY.
Max-Forwards: 70.
Event: keep-alive.
User-Agent: Linksys/PAP2T-5.1.6(LS).
Content-Length: 0.
Ключ -W byline форматирует вывод по знакам переноса строки внутри пакета. Это очень удобно для почтовых протоколов или SIP, как в примере. Строка фильтра пакетов формируется так же, как и в tcpdump. Если не указывать какую подстроку ищем, то ngrep будет дампить все подходящие по условую пакеты. Если внутри пакета нет текстовой информации, тогда он обозначается решеткой (#)
И несколько простых утилиток, про которые нужно знать, что они существуют.
Как узнать, через какую запись в таблице маршрутизации пойдет трафик на IP адрес.
# ip route get 10.94.171.10
10.94.171.10 dev eth1.173 src 10.94.171.1
cache mtu 1500 advmss 1460 hoplimit 64
Как посмотреть кто или что забивает канал?
Для этого есть утилита iptraf c интерфейсом основанным на ncurses. При запуске без параметров выводит меню.
Для того, чтобы посмотреть суммарную статистику по интерфейсу
iptraf -d eth0
Для статистики по соединениям
iptraf -i eth0
Например у вас есть VPN туннель. Как проверить его ширину? Самый простой способ это утилита iperf. На одном хосте запускаем ее с ключем -s это будет сервер, который повиснет по умолчанию на порт 5001. С другой стороны запускаем с единственным параметром — адресом нашего сервера.
mii-tool
# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok
Утилитка из пакета net-tools. Показывает скорость физлинка. При ее помощи можно выловить проблему, когда две сетевые карточки не могут автоматически договориться о скорости и в результате будет что-то типа 10 мбит полудуплекс. Редкая проблема, но до сих пор встречается.
За рамками обзора остались nmap и hping. Жду в камментах ссылки на другие полезные программы. Может имеет смысл перенести в какой-нибудь подходящий блог?
Источник