Устанавливаем Iperf в Ubuntu Server 14.04

Всем привет! Сегодня совсем вкратце поговорим о такой замечательной утилите, как Iperf. Что это и с чем ее едят можете почитать тут :) :
В официальном репозитории Ubuntu 14.04 доступна как старая (вторая) так и новая (третья) версии Iperf.
root@zabbix1:/home/sysop# apt-cache showpkg iperf
Package: iperf
Versions:
2.0.5-3 (/var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language:
                 File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages
                  MD5: 1b25d29ae979d65c1a67cf08177ba875
 Description Language: en
                 File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty_universe_i18n_Translation-en
                  MD5: 1b25d29ae979d65c1a67cf08177ba875


Reverse Depends:
  iperf:i386,iperf
  mininet,iperf
  bwctl-server,iperf
Dependencies:
2.0.5-3 - libc6 (2 2.15) libgcc1 (2 1:4.1.1) libstdc++6 (2 4.1.1) iperf:i386 (0 (null))
Provides:
2.0.5-3 -
Reverse Provides:
root@zabbix1:/home/sysop# apt-cache showpkg iperf3
Package: iperf3
Versions:
3.0.7-1~ubuntu14.04.1 (/var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_binary-amd64_Packages)
 Description Language:
                 File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_binary-amd64_Packages
                  MD5: 868f6472f9c9d19fbddc8629a2bc01a5
 Description Language: en
                 File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_i18n_Translation-en
                  MD5: 868f6472f9c9d19fbddc8629a2bc01a5


Reverse Depends:
  iperf3:i386,iperf3
Dependencies:
3.0.7-1~ubuntu14.04.1 - libc6 (2 2.2.5) libiperf0 (0 (null)) iperf3:i386 (0 (null))
Provides:
3.0.7-1~ubuntu14.04.1 -
Reverse Provides:
В данной статье я расскажу про установку именно второй версии. Сначала как обычно обновим пакеты.
sudo apt-get update
sudo apt-get upgrade
Теперь собственно устанавливаем вторую версию Iperf.
sudo apt-get install iperf
Посмотрим установленную версию.
root@zabbix1:/home/sysop# iperf -v
iperf version 2.0.5 (08 Jul 2010) pthread
Для проверки работоспособности iperf в качестве клиента, протестируем скорость нашего интернет-канала, используя публично доступный сервер. Вот тут есть список.
root@zabbix1:/home/sysop# iperf -c ping.online.net
------------------------------------------------------------
Client connecting to ping.online.net, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 172.20.0.25 port 47033 connected with 62.210.18.40 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  66.0 MBytes  55.2 Mbits/sec
Как видно, все работает. Далее запустим Iperf в качестве демона. Для этого используем команду, приведенную ниже.
root@zabbix1:/home/sysop# iperf -s -D
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
Running Iperf Server as a daemon
The Iperf daemon process ID : 22996
Убить демона соответственно можно следующей командой.
root@zabbix1:/home/sysop# kill -9 PID 22996
bash: kill: PID: arguments must be process or job IDs
А теперь пойдем немного дальше. Лично меня не устраивает, что нужно каждый раз при перезагрузке сервера зайти в консоль и запустить Iperf. Используя за основу скрипт от Zabbix-агента (/etc/init.d/zabbix-agent), был создан скрипт для Iperf. А немного покопавшись в интернете, нашел способ логирования работы серевера Iperf. Ниже итоговый скрипт.
#! /bin/sh
### BEGIN INIT INFO
# Provides:          iperf
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop iperf
### END INIT INFO

set -e

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Server Iperf"
NAME=iperf
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-s --reportstyle C"

test -x $DAEMON || exit 0

PID=/var/run/$NAME.pid
RETRY=15

# define LSB log_* functions.
. /lib/lsb/init-functions

case "$1" in
  start)
    log_daemon_msg "Starting $DESC"
        start-stop-daemon --start --quiet -m --pidfile $PID --exec $DAEMON -- $DAEMON_ARGS >> /var/log/iperf.log &
    case "$?" in
        0) log_end_msg 0 ;;
        *) log_end_msg 1; exit 1 ;;
    esac
        ;;
  stop)
    log_daemon_msg "Stopping $DESC"
        start-stop-daemon --oknodo --stop --pidfile $PID --retry $RETRY
    case "$?" in
        0) log_end_msg 0 ;;
        *) log_end_msg 1; exit 1 ;;
    esac
        ;;
  status)
    status_of_proc -p "$PID" "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  *)
    echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
Создаем файл /etc/init.d/iperf, копируем в него скрипт и исполняемым.
chmod +x /etc/init.d/iperf
Ниже приведены команды запуска, проверки статуса и остановки сервиса Iperf.
root@zabbix1:/home/sysop# sudo /etc/init.d/iperf start
 * Starting Server Iperf
root@zabbix1:/home/sysop# sudo /etc/init.d/iperf status
 * iperf is running
root@zabbix1:/home/sysop# sudo /etc/init.d/iperf stop
 * Stopping Server Iperf
Для просмотра логов работы Iperf можно использовать следующие команды
tail -f /var/log/iperf.log
cat /var/log/iperf.log
Добавим Iperf в автозагрузку.
root@zabbix1:/home/sysop# update-rc.d iperf defaults
 Adding system startup for /etc/init.d/iperf ...
   /etc/rc0.d/K20iperf -> ../init.d/iperf
   /etc/rc1.d/K20iperf -> ../init.d/iperf
   /etc/rc6.d/K20iperf -> ../init.d/iperf
   /etc/rc2.d/S20iperf -> ../init.d/iperf
   /etc/rc3.d/S20iperf -> ../init.d/iperf
   /etc/rc4.d/S20iperf -> ../init.d/iperf
   /etc/rc5.d/S20iperf -> ../init.d/iperf
Для удаления из автозапуска скрипта выполните следующую команду
root@zabbix1:/home/sysop# update-rc.d -f iperf remove
 Removing any system startup links for /etc/init.d/iperf ...
   /etc/rc0.d/K20iperf
   /etc/rc1.d/K20iperf
   /etc/rc2.d/S20iperf
   /etc/rc3.d/S20iperf
   /etc/rc4.d/S20iperf
   /etc/rc5.d/S20iperf
   /etc/rc6.d/K20iperf
Вот и все. Надеюсь все объяснил понятными и доступными словами :) Если что, пишите комментарии.

3 комментария: