Использование Cisco VPN Client на Linux

Стоит у меня несколько Cisco и прокинуты по ним туннели GRE между организациями, объединенные в свою сегментную сеть. Когда работал на форточках, проблем с подключением к сети не было. VPN клиент для Cisco под форточки работает прекрасно, но в связи с полным отказом от Windows возник вопрос запуска сие чуда на Debian. Как оказалось, стандартные средства организации vpn, входящие в состав репозитария системы, не обеспечивают решения данной задачи. Вот такую задачу мы и будем сегодня решать.

Поиски решения данной задачи в Гугле не привели к конкретному решению, поэтому все пришлось ставить путем проб и ошибок. Загруженные клиенты не хотели собираться в Debian. Спросите, почему нельзя получить клиента у поставщика, ответ: клиент может быть загружен только после регистрации и получения определенного статуса, вот так. Не у каждого есть возможность получить соответствующие права для загрузки. Поэтому принято решение получить все необходимое ПО из свободных источников. Предыстория понятна, пора начать все реализовывать. Все действия будем производить в консоли.

user$ su
root# cd /usr/src
root# wget http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
--2009-06-09 04:06:33--  http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
Распознаётся projects.tuxx-home.at... 88.198.57.56
Устанавливается соединение с projects.tuxx-home.at|88.198.57.56|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 2050813 (2,0M) [application/x-gzip]
Сохраняется в каталог: `vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz'.
36% [=============>                         ] 746 577     21,9K/s  ОВП 56s

Клиент загружен (эта копия того, который предлагает Cisco у себя на сайте), теперь распакуем и запустим установку. Стоит заметить, что перед запуском установки стоит проверить, есть у вас исходные коды ядра системы. Если нет, то их необходимо установить. Проверить это можно следующим способом.

root# ls /usr/src
vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

Как видите, здесь лежит только загруженный нами ранее vpn клиент Cisco. Необходимо установить исходники ядра, но перед установкой рекомендую обновить пакеты, дабы не наставить дырявого и устаревшего ПО.

root# aptitude update
root# aptitude upgrade

Систему обновили, теперь посмотрим, что у нас есть по ядрам в пакетах.

root#aptitude search linux-image
v   linux-image                                        -                                                             
v   linux-image-2.6                                    -                                                             
p   linux-image-2.6-486                                - Linux 2.6 image on x86                                      
i   linux-image-2.6-686                                - Linux 2.6 image on PPro/Celeron/PII/PIII/P4                 
p   linux-image-2.6-amd64                              - Linux 2.6 image on AMD64                                    
p   linux-image-2.6-k7                                 - Linux 2.6 image on AMD K7 - transition package              
p   linux-image-2.6.26-1-486                           - Linux 2.6.26 image on x86                                   
i A linux-image-2.6.26-1-686                           - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
p   linux-image-2.6.26-1-686-bigmem                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
p   linux-image-2.6.26-1-amd64                         - Linux 2.6.26 image on AMD64                                 
p   linux-image-2.6.26-1-openvz-686                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ suppor
p   linux-image-2.6.26-1-vserver-686                   - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-1-vserver-686-bigmem            - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-1-xen-686                       - Linux 2.6.26 image on i686, oldstyle Xen support            
p   linux-image-2.6.26-2-486                           - Linux 2.6.26 image on x86                                   
p   linux-image-2.6.26-2-686                           - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
p   linux-image-2.6.26-2-686-bigmem                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
p   linux-image-2.6.26-2-amd64                         - Linux 2.6.26 image on AMD64                                 
p   linux-image-2.6.26-2-openvz-686                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ suppor
p   linux-image-2.6.26-2-vserver-686                   - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-2-vserver-686-bigmem            - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-2-xen-686                       - Linux 2.6.26 image on i686, oldstyle Xen support            
p   linux-image-686                                    - Linux image on PPro/Celeron/PII/PIII/P4

Имеется новое ядро. Вот его и поставим. Напомню, что мы работаем со стабильной веткой Debian, если вы ставите эксперименты на боевой машине (сервере), подумайте хорошо —  сделайте копию. Ставим новое ядро и исходники к нему. Необходимые дополнительные библиотеки aptitude подхватит и установит сам. На всякий случай проверьте установлена ли утилита сборки проектов make. У меня ее почему-то не оказалось.

root# aptitude install linux-image-2.6.26-2-686 linux-headers-2.6.26-2-686 make

Проверяем содержимое …

root# ls -l /usr/src
итого 2020
drwxr-xr-x  4 root root    4096 Июн  9 06:30 linux-headers-2.6.26-2-686
drwxr-xr-x 18 root root    4096 Июн  9 06:30 linux-headers-2.6.26-2-common
drwxr-xr-x  3 root root    4096 Июн  9 06:30 linux-kbuild-2.6.26
-rw-r--r--  1 root src  2050813 Май 20 19:16 vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

Новое ядро установлено, исходные коды ядра тоже на месте, осталось только сделать рестарт системы и можно приступать к настройке и установке vpn клиента для Cisco.

root# reboot

Рестарт системы сделан. У нас имеется архив с клиентом, надо его распаковать и запустить сборку. Приступаем.

user$ su
root# cd usr/src
root# tar xzvf vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
root# cd vpnclient

Далее идут вопросы установщика и сборщика, отвечаем утвердительно.

root# ./vpn_install
Cisco Systems VPN Client Version 4.8.02 (0030) Linux Installer
Copyright (C) 1998-2006 Cisco Systems, Inc. All Rights Reserved.
By installing this product you agree that you have read the
license.txt file (The VPN Client license) and will comply with
its terms.
Directory where binaries will be installed [/usr/local/bin]
Automatically start the VPN service at boot time [yes]
In order to build the VPN kernel module, you must have the
kernel headers for the version of the kernel you are running.
Directory containing linux kernel source code [/lib/modules/2.6.26-2-686/build]
* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.6.26-2-686/CiscoVPN".
* The VPN service will be started AUTOMATICALLY at boot time.
* Kernel source from "/lib/modules/2.6.26-2-686/build" will be used to build the module.
Is the above correct [y]
Making module
make -C /lib/modules/2.6.26-2-686/build SUBDIRS=/usr/src/vpnclient modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
  CC [M]  /usr/src/vpnclient/linuxcniapi.o
  CC [M]  /usr/src/vpnclient/frag.o
  CC [M]  /usr/src/vpnclient/IPSecDrvOS_linux.o
  CC [M]  /usr/src/vpnclient/interceptor.o
  CC [M]  /usr/src/vpnclient/linuxkernelapi.o
  LD [M]  /usr/src/vpnclient/cisco_ipsec.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/src/vpnclient/cisco_ipsec.mod.o
  LD [M]  /usr/src/vpnclient/cisco_ipsec.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
Create module directory "/lib/modules/2.6.26-2-686/CiscoVPN".
Copying module to directory "/lib/modules/2.6.26-2-686/CiscoVPN".
Already have group 'bin'
Creating start/stop script "/etc/init.d/vpnclient_init".
    /etc/init.d/vpnclient_init
Enabling start/stop script for run level 3,4 and 5.
Creating global config /etc/opt/cisco-vpnclient
Installing license.txt (VPN Client license) in "/opt/cisco-vpnclient/":
    /opt/cisco-vpnclient/license.txt
Installing bundled user profiles in "/etc/opt/cisco-vpnclient/Profiles/":
* New Profiles     : sample
Copying binaries to directory "/opt/cisco-vpnclient/bin".
Adding symlinks to "/usr/local/bin".
    /opt/cisco-vpnclient/bin/vpnclient
    /opt/cisco-vpnclient/bin/cisco_cert_mgr
    /opt/cisco-vpnclient/bin/ipseclog
Copying setuid binaries to directory "/opt/cisco-vpnclient/bin".
    /opt/cisco-vpnclient/bin/cvpnd
Copying libraries to directory "/opt/cisco-vpnclient/lib".
    /opt/cisco-vpnclient/lib/libvpnapi.so
Copying header files to directory "/opt/cisco-vpnclient/include".
    /opt/cisco-vpnclient/include/vpnapi.h
Setting permissions.
    /opt/cisco-vpnclient/bin/cvpnd (setuid root)
    /opt/cisco-vpnclient (group bin readable)
    /etc/opt/cisco-vpnclient (group bin readable)
    /etc/opt/cisco-vpnclient/Profiles (group bin readable)
    /etc/opt/cisco-vpnclient/Certificates (group bin readable)
* You may wish to change these permissions to restrict access to root.
* You must run "/etc/init.d/vpnclient_init start" before using the client.
* This script will be run AUTOMATICALLY every time you reboot your computer.

Клиент собрался и установлена поддержка в ядро необходимых протоколов для работы VPN клиента Cisco. Далее необходимо создать конфигурацию и инициализировать клиента. Инициализация требуется один раз, если вы после этого перезапустите систему, то клиент инициализируется сам и при последующих запусках тоже. Если этого не происходит (как в моем случае), то можно произвести инициализацию вручную. Пока не стал разбираться, почему автомат не работает.

root# /etc/init.d/vpnclient_init start

Теперь готовим файл конфигурации:

root# cd /etc/CiscoSystemsVPNClient/Profiles
root# cp sample.pcf имя_нового_профиля.pcf

Если по каким-либо причинам профиль примера не создался, то вот его примерное содержимое:

root# cat sample.pcf
[main]
Description=sample user profile
Host=10.212.20.52
AuthType=1
GroupName=monkeys
EnableISPConnect=0
ISPConnectType=0
ISPConnect=
ISPCommand=
Username=chimchim
SaveUserPassword=0
EnableBackup=0
BackupServer=
EnableNat=1
CertStore=0
CertName=
CertPath=
CertSubjectName=
CertSerialHash=00000000000000000000000000000000
DHGroup=2
ForceKeepAlives=0

Собствено редактирование профиля сводится к некоторым изменениям (чтоб их не вводить вручном режиме постоянно). Ниже выдержка, что необходимо поправить:

root# pwd
/etc/CiscoSystemsVPNClient/Profiles
root# mcedit имя_нового_профиля.pcf

строки для правки:

Description=Краткое описание вашего профиля

Host=IP_адрес_вашей_Cisco

GroupName=Имя_вашей_группы_в_домене

Username=Ваше_имя_в_домене_NT

NTDomain=Имя_вашего_домена

Остальное можно оставить без изменения, но можно и не править ничего, при первом запуске у вас все это спросит клиент и автоматически запишет в файл конфигурации профиля. Подготовка клиента завершена, можно произвести пробное подключение.

root# # vpnclient connect имя_вашего_профиля
Cisco Systems VPN Client Version 4.8.01 (0640)
Copyright (C) 1998-2007 Cisco Systems, Inc. All Rights Reserved.
Client Type(s): Linux
Running on: Linux 2.6.26-2-686 #1 SMP Thu May 28 15:39:35 UTC 2009 i686
Config file directory: /etc/opt/cisco-vpnclient
Initializing the VPN connection.
Contacting the gateway at <span style="color: red; font-weight: bold;">IP_адрес_вашей_Cisco</span>
User Authentication for <span style="color: red; font-weight: bold;">имя_вашего_профиля</span>...
The server has requested the following information to complete the user authentication:
Username [<span style="color: red; font-weight: bold;">Ваше_имя_в_домене_NT</span>]:
Password []:
Authenticating user.
Negotiating security policies.
Securing communication channel.
Your VPN connection is secure.
VPN tunnel information.
Client address: <span style="color: red; font-weight: bold;">Ваш_локальный_адрес</span>
Server address: <span style="color: red; font-weight: bold;">IP_адрес_вашей_Cisco</span>
Encryption: 168-bit 3-DES
Authentication: HMAC-SHA
IP Compression: None
NAT passthrough is active on port UDP 4500
Local LAN Access is disabled

Подключение успешно выполнено. Как видим туннель на удаленную сеть открыт и готов к транспорту пакетов. Отключение можно выполнить банальным сочетанием Ctrl+C или в другой консоли вводом команды разрыва соединения.

root# vpnclient disconnect

В другой консоли можно проверить ping любого адреса в удаленной сети. Можете запускать RDP, VNC или другую систему управления серверами или компьютерами. Адреса указывайте такие, как будто вы находитесь в домашней сети. Все это можно оформить аккуратней, но как всегда лень. Зато у вас будет желание сделать все красивее и качественней. Удачи с экспериментами.

http://www.qdesnic.ru/page/cisco_vpnclient.html

Использование Truecrypt

Загрузка

http://www.truecrypt.org/download/truecrypt-7.1-linux-console-x64.tar.gz

# tar xzvf truecrypt-7.1-linux-console-x64.tar.gz

Получаем исполняемый файл truecrypt-7.1-linux-console-x64.

Установка Truecrypt

Для работы truecrypt’а надо установить дополнительные пакеты:

# aptitude install libfuse2 fuse-utils dmsetup

После установки запускаем, ранее извлечённый из архива, файл truecrypt-7.1-linux-console-x64:

# ./truecrypt-7.1-setup-console-x64
TrueCrypt 7.1 Setup
____________________

Installation options:

 1) Install truecrypt_7.1_console_amd64.tar.gz
 2) Extract package file truecrypt_7.1_console_amd64.tar.gz and place it to /tmp

To select, enter 1 or 2: 1

Before you can use, extract, or install TrueCrypt, you must accept the
terms of the TrueCrypt License.

Press Enter to display the license terms...

Press Enter or space bar to see the rest of the license.

TrueCrypt License Version 3.0

Читаем лицензионное соглашение до самого конца и вводим yes

Do you accept and agree to be bound by the license terms? (yes/no): yes

Requirements for Running TrueCrypt:
-----------------------------------

 - FUSE library and tools
 - device mapper tools

Press Enter to continue...

Uninstalling TrueCrypt:
-----------------------

To uninstall TrueCrypt, please run 'truecrypt-uninstall.sh'.

Installing package...
usr/bin/truecrypt
usr/bin/truecrypt-uninstall.sh
usr/share/truecrypt/doc/License.txt
usr/share/truecrypt/doc/TrueCrypt User Guide.pdf

Press Enter to exit...

Шифрование раздела и создание контейнера

Шифрование раздела и создание контейнера мало чем отличаются. В первом случае, как аргумент команды, указывается раздел, а во втором случае — файл.

При шифровании раздела все данные на нём уничтожаются.

Раздел не надо форматировать перед шифрованием.

Пример:

Шифрование файла:

# truecrypt -c /var/file.txt

Шифрование раздела:

# truecrypt -c /dev/sda8
Volume type:
1) Normal
2) Hidden
Select [1]: 1

На этом этапе выбирается тип создаваемого тома. Normal — обычный, полностью зашифрованный, том. Hidden — незаметный, скрытый том, внутри реального отформатированного раздела. Для реального раздела-донора желательно выбирать раздел с файловой системой FAT32, чтобы внутрь раздела поместилось больше информации и уменьшилась вероятность повреждения скрытого тома.

Encryption algorithm:
1) AES
2) Serpent
3) Twofish
4) AES-Twofish
5) AES-Twofish-Serpent
6) Serpent-AES
7) Serpent-Twofish-AES
8) Twofish-Serpent
Select [1]:

Алгоритм шифрования AES самый быстрый и его, вероятно, лучше выбрать для томов, с которых будут запускаться программы. Для хранения информации можно выбрать любой алгоритм из представленного списка.

Hash algorithm:
1) RIPEMD-160
2) SHA-512
3) Whirlpool
Select [1]:

Просто нажимаю Enter. Первая хэш-функция в самый раз.

Filesystem:
1) None
2) FAT
3) Linux Ext2
4) Linux Ext3
5) Linux Ext4
Select [2]: 5

Файловая система для нового тома. Выбрал ext4.

Enter password:
Re-enter password:

Вводим достаточно длинный пароль. Надо заметить, что лучший пароль это действительно случайный набор символов или псевдослучайный.

Enter keyfile path [none]:

Хорошая мысль создать ключевой файл на удаленном носителе и указать его при шифровании. Главное в дальнейшем его не потерять. Но можно в качестве ключевого файла использовать простой текстовый файл с широко известным текстом.

Please type at least 320 randomly chosen characters and then press Enter:

Done: 100.000%  Speed:   58 MB/s  Left: 0 s

The TrueCrypt volume has been successfully created.

При первом использовании у меня возникла ошибка:

Error: fuse: device not found, try 'modprobe fuse' first

Решается все, соответственно:

# modprobe fuse
# modprobe -l | grep fuse
kernel/fs/fuse/fuse.ko
kernel/fs/fuse/cuse.ko

Процесс завершился и зашифрованный том создан.

Монтирование зашифрованного файла или раздела

Монтирование зашифрованного файла:

# truecrypt /var/file.txt /mnt/secure
Enter password for /var/file.txt:
Enter keyfile [none]:
Protect hidden volume (if any)? (y=Yes/n=No) [No]: n

Монтирование зашифрованного раздела:

# truecrypt /dev/sda8 /mnt

Раздел или файл зашифрован?

Некоторые задают этот вопрос приводя в пример, например, строку из статьи википедии посвящённой Truecrypt’у: Ни один том TrueCrypt не может быть идентифицирован (тома TrueCrypt невозможно отличить от набора случайных данных, то есть файл нельзя связать с TrueCrypt как с программой, его создавшей, ни в какой форме и рамках).

Ещё раз отвечаю, что в этой фразе заключён другой смысл. Тут ясно написано, что увидев раздел или файл со случайными данными нельзя сказать, что он точно зашифрован с применением программы Truecrypt. Просто читать надо до конца фразы.

Шифрованный раздел или файл можно легко отличить от нешифрованного просто глянув на него каким-либо низкоуровневым редактором. Если мы увидим слишком случайные данные, то это уже повод задуматься о шифрованном контенте.

Если очень упростить, то можно сказать, что случайные данные представляют собой набор повторяющихся последовательностей символов, огрызков читаемых данных от каких-то файлов, пустые промежутки. Слишком случайные данные — это набор неповторяющихся символов. Это шум, хаос, всплеск энтропии. Сжать такие «слишком случайные» данные каким-либо архиватором не представляется возможным. Ни один обычный раздел на винчестере не будет содержать в себе кластеры, полностью забитые слишком случайными данными.

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

Вариант использования

Свои разделы для фото- и видео-архивов закриптованы с помощью truecrypt на основе ключевого файла; ключевой файл лежит, например, на постоянно подсоединённой флэшке; в rc.local помещена команда truecrypt для монтирования томов.

Монтирование томов случилось только при явном указании отсутствия пароля и hidden-раздела:

$ /usr/bin/truecrypt -t -p "" --protect-hidden=no --keyfiles=/media/flashka/file /dev/sdc2 /media/photos
$ /usr/bin/truecrypt -t -p "" --protect-hidden=no --keyfiles=/media/flashka/file /dev/sdc3 /media/videos

Счетчик монтирований fsck

Не многие знают, что в Linux есть такой замечательный счетчик монтирований как fsck. Если очередной вызов fsck прекращает загрузку, это значит, что либо есть ошибки в файловой системе и fsck нуждается в Вашем вводе для продолжения, либо Вы просто не дождались отработки fsck, которая требует времени. Загрузка без экрана Вам все это покажет. После успешного завершения fsck проблемы быть уже не должно, разве что Ваша система повреждена и хронически портит файловую систему.

Один из способов обойтись без автоматического запуска fsck заключается в регулярном запуске его вручную, чтобы эти 27 загрузок никогда не выполнялись без проверки. Вы также можете использовать tune2fs для установки интервалов между проверками. Команды

# tune2fs -c 0 /dev/что_то
# tune2fs -i 4w /dev/что_то

будут игнорировать cчетчик подключений первой командой, и проверять каждые четыре недели второй. Отключать проверки совсем крайне неразумно: тогда повреждения файловой системы могут втихомолку накапливаться, пока не произойдет серьезный сбой.

Обновление до версии Debian 6.0

One rather old laptop and one server were the test objects for this howto. Both systems do not have any RAID devices and use a simple partition scheme from a default basic Lenny install. If your setup deviates much from this, it’s highly recommended to read all details of the Debian Release Notes before you continue. Be warned. All commands are run as root and Debian recommends to use apt-get for the Squeeze upgrade process.

As with all upgrades, begin with a backup of your critical data, and that will be the users data in /home/your-users but I would also back up the content of all configurations files. The latter can quickly be archived:

tar -czvf host.etc.tar.gz /etc

Move your files for safe storage on a backup drive.

Edit your Apt source list file

To prepare for the installer, we need to get to a point where the package system is in a clean state. Move the preferences file from the directory if used. If you have a very complicated Debian source file, I would recommend that this is simplified to near the original install.

Open up a command line editor and reduce /etc/apt/source.list to something similar to only:

deb http://ftp.se.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.se.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

Naturally your country code is likely to be different from mine se.

Update the packages for Lenny
With a few commands we will make sure that the existing package system is in good shape before the system is upgraded to Squeeze.

apt-get update

Ready for first upgrade:

apt-get upgrade

Follow this with:

apt-get dist-upgrade

Check that no packages are on hold or in any half installed state

The system usually contains many many packages, and before the real upgrade stage we must fix such problem packages.

Ensure that we do not have any packages on hold with:

dpkg --audit
dpkg --get-selections | grep hold

No packages can be on hold.

For the final go ahead test use:

aptitude

Press g and the list shows which packages need your attention. Fix any packages in the action list, until the message says:

No packages are scheduled to be installed, removed or upgraded

Only then you are done and ready to pass this point.

Update the source list for Squeeze
Update once more the /etc/apt/sources.list:

deb http://ftp.se.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.se.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

and at the command line type:

apt-get update

Squeeze upgrade in two careful steps

It’s recommenced to use a two stage upgrade approach with kernel, udev and the preparation for grub2. After the first completed the full distribution upgrade is performed. Start with the upgrade like so:

apt-get upgrade

Now to the kernel; we need to find your flavor, i.e. the exact version numbers and architecture and install it with:

uname -r
apt-get install linux-image-2.6.26-2-amd64

If the system is old like my laptop it would install with:

apt-get install linux-image-2.6.26-2-686

Prepare grub2 and udev for the new system:

update-grub
apt-get install udev

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

http://linux.koolsolutions.com/2009/05/11/tip-debian-linux-kernel-firmware-issues-ethernet-drivers-missing/

Once previous steps have completed, it’s time to restart the system:

reboot

Almost there

When the system has restarted, continue with the full upgrade phase:

apt-get dist-upgrade

Starting the system with the first menu item shows if grub2 works properly, if so run:

upgrade-from-grub-legacy

which will install grub2 in the Master Boot Record (MBR) on the disk.

Further information are found on Debian main site.

Ограничение скорости для отдельного хоста или подсети

Хотя очень подробные описания темы раздела можно найти в разных местах, в том числе и в справочном руководстве man, тем не менее этот вопрос задается очень часто. К счастью, ответ на него настолько прост, что не нуждается в полном понимании принципов управления трафиком.

Эти три строки сделают все что вам нужно:

tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit

tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit \
allot 1500 prio 5 bounded isolated

tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
match ip dst 195.96.96.97 flowid 1:1

Первая строка — назначает базовую дисциплину на заданный интерфейс и сообщает ядру, что пропускная способность интерфейса составляет 10 Мбит/сек. Если вы установите неверное значение, то особого вреда не будет, однако, всегда стремитесь устанавливать верные значения, это повысит точность вычислений.

Вторая строка создает класс с полосой пропускания 512 Кбит/сек. Подробное описание CBQ содержит раздел Дисциплины обработки очередей для управления пропускной способностью.

Последняя строка говорит о том, какой трафик должен формироваться классом, определенным выше. Трафик, не подпадающий под заданное в фильтре условие, НЕ ОГРАНИЧИВАЕТСЯ! Более сложные примеры назначения условий (подсети, порт отправителя, порт адресата), вы найдете в разделе Наиболее употребимые способы фильтрации.

Если вы внесли какие-либо изменения в сценарий и желаете перезапустить его — предварительно запустите команду tc qdisc del dev $DEV root, чтобы очистить существующую конфигурацию.

Сценарий может быть немного улучшен, за счет добавления в конец дополнительной строки tc qdisc add dev $DEV parent 1:1 sfq perturb 10. За подробным описанием обращайтесь к разделу Stochastic Fairness Queueing.

wav2mp3

Для конвертации WAV файлов в MP3, использую такой shell-скрипт:

#!/bin/bash
for i in *.wav; do
    mp3=$(echo "$i" | sed -e "s/wav/mp3/")
    lame -h -b 128 $i $mp3
done

Битрейт выставлен в 128 kbps.

wav2gsm

В телефонии, и конкретно в системе Asterisk, иногда нужно использовать аудио-формат файлов GSM для воспроизведения звуковых треков, например при выдачи звукового сообщения. Для конвертации из WAV в GSM в Linux есть замечательная утилита sox.

Скрипт wav2gsm.sh ниже конвертирует все файлы в текущей папке из WAV в GSM:

#!/bin/bash
for i in *.wav
do
  sox $i -r 8000 -c 1 $(basename $i .wav).gsm resample -ql -g
done

Без ключика -g получаем ненастоящий GSM-файл:

RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 8000 Hz

А при использовании ключика -g получаем:

RIFF (little-endian) data, WAVE audio, GSM 6.10, mono 8000 Hz

В Windows есть программа для редактирования GSM-файлов: WavePad Audio Editor от компании NCH Software (http://www.nch.com.au/wavepad).

$ sox filename.gsm -r 44100 -a filename.wav
$ sox filename.wav -r 8000 -c 1 -s -w filename.wav resample -ql

 

hdparm

После смены режима жесткого диска (hda) с UDMA5 на UDMA2 начинает работать ide0:

Странным образом hdparm помогает избавиться от ошибок Asterisk:

[Jul  7 12:46:00] NOTICE[18348]: chan_dahdi.c:9099 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1
[Jul  7 12:46:01] NOTICE[18348]: chan_dahdi.c:9099 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1
[Jul  7 12:46:01] NOTICE[18348]: chan_dahdi.c:9099 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1
[Jul  7 12:46:01] NOTICE[18348]: chan_dahdi.c:9099 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1
[Jul  7 12:46:01] NOTICE[18348]: chan_dahdi.c:9099 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1
[Jul  7 12:46:01] ERROR[18348]: chan_dahdi.c:8799 dahdi_pri_error: PTP MDL can't handle error of type I
[Jul  7 12:46:01] ERROR[18348]: chan_dahdi.c:8799 dahdi_pri_error: MDL-ERROR (I): T200 = N200 in timer recovery state 8
[Jul  7 12:46:01] NOTICE[18348]: chan_dahdi.c:9099 pri_dchannel: PRI got event: HDLC Bad FCS (8) on Primary D-channel of span 1
[13:27:57] funtik:~ # hdparm -vi /dev/hda

/dev/hda:
 multcount     =  0 (off)
 IO_support    =  0 (default)
 unmaskirq     =  0 (off)
 using_dma     =  1 (on)
 keepsettings  =  0 (off)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 16383/255/63, sectors = 156301488, start = 0

 Model=ST3802110A, FwRev=3.AAE, SerialNo=5LR3YW4N
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=15629937
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

[13:29:31] funtik:~ # hdparm -d 1 -X udma2 -c 3 /dev/hda

/dev/hda:
 setting 32-bit IO_support flag to 3
 setting using_dma to 1 (on)
 setting xfermode to 66 (UltraDMA mode2)
 IO_support    =  0 (default)
 using_dma     =  0 (off)

[13:30:28] funtik:~ # hdparm -vi /dev/hda

/dev/hda:
 multcount     =  0 (off)
 IO_support    =  0 (default)
 unmaskirq     =  0 (off)
 using_dma     =  0 (off)
 keepsettings  =  0 (off)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 16383/255/63, sectors = 156301488, start = 0

 Model=ST3802110A, FwRev=3.AAE, SerialNo=5LR3YW4N
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156299375
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

S.M.A.R.T.

Какие проблемы позволяет выявить эта технология:

  1. Проблемы блока магнитных головок
  2. Повреждения дисков (физические повреждения, логичесские ошибки и т.п.)
  3. Проблемы механики (привода или системы позиционирования)
  4. Проблемы электронной части (платы)
  5. Температура

Установка:

sudo apt-get install smartmontools

smartctl — Control and Monitor Utility for SMART Disks.

Поддерживает многие ATA-3 и более поздние ATA, IDE, SATA и SCSI-3 диски.

smartd — демон, пытается включить SMART monitoring на ATA-устройствах (аналогично smartctl -s on) и будет опрашивать устройства каждые 30 минут, фиксирует ошибки дисков и изменения атрибутов через syslog-интерфейс.

Логи по-умолчанию найти можно в /var/log/messages.

В дополнение к логированию в файл, smartd может быть сконфигурирован для отсылки предупреждений на email, в случае обнаружения проблемы.

Выясняем, поддерживает ли диск SMART.

# smartctl -i /dev/hda

Включаем SMART, если выключен.

# smartctl -s /dev/hda

Для получения всей информации о диске:

# smartctl --all /dev/hda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.9 family
Device Model:     ST3802110A
Serial Number:    5LR3YW4N
Firmware Version: 3.AAE
User Capacity:    80,026,361,856 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Thu Jul  1 02:58:14 2010 MSD
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   119   097   006    Pre-fail  Always       -       207323748
  3 Spin_Up_Time            0x0003   099   099   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       192
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   087   060   030    Pre-fail  Always       -       473627314
  9 Power_On_Hours          0x0032   079   079   000    Old_age   Always       -       19192
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       478
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   057   048   045    Old_age   Always       -       43 (Lifetime Min/Max 35/44)
194 Temperature_Celsius     0x0022   043   052   000    Old_age   Always       -       43 (0 14 0 0)
195 Hardware_ECC_Recovered  0x001a   053   046   000    Old_age   Always       -       173144036
197 Current_Pending_Sector  0x0012   001   001   000    Old_age   Always       -       4294967295
198 Offline_Uncorrectable   0x0010   001   001   000    Old_age   Offline      -       4294967295
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 TA_Increase_Count       0x0032   100   253   000    Old_age   Always       -       0

Описание параметров таблицы smartctl:

RAW_VALUE — Каждый атрибут имеет raw value 6-ти байтовое значение
VALUE — одно байтовое значение усредненное.

Например в случае параметра «Temperature_Celsius» raw value хранит температуру диска (например 43 градуса)+ минимальную и максимальную температуру, при которой сохраняется работоспособность диска (например 33 и 45 градуса).

Формат raw data определяется производителем и не описан в стандарте. Firmware диска конвертирует raw value в normalized value в диапазоне от 1 до 253. Если это нормализованное значение меньше или равно threshold (THRESH), атрибут считается failed и отображается в столбце WHEN_FAILED. Если этот столбец пуст, все атрибуты в норме.

Минимальное (WORST) нормализованное значение тоже показано;
Это минимальное значение которое достигалось с момента включения SMART на диске.

TYPE — существует 2 типа атрибутов:

Критичные атрибуты: (Pre-fail)

Некритичные атрибуты: (Old_age) (величина value отведенная вендором до наработки на отказ (ресурс)).

Если VALUE стало меньше THRESH в случае Pre-fail атрибута — существует большая вероятность, что диск вылетит в ближайшие 24 часа.

Если VALUE стало меньше THRESH в случае Old_age атрибута — существует большая вероятность, что диск вылетит т.к. выработан ресурс. Вот только когда — науке это неизвестно.

Названия/значения атрибутов и интерпретация raw values не определена никаким стандартом. Иногда различные производители используют одинаковый Attribute ID для различных целей. Поэтому интерпретация специфических атрибутов smartctl может быть изменена опцией -v.

Уточнение: если возникли проблемы с SATA дисками — проверьте версию smartctl: для нормальной работы нужна последняя версия, например 5.38 или 5.39.

Демон smartd:

Редактируем /etc/smartd.conf

По-умолчанию там только одна опция DEVICESCAN
Рекомендуется закомментировать ее и просто перечислить список устройств, которые мы хотим мониторить.

# /etc/smartd.conf config file
/dev/hda -S on -o on -a -I 194 -m 891rpm@gmailcom
/dev/hda устройство, которое мы собираемся мониторить
-o включает автоматическое off-line тестирование
-S включает автозапись атрибутов
-m за которой следует e-mail указывает куда warning сообщения отсылать
-a указывает smartd мониторить все SMART параметры диска

smartd по умолчанию фиксирует изменение значений всех атрибутов.

Директива -I 194 означает игнорировать атрибут #194, (т.е. температуру), т.к. температура диска часто меняется и нет смысла ее логировать.

# /etc/init.d/smartd start
# rc-update add smartd default

Описание параметров:

Каждый атрибут имеет величину — Value.

Value Изменяется в диапазоне от 0 до 255 (задается производителем).

Низкое значение говорит о быстрой деградации диска или о возможном скором сбое. т.е. чем выше значение Value атрибута, тем лучше.

Raw Value — это значение атрибута во внутреннем формате производителя значение малоинформативно для всех кроме сервисманов.

Threshold. — минимальное возможное значение атрибута, при котором гарантируется безотказная работа накопителя.

При Значении атрибута меньше Threshold очень вероятен сбой в работе или полный отказ.

Атрибуты бывают критически важными (Pre-fail) и некритически важными (Old_age).

Выход критически важного параметра за пределы Threshold фактический означает выход диска из строя, выход за переделы допустимых значений некритически важного параметра свидетельствует о наличии проблемы, но диск может сохранять свою работоспособность.

Критичные атрибуты:

  • Raw Read Error Rate — частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска.
  • Spin Up Time — время раскрутки пакета дисков из состояния покоя до рабочей скорости. При расчете нормализованного значения (Value) практическое время сравнивается с некоторой эталонной величиной, установленной на заводе. Не ухудшающееся немаксимальное значение при Spin Up Retry Count Value = max (Raw равном 0) не говорит ни о чем плохом. Отличие времени от эталонного может быть вызвано рядом причин, например просадка по вольтажу блока питания.
  • Spin Up Retry Count — число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной. Ненулевое значение Raw (соответственно немаксимальное Value) свидетельствует о проблемах в механической части накопителя.
  • Seek Error Rate — частота ошибок при позиционировании блока головок. Высокое значение Raw свидетельствует о наличии проблем, которыми могут являться повреждение сервометок, чрезмерное термическое расширение дисков, механические проблемы в блоке позиционирования и др. Постоянное высокое значение Value говорит о том, что все хорошо.
  • Reallocated Sector Count — число операций переназначения секторов. SMART в современных дисках способен произвести анализ сектора на стабильность работы «на лету» и в случае признания его сбойным, произвести его переназначение.

Некритичные атрибуты:

  • Start/Stop Count — полное число запусков/остановов шпинделя. Гарантировано мотор диска способен перенести лишь определенное число включений/выключений. Это значение выбирается в качестве Treshold. Первые модели дисков со скоростью вращения 7200 оборотов/мин имели ненадежный двигатель, могли перенести лишь небольшое их число и быстро выходили из строя.
  • Power On Hours — число часов проведенных во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ (MTBF). Обычно величина MTBF огромна, и маловероятно, что этот параметр достигнет критического порога. Но даже в этом случае выход из строя диска совершенно не обязателен.
  • Drive Power Cycle Count — количество полных циклов включения-выключения диска. По этому и предыдущему атрибуту можно оценить, например, сколько использовался диск до покупки.
  • Temperatue — Здесь хранятся показания встроенного термодатчика. Температура имеет огромное влияние на срок службы диска (даже если она находится в допустимых пределах). Вернее имеет влияние не на срок службы диска а на частоту возникновения некоторых типов ошибок, которые влияют на срок службы.
  • Current Pending Sector Count — Число секторов, являющихся кандидатами на замену. Они не были еще определенны как плохие, но считывание их отличается от чтения стабильного сектора, так называемые подозрительные или нестабильные сектора.
  • Uncorrectable Sector Count — число ошибок при обращении к сектору, которые не были скорректированы. Возможными причинами возникновения могут быть сбои механики или порча поверхности.
  • UDMA CRC Error Rate — число ошибок, возникающих при передаче данных по внешнему интерфейсу. Могут быть вызваны некачественными кабелями, нештатными режимами работы.
  • Write Error Rate — показывает частоту ошибок происходящих при записи на диск. Может служить показателем качества поверхности и механики накопителя.

В SMART III появилась функция, позволяющая прозрачно для пользователя переназначать BAD сектора.

Работает механизм следующим образом: при неустойчивом чтении сектора, или же ошибки его чтения, SMART заносит его в список нестабильных и увеличит их счетчик (Current Pending Sector Count). Если при повторном обращении сектор будет прочитан без проблем, он будет выброшен из этого списка. Если же нет, то при представившейся возможности — при отсутствии обращений к диску, диск начнет самостоятельную проверку поверхности, в первую очередь подозрительных секторов. Если сектор будет признан сбойным, то он будет переназначен на сектор из резервной поверхности (соответственно RSC увеличиться). Такое фоновое переназначение приводит к тому, что на современных винчестерах сбойные секторы практически никогда не видны при проверке поверхности сервисными программами. В тоже время, при большом числе плохих секторов их переназначение не может происходить до бесконечности. Первый ограничитель очевиден — это объем резервной поверхности.

У современных винчестеров есть два дефект-листа P-list (Primary, заводской) и G-list (Growth, формируется непосредственно во время эксплуатации). И при большом числе переназначений может оказаться так, что в G-list не оказывается места для записи о новом переназначении. Эта ситуация может быть выявлена по высокому показателю переназначенных секторов в SMART.

Ссылки:

http://ksimute.trancom.ru/smart-hdd.shtml
http://www.linuxjournal.com/article/6983
http://smartmontools.sourceforge.net/
http://www.3dnews.ru/storage/smart/

nuttcp — тестирование пропускной способности

Finally, we’ll take a look at nuttcp, which includes many options for tweaking buffer lengths, nodelay options, and type of service fields to see what impact this has on your network performance. nuttcp can show either overall bandwidth or the bandwidth achieved in the last second.

nuttcp is available in the Fedora 9 repositories but not for openSUSE or Ubuntu. Build and installation is shown below:

tar xjvf nuttcp-5.5.5.tar.bz2
cd ./nuttcp*
cc -O3 -o nuttcp nuttcp-5.5.5.c
strip nuttcp
sudo install -m 555 nuttcp /usr/local/bin/

Start the server using nuttcp -S. The client can be invoked with many options, followed by the server host name(s) at the end of the command line. The below test prints the bandwidth every second (specified by the -i1 option) while the test is running and runs for 10 seconds before completing.

$ nuttcp  -v -v -i1  192.168.10.210

nuttcp-t: v5.5.5: socket
nuttcp-t: buflen=65536, nstream=1, port=5001 tcp -> 192.168.10.210
nuttcp-t: time limit = 10.00 seconds
nuttcp-t: connect to 192.168.10.210 with mss=1448
nuttcp-t: send window size = 8192, receive window size = 43690
nuttcp-r: v5.5.5: socket
nuttcp-r: buflen=65536, nstream=1, port=5001 tcp

nuttcp-r: interval reporting every 1.00 second
nuttcp-r: accept from 192.168.0.200
nuttcp-r: send window size = 8192, receive window size = 43690

   85.3719 MB /   1.00 sec =  715.9765 Mbps
   86.3684 MB /   1.00 sec =  724.5411 Mbps
   85.9188 MB /   1.00 sec =  720.7551 Mbps
   84.4201 MB /   1.00 sec =  708.2533 Mbps
   87.7772 MB /   1.00 sec =  736.2222 Mbps
   86.7372 MB /   1.00 sec =  727.5696 Mbps
   91.4327 MB /   1.00 sec =  767.0191 Mbps
   89.4166 MB /   1.00 sec =  750.2228 Mbps
   85.4859 MB /   1.00 sec =  717.0937 Mbps
   87.0377 MB /   1.00 sec =  729.9696 Mbps

nuttcp-t: 870.1633 MB in 10.00 real seconds = 89091.75 KB/sec = 729.8396 Mbps
nuttcp-t: 13923 I/O calls, msec/call = 0.74, calls/sec = 1392.10
nuttcp-t: 0.0user 22.3sys 0:10real 224% 0i+0d 0maxrss 0+3pf 16198+1383csw

nuttcp-r: 870.1633 MB in 10.00 real seconds = 89083.52 KB/sec = 729.7722 Mbps
nuttcp-r: 55254 I/O calls, msec/call = 0.19, calls/sec = 5524.09
nuttcp-r: 0.0user 6.7sys 0:10real 67% 0i+0d 0maxrss 0+20pf 62619+635csw

You can also run multiple streams at once; use -N3 to start three connections, for example. The -B option makes the client receive traffic only, while the -D option transmits only. The default is for communication in both directions.

$ nuttcp  -v -v -N3 -B  192.168.10.210

nuttcp-t: v5.5.5: socket
nuttcp-t: buflen=65536, nstream=3, port=5001 tcp -> 192.168.10.210
nuttcp-t: time limit = 10.00 seconds
nuttcp-t: connect to 192.168.10.210 with mss=1448
nuttcp-t: send window size = 8192, receive window size = 43690
nuttcp-t: 1239.8698 MB in 10.00 real seconds = 126944.75 KB/sec = 1039.9314 Mbps
nuttcp-t: 19838 I/O calls, msec/call = 0.52, calls/sec = 1983.52
nuttcp-t: 0.0user 41.2sys 0:10real 413% 0i+0d 0maxrss 0+3pf 4758+3081csw

nuttcp-r: v5.5.5: socket
nuttcp-r: buflen=65536, nstream=3, port=5001 tcp
nuttcp-r: accept from 192.168.0.200
nuttcp-r: send window size = 8192, receive window size = 43690
nuttcp-r: 1239.8698 MB in 10.00 real seconds = 126934.93 KB/sec = 1039.8509 Mbps
nuttcp-r: 29899 I/O calls, msec/call = 0.34, calls/sec = 2989.25
nuttcp-r: 0.0user 8.5sys 0:10real 86% 0i+0d 0maxrss 0+18pf 12519+1847csw

$ nuttcp  -v -v -N3 -D  192.168.10.210
...
nuttcp-r: v5.5.5: socket
nuttcp-r: buflen=65536, nstream=3, port=5001 tcp
nuttcp-r: accept from 192.168.0.200
nuttcp-r: send window size = 8192, receive window size = 43690
nuttcp-r: 806.2317 MB in 10.00 real seconds = 82545.65 KB/sec = 676.2140 Mbps
nuttcp-r: 67104 I/O calls, msec/call = 0.15, calls/sec = 6709.39
nuttcp-r: 0.0user 5.7sys 0:10real 57% 0i+0d 0maxrss 0+18pf 73018+378csw

nuttcp provides similar options to nepim and is heavily focused on measuring the network bandwidth between hosts. Using -i1 with nuttcp, and by default with nepim, you see the bandwidth statistics printed every second while the test is taking place. The nuttcp man page shows many options for the type of service and buffer sizes that you can explicitly set when running nuttcp so you can see if your particular hardware and drivers do not perform well in certain configurations. Running nepim —help will show many more options for configuring the buffers, window sizes, and TCP options.

It is a matter of personal convenience whether you should use nuttcp or nepim. Since nepim is packaged for openSUSE and nuttcp is packaged for Fedora, it might boil down to what distribution you are running as to which of these two tools to use.

Both nepim and nuttcp provide options for setting the size of network packet queues and other more advanced options, such as the TCP maximum segment size, in order to improve the network performance by changing the software setup at each end. Meanwhile, the LMbench tests are quick to run and provide useful insight into your available bandwidth and latencies on your network link.

Read in the original layout at: http://www.linux.com/archive/feature/144532