четверг, 13 января 2011 г.

Установка программного RAID1 на рабочей системе с 2-мя дисками

Небольшая памятка для себя.
1. Загрузка модулей ядра (во избежание перезагрузки)
/sbin/modprobe linear
/sbin/modprobe raid1
2. Проверка загрузки
cat /proc/mdstat
3. Копирование таблицы разделов с /dev/sda на /dev/sdb
/sbin/sfdisk -d /dev/sda | /sbin/sfdisk /dev/sdb
4. Проверка
/sbin/fdisk -l
5. Изменение типа разделов /dev/sdb на Linux raid autodetect
/sbin/fdisk /dev/sdb
Command: t (change a partition's system id)
Partition number (1-4): 1
Hex code (type L to list codes): fd
6. Обнуление суперблока, чтобы убедиться в том, что не осталось предыдущих RAID-installations на /dev/sdb
/sbin/mdadm --zero-superblock /dev/sdbX
7. Создание RAID массивов
/sbin/mdadm --create /dev/mdX --level=1 --raid-disks=2 missing /dev/sdbY
8. Проверка вывода
cat /proc/mdstat
9. Создание файловых систем на RAID массивах
/sbin/mkfs.ext3 /dev/mdX
/sbin/mkswap /dev/mdY
10. Создание /etc/mdadm.conf
/sbin/mdadm --examine --scan > /etc/mdadm.conf
11. Монтирование устройств /dev/mdX
mkdir /mnt/mdX
mount /dev/mdX /mnt/mdX
12. Изменение файла /etc/fstab. Замена LABEL=YYYY на /dev/mdX
13. Настройка загрузчика GRUB добавить fallback=1
14. Замена root=LABEL=/ на root=/dev/mdX и root (hd0,0) на root (hd1,0)
15. Согласование с новой ситуацией ramdisk
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
16. Копирование содержимого директроий /dev/sdaX на новые устройства /dev/mdY
cp -dpRx / /mnt/mdX
17. Настройка и инсталляция загрузчика GRUB
grub
>root (hd0,0)
>setup (hd0)
>root (hd1,0)
>setup (hd1)
>quit
18. Перезагрузка
19. Изменение типа разделов /dev/sda на Linux raid autodetect
/sbin/fdisk /dev/sda
Command: t (change a partition's system id)
Partition number (1-4): 1
Hex code (type L to list codes): fd
20. Добавление устройств /dev/sdaX в соответствующие RAID массивы
/sbin/mdadm --add /dev/mdX /dev/sdaY
возможные проблемы с корневым разделом /sbin/grub-install --recheck /dev/sdb
сделать /sbin/modprobe megaraid_mm
21. Проверка вывода
cat /proc/mdstat
22. Согласование с новой ситуацией файла /etc/mdadm.conf
/sbin/mdadm --examine --scan > /etc/mdadm.conf
23. Подготовка загрузчика GRUB (Часть 2)
Скопировать строку с kernel (содержащую hd1), вставить ниже и заменить hd1 на hd0
24. Обновление ramdisk
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

Литература:
http://www.howtoforge.com/software-raid1-grub-boot-fedora-8
man grub
man fdisk
man mdadm

понедельник, 10 января 2011 г.

Обновление firmware на IBM xSeries 366.

Собственно ничего сложного. IBM предоставляет неплохую графическую утилиту UpdateXpress, но новая версия (4.30) почему-то зависает на этапе сравнения обновлений. Выход - обновить с помощью командной строки, благо такая опция имеется. Поскольку все вопросы касательно получения/сравнения/обновления детально описаны в IBM UpdateXpress System Pack Installer User's Guide, опишу только свои действий.
1) С помощью графического интерфейса выкачал обновления для данной OS (rhel4 64bit) и данного MT (machine type). Не потому, что не осилил CLI, а потому, что не имело смысла качать заново.
2) На этапе сравнения установленных и выкачанных прошивок инсталлятор показывает, что идет процесс и он чем-то сильно занят. В логах /var/log/IBM_support/*.log ничего подозрительного - прибить (закрыть) инсталлятор
3) Если повторный запуск инсталлятора из командной строки завершается ошибкой "Exiting from the current instance is displayed when only one instance of UXSPI is running." решать запуском с опцией -semdestroy
4) ./uxspi430.rhel4 up -L -l 8863-04.11.2011
Querying Updates done
Comparing Updates
(1) [ ] RSA II Linux Daemon
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : ibm_svc_rsa2_hlp253a_linux_32-64
        Requisites        : None

        Update            : ibmusbasm64
        New Version       : 1.53
        Installed Version : 1.53

(2) [ ] Adaptec adp94xx SAS Controller Driver
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : ibm_dd_adp94xx_1.0.8-11_rhel4_32-64
        Requisites        : None

        Update            : adp94xx.ko
        New Version       : 1.0.8.11
        Installed Version : 1.0.8-13

(3) [ ] Broadcom NetXtreme TG3 rhel 4 driver
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : brcm_dd_nic_tg3-3.92n_rhel4_32-64
        Requisites        : None

        Update            : tg3.ko
        New Version       : 3.92n
        Installed Version : 3.110g

(4) [*] IBM ServeRAID 8i, 8k, 8k-l, 8s SAS Controller Driver for RHEL 4
        Severity          : Critical
        Reboot            : Reboot Required to take effect
        Update ID         : ibm_dd_aacraid_1.1.5.24701_rhel4_32-64
        Requisites        : None

        Update            : aacraid.ko
        New Version       : 1.1.5.24701
        Installed Version : 1.1-5[24551]

(5) [ ] BIOS Flash Update
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : ibm_fw_bios_zue166a_linux_intel32
        Requisites        : None
        New Version       : 1.12 (ZUE166A)
        Installed Version : 1.12 (ZUE166A)

(6) [ ] IBM Preboot Diagnostics Flash Update
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : ibm_fw_diag_zuyt38a_linux_i386
        Requisites        : None
        New Version       : 1.10 (ZUYT38A)
        Installed Version :      (ZUYT38A)

(7) [*] IBM ServeRAID 8i BIOS and Firmware Update
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : ibm_fw_aacraid_8i-5.2.0-16002_linux_32-64
        Requisites        : None

        Update            : ServeRAID 8i Firmware
        New Version       : 5.2-0-16002
        Installed Version : 5.2-0-15432

(8) [ ] Online Broadcom NetXtreme and NetXtreme II Firmware Utility
        Severity          : Recommended
        Reboot            : Reboot Required to take effect
        Update ID         : brcm_fw_nic_2.1.5b_linux_32-64
        Requisites        : None

        Update            : 5704 (#1)
        New Version       : 3.41
        Installed Version : 3.41

        Update            : 5704 (#2)
        New Version       : 3.41
        Installed Version : 3.41

(9) [ ] Remote Supervisor Adapter II Update  IBM Systems x3800, x3850, and x3900 (formerly x260, x366, and x460)
        Severity          : Recommended
        Reboot            : Not Required
        Update ID         : ibm_fw_rsa2_zuep66a_linux_i386
        Requisites        : None
        New Version       : 1.19 (ZUEP66A)
        Installed Version :      (ZUEP66A)

(10) [ ] IBM Optical drive firmware update
        Severity          : Non-Critical
        Reboot            : Not Required
        Update ID         : ibm_fw_optical_ujda-1.2_linux_32-64
        Requisites        : None
        New Version       : 1.2_02 (0000)
        Installed Version : Undetected

(11) [*] IBM Baseboard Management Controller Flash Update
        Severity          : Non-Critical
        Reboot            : Not Required
        Update ID         : ibm_fw_bmc_z2bt05j_linux_i386
        Requisites        : None
        New Version       : 2.11 (Z2BT05j)
        Installed Version : 2.11 (Z2BT05I)

Legend:
Type the item number to toggle selected [*] or not selected [ ]
Type 'a' to accept the menu
Type 'f' to select all entries
Type 'q' to quit without processing the entries
[1-11,a,q,f]> a


Copying update files to temporary directory...
(1 of 3) Running IBM ServeRAID 8i, 8k, 8k-l, 8s SAS Controller Driver for RHEL 4.Error code=3
(2 of 3) Running IBM ServeRAID 8i BIOS and Firmware Update............. done
(3 of 3) Running IBM Baseboard Management Controller Flash Update................... done

There were problems running some updates.  See /var/log/IBM_Support/UXSPI_dbmng01.office.com_8863_XxXxXxX_20110106122515.514000+120.log for details.
Finished applying selected updates


(1) IBM ServeRAID 8i, 8k, 8k-l, 8s SAS Controller Driver for RHEL 4
        Name: IBM ServeRAID 8i, 8k, 8k-l, 8s SAS Controller Driver for RHEL 4
        New Version:    1.1.5.24701
        Reboot:         Reboot Required to take effect
        Requisites:
        Status:         ***Install did not succeed***:
                        The update could not be performed, because the system is
                        currently running a certified driver provided by the
                        Linux distribution.  The certified driver can be overridden
                        by using the -o or --linux-override command line argument

(2) IBM ServeRAID 8i BIOS and Firmware Update
        Name: IBM ServeRAID 8i BIOS and Firmware Update
        New Version:    5.2.0-16002
        Reboot:         Reboot Required to take effect
        Requisites:
        Status:         Successfully Installed

(3) IBM Baseboard Management Controller Flash Update
        Name: IBM Baseboard Management Controller Flash Update
        New Version:    2.11 (Z2BT05j)
        Reboot:         Not Required
        Requisites:
        Status:         Successfully Installed

2 update(s) succeeded
0 update(s) were not installed because applicable hardware is not present
1 update(s) failed
See UXSPI_dbmng01.office.com_8863_XxXxXxX_20110106122515.514000+120.log file in IBM_Support directory for details.

5) reboot для закрепления/проверки результата.


Литература:
http://publib.boulder.ibm.com/infocenter/toolsctr/v1r0/index.jsp?topic=%2Fuxspi%2Fuspi_c_customization_uxsps.html 
Документация IBM UpdateXpress System Pack Installer User's Guide

вторник, 4 января 2011 г.

Обновление firmware на SunStorage 6580.

В декабре прошлого (2010) года удалось выбить 1 день в начале января на останов СУБД и обновление прошивок стоек, серверов, FC-свитчей, Blade-chases. Почему столько много — нужно было время на холодное резервирование данных (копирование терабайта с копейками по сети), а также последующее восстановление данных.
Прихожу 2 числа с утра на работу и узнаю, что холодное резервирование сделано не было, имелся только бэкап средствами Oracle. Наш DBA слезно клялся, что этого должно хватить в случае чего (не дай бог, конечно).
В нашей организации под хранилище данных отдана стойка Sun 6580 (1 корзина с контроллером и 5 корзин с дисками).
Обновления поставляются в составе CAM (Common Array Manager). Поскольку для скачивания CAM нужно регистрироваться на сайте Oracle и вводить номер поддержки продукта, решил вместо этого обратиться к поставщикам «железа», чтоб они скачали и выложили (вышло быстрей). Обязательно читаем документацию (http://docs.sun.com/app/docs/prod/stor.arrmgr67?l=en&a=view) перед какими-либо действиями по обновлению, настройке стоек с помощью CAM.
Поскольку стойка имеет 2 (два) контроллера, которые обеспечивают распределение нагрузки и отказоустойчивость в случае перезагрузки или выхода из строя одного из контроллеров, то необходимо ОБОИМ (поскольку firmware на контроллеры передается по сети, необходима доступность обоих контроллеров) назначить IP-адреса из нужной подсети. У каждого контроллера имеется 2 Ethernet порта — нас интересует только Ethernet 1 (второй зарезервирован на случай отказа первого). Назначить IP-адрес можно как с помощью CAM, так и с помощью консольного кабеля (это быстрее). IP-адрес по умолчанию для контроллера A — 192.168.128.101, для контроллера B — 192.168.128.102. В документации на Sun 6580 ищем информацию по параметрам консольного подключения (57600,8,parity none,stop 1, flow none). Пароль по умолчанию kra16wen. Далее изменить настройки IP-адреса несложно.
Поскольку обновляться будет не только firmware ​контроллеров, но и firmware дисков, доступ к стойке необходимо прервать временно (либо отмонтировать на сервере диски, предоставленные стойкой, либо снять mapping к серверам). Поскольку будем обновлять firmware на серверах с помощью ILOM, то я просто выключил сервера.
Важно: firmware контроллеров можно обновлять без прерывания работы серверов, так как они перегрузятся один за другим и связь не прервется; для обновления firmware дисков обязательно прервать ввод/вывод на стойку. Питание стойки естественно НЕ должно прерываться.
Собственно обновление.
- Залогиниться на CAM с управляющего хоста
- Разрешить все предупреждения из списка alarms (кроме тех, которые говорят о различиях в текущей версии firmware на хосте с CAM и версии на стойке)
- Остановить ввод/вывод на стойку
- Выделить необходимую стойку для обновления, нажать Install Baseline Firmware
- Следовать советам мастера обновлений

На обновление стойки в нашей конфигурации ушло 50 минут. После обновления вылезла проблема — не обновилось firmware на 4 дисках. Пришлось запустить процесс обновления заново (еще 5 минут). На этот раз все прошло успешно.

среда, 22 декабря 2010 г.

Подключение к консоли PN0108 (Power over the NET) в Linux.

Поскольку для работы используется Fedora14, то и настройка/управление данным устройством будет из данного дистрибутива. Зачем надо было настраивать? На одном из филиалов один сервер бывало не мог загрузиться без нажатия F1 (из-за проблем с одной из подсистем). Поскольку в серверную доступ имееет только ограниченный круг лиц, то пару раз возникала необходимость ехать на работу в выходной день (не мне, местному админу).

Способы подключения:
- Управление через пункт меню CN-6000 (IP KVM) или KN9116.
- консольный порт RS-232

1. Скачать Java(tm) Communication API под Linux (файл comm3.0_u1_linux.zip на текущий момент).
2. Подключить устройство к COM-порту
3. Прочитать специфические для платформы рекомендации.
4. Распаковать архив
5. Скопировать из архива библиотеку libLinuxSerialParallel.so
cp libLinuxSerialParallel.so /usr/lib/
ldconfig -v | grep -i serial
6. Скопировать comm.jar и javax.comm.properties в JRE/lib (вместо JRE подставить путь, куда установлена Java Runtime Environment)
7. Попробовать запустить JRE/bin/java -jar PowerMan.jar
Если не запускается:
1 ошибка
java.io.IOException: javax.comm: platform driver class name = null
(Check 'driver' property in javax.comm.properties)

скопировать javax.comm.properties в директорию с APPLICATION

2 ошибка
Exception in thread "main" java.lang.RuntimeException: 
Error opening "/dev/ttyS0"  Permission denied

Либо нет прав доступа к /dev/ttyS0 и нужно запускать под root, либо изменить права на /dev/ttyS0.
Также может возникнуть такая ситуация, если вы уже подключились к устройству через minicom, например.

8. При первом запуске пользователь - administrator, пароль - password.

Подключение с помощью консоли:
параметры 38400N1, отключить контроль потока
Для появления приглашения набрать 3 раза ?, т.е. ???

четверг, 9 декабря 2010 г.

Плагин для nagios check_wh.

Итак, пока помню опишу. Все мы страдаем забывчивостью. За доменом необходимо следить. Серьезно. Никто не погладит по головке, если Ваш домен сначала "заморозят", а потом пометят как удаленный. В моей организации используется Nagios для мониторинга кучи серверов. Филиалы имеют свои внешние домены и пару раз случалась ситуация, когда местная бухгалтерия забывала проплатить за доменное имя. Почему то вчера в голову стукнула идея написать скрипт, который бы мониторил это дело и сообщал когда стоит начать шевелиться. Поискав по просторам интернета, нашел пару скриптов под Nagios - один на Perl, другой на bash, но ни один из мне не понравился, так как не выводил количество дней до deadline. Проанализировав результаты команды `whois DOMAIN` для пары десятков украинских и российских доменов, была выведена тенденция и написан небольшой скрипт.
Немного WIKI: WHOIS — сетевой протокол прикладного уровня, базирующийся на протоколе TCP (порт 43). Основное применение — получение регистрационных данных о владельцах доменных имен, IP-адресов и автономных систем.
Теперь о плагине - ушло 4-5 часов на написание (с учетом всех отрывов от написания) и тестирование. Оказалось все просто, однако, будет работать ТОЛЬКО для записей, имеющих значения в полях Status и expire (что поделать, не все придерживаются одинакового синтаксиса в БД whois).
Внимание счастливым админам, не имеющим записей о времени истечения срока действия ваших доменов. Вам остается либо помнить этот знаменательный день, предварительно уточнив его у провайдера, либо попросить/заставить провайдера внести в БД WHOIS необходимые данные.

Собственно сам скрипт.

#!/bin/bash
# Script for checking whois status
# Usage $0 arg1 warning critical

# аргументы [WARNING_THRESHOLD] [CRITICAL_THRESHOLD] опциональные, если их не передавать - будут использоваться значения по умолчанию - 40 и 25 соот.
if [ $# -lt 1 ]; then
echo "Usage: `basename $0` DOMAIN [WARNING_THRESHOLD] [CRITICAL_THRESHOLD]"
exit 3
fi;

# текущая дата в секундах со времен 1970-01-01 00:00:00 UTC
CUR_DATE=`date +%s`

# проверка на передачу аргументов WARNING и CRITICAL. Если WARN задан и больше CRIT, то использовать заданное значение. Если нет - то принять значение по умолчанию 40 (выставил самостоятельно)
if [ $2 ] && [ $2 -gt $3 ]; then
WH_WARN=$2
else
WH_WARN=40
fi;

if [ $3 ]; then
WH_CRIT=$3
else
WH_CRIT=25
fi;

# вывод для отладки
#echo "WH_CRIT=$WH_CRIT"
#echo "WH_WARN=$WH_WARN"
#echo "CUR_DATE=$CUR_DATE"

# запись в переменную результата
WH_RESULT=`whois $1 2>/dev/null`
#echo "WH_RESULT=$WH_RESULT"

# если в результате есть "No entries found for", то выдать на стандартный вывод сообщение и выйти с кодом 3. Насчет кодов выхода: Nagios plug-in development guidelines говорит использовать код 0 для статуса OK, 1 - WARNING, 2 - CRITICAL, 3 - UNKNOWN. Nagios от плагина получит код возврата и строку на стандартном выводе (код используется для определения состояния службы, а текст как информационное сообщение для отправки в почту, вывода на экран и т.п.)
if [ `echo "$WH_RESULT" | grep "No entries found for" | wc -l` -eq 1 ]; then
echo "Domain $1 not found in WHOIS_DB"
exit 3
fi;

# самая "страшная" часть. Положительный результат команды `whois DOMAIN` парсится на наличие строки status. Если строка найдена (в формате "status: OK-UNTIL 20110914000000"), из неё вырезается последняя часть с 8 цифрами - дата (YYYYMMDD) истечения срока действия домена.
tmp2=`echo "$WH_RESULT" | grep status`
#echo "$tmp"
if [ "$tmp2" ]
then
# собственно здесь последняя часть с 8 цифрами - дата (YYYYMMDD) истечения срока действия домена.
tmp0=`expr substr \`echo "$tmp2" | awk {'print $3'}\` 1 8`
# число секунд от 1970-01-01 00:00:00 UTC до определенной выше даты
WH_DATE=`date --date "$tmp0" +%s`
# echo "WHDATE=$WH_DATE"
else
# Если строка status не найдена - ищется строка expire в формате "Record expires: 2011-03-20"
tmp=`echo "$WH_RESULT" | grep -i expire`
# Если найдена такая строка - вырезается последняя часть, из которой удаляются знаки '-'
if [ "$tmp" ]
then
tmp0=`echo "$tmp" | awk {'print $3'} | tr -d -`
# число секунд от 1970-01-01 00:00:00 UTC до определенной выше даты
WH_DATE=`date --date "$tmp0" +%s`
# echo "WHDATE=$WH_DATE"
fi;

fi;

# если переменная пустая, т.е. НЕ содержит записей о статусе или сроке окончания действия домена - выходм с кодом UNKNOWN
if [ -z "$WH_DATE" ]; then
echo "Unknown data for $1 from whois server."
exit 3
fi;

# вычисление разницы во времени в секундах, а затем деление на 86400 (числосекунд в одном дне)
X=`expr $WH_DATE - $CUR_DATE`
X=`expr $X / 86400`
#echo "X=$X"
if [ $X -gt $WH_WARN ]; then
echo "Whois data is valid for $1. $X days to expire. See http://hostmaster.net.ua/?domadv"
exit 0
fi;
if [ $X -lt $WH_WARN ] && [ $X -ge $WH_CRIT ]; then
echo "Whois data is valid for $1. $X days to expire. See http://hostmaster.net.ua/?domadv"
exit 1
fi;
if [ $X -lt $WH_CRIT ] && [ $X -ge 0 ] ; then
echo "Whois data is steel valid for $1, but will be expired in `echo "$X" | tr -d -` days. See http://hostmaster.net.ua/?domadv"
exit 2
else
echo "Whois data is NOT valid for $1. Was expired for `echo "$X" | tr -d -` days. See http://hostmaster.net.ua/?domadv"
exit 2
fi;

PS: всегда welcome здравая критика и предложения.

Литература:
http://ru.wikipedia.org/wiki/WHOIS
http://jon.netdork.net/2009/03/09/nagios-and-monitoring-whois
http://nagiosplug.sourceforge.net/developer-guidelines.html
http://hostmaster.net.ua/?domadv

вторник, 7 декабря 2010 г.

Заметка о настройке маршрутизатора DrayTek Vigor2110.

Немного лирики. Когда возникла необходимость подключить представительства (4-5 компьютеров) к общей сети, было предложена схема с использованием бюджетного маршрутизатора Draytek Vigor2110. Взяли 4 таких маршрутизатора на пробу поставщиков и попытались настроить VPN с центральным офисом. Настраивал сначала опытных товарищ, спец по продуктам Microsoft, сумел настроить VPN с корпоративным ISA-сервером, однако доступ к другим подсетям (см. схему ниже) за центральной циской никак не получалось настроить - ISA просто не видела пакеты, отправляемые Vigor на адреса 172.16.0.0/12. Данное решение проработало месяц, пока не удалось организовать отдельный канал, проброшенный на корпоративную циску c3800. Но ситуация повторилась - от Vigor2110 не приходили пакеты для подсетей 172.16.0.0/12. Общение со службой техподдержки не дало особых плодов - у них схема подключения Vigor2Vigor работала нормально по их словам. В общем конце концов решили на представительства ставить циски c871. А данная заметка исключительно как память. Настройки ISA не привожу так как они не сохранились.
Схема подключения:



Параметры по умолчанию (если настройки были сброшены или устройство только что куплено).
Стартовый IP-адрес 192.168.1.1
Логин/пароль — admin/admin

1. Internet Access -> Static or Dynamic IP
  1. Static or Dynamic IP
    1. Разрешить Broadband Access — enable
    2. Установить WAN physical type — Auto negotiation
    3. Установить WAN Connection Detection — ARP Detect
    4. Убрать галочку с пункта RIP Protocol
    5. WAN Backup setup
      1. Разрешить использование резервного канала через 3G modem — Dial Backup mode — enable
      2. 3G USB Modem
        1. Разрешить PPP Client Mode enable
        2. Ввести SIM PIN Code (если есть)
        3. Ввести Modem Initial String
        4. Ввести APN Name
        5. Ввести Modem dial String — ATDT^99#
        6. Ввести PPP Username — пусто
        7. Ввести PPP Password — пусто
6. WAN IP Network Settings
  1. Установить Router Name — Vigor-Имя_филиала.
  2. Установить Domain Name — Имя_филиала.Office.com
  3. Назначить Specify an IP Address — внешний адрес маршрутизатора, предоставляется провайдером см. в конце файла.
  4. Назначить Subnet Mask, предоставляется провайдером.
  5. Назначить Gateway IP Address, предоставляется провайдером.
2. LAN -> General Setup
  1. LAN IP Network Configuration
     1. Задать 1st IP Address внутренний адрес маршрутизатора 192.168.100.xxx, где xxx — см. в конце файла, первый в скобках, например, 192.168.100.1.
    2. 1st Subnet Mask 255.255.255.240,
  2. DHCP Server Configuration
    1. Разрешить Enable Server
    2. Назначить Start IP Address — 192.168.100.xxx+1, например, 192.168.100.2
    3. Установить IP Pool Counts — 12
    4. Установить шлюз по умолчанию Gateway IP Address — 192.168.100.xxx, заданный в настройках 1st IP Address
3. VPN and Remote Access
  1. Remote Access Control Setup — оставить разрешённой только IPSec VPN Service
2. IPSec General Setup — задать дважды парольную фразу и выделить 3DES, AES в списке методов безопасности IPSec Security Method
3. LAN to LAN — создать новый профиль или отредактировать уже созданный, щёлкнув на на индексе этого профиля
  1. Profile 1
   1. Common settings
    1. Задать имя профиля, например, Apt2FIRMA
    2. Поставить галочку Enable this profile
   2. Dial-Out settings
    1. Type Server оставить IPSec
    2. Server IP/Host name for VPN поставить
    3. В IKE Authentication Method щёлкнуть на кнопке IKE Pre-Shared Key и дважды задать парольную фразу, введённую ранее.
   4. В IPSec Security Method выбрать High(ESP) 3DES with Authentication
   5. Щёлкнуть на кнопке Advanced
      1. IKE phase 1 mode — Main
      2. IKE phase 1 proposal — 3DES_SHA1_g2
      3. IKE phase 2 proposal — 3DES_SHA1/3DES_MD5
      4. IKE phase 1 key lifetime — 28800
      5. IKE phase 2 key lifetime — 3600
      6. Perfect Forward Secret — Disable
  3. Dial-In settings
    1. Allowed dial-in type Server оставить IPSec
    2. Определить адрес Remote VPN Gateway
    3. В IKE Authentication Method щёлкнуть на кнопке IKE Pre-Shared Key и дважды задать парольную фразу, введённую ранее.
    4. В IKE Authentication Method поставить галочки рядом с 3DES, AES
 4. TCP/IP network settings
   1. My WAN IP — 0.0.0.0
   2. Remote gateway mask — 0.0.0.0
   3. Remote network — 10.0.0.0
   4. Remote network mask — 255.0.0.0
 5. Щёлкнуть на кнопке More
     1. В поле Network IP задать адрес сети филиала, например, 172.16.0.0
     2. В поле Netmask выбрать подходящую сетевую маску, например, 255.240.0.0
     3. Нажать кнопку Add
     4. Нажать кнопку Close
  6. From first subnet to remote network... выбрать из выпадающего списка Route
4. System maintenance
  1. На вкладке Administrator password задать новый пароль
  2. Сделать резервную копию конфигурации на вкладке Configuration backup
  3. Management
   1. Management Access Control
    1. На вкладке Allow management from the Internet поставить галочки рядом с HTTP, HTTPS, SSH
  2. Firmware Upgrade
    1. Скачать с сайта draytek.com новую прошивку для Vigor2110.
    2. Выбрать скачанный файл с новой прошивкой
    3. Нажать на кнопку Upgrade (питание НЕ ДОЛЖНО прерываться при обновлении прошивки)
5. Diagnostics
  1. Ping diagnostics
    1. Ввести IP-адрес хоста для диагностики.

суббота, 20 ноября 2010 г.

Настойка 3G модема Huawei E1550 в Fedora14.


Недавно было приобретено для нескольких сотрудников данное устройство (Huawei E1550) для работы из дому. Но, поскольку один из сотрудников уже провел себе кабельный интернет, один из модемов оказался не у дел. Я решил настроить его на своем стареньком домашнем компьютере. Установка будет проходить на Fedora14, думаю на других Redhat-based дистрибутивах не будет сильно отличаться.
Итак, открываем коробочку с модемом и читаем инструкции, из которых убеждаемся в необходимости вставить SIM-карточку для начала работы. Подключаем в USB-разъем компьютера, в трее KDE лезет окошечко с логотипом похожим на CDROM, т.е. Данное устройство было опознано Linux не как модем, а как CD-ROM. Это не удивительно, ведь модем рассчитан на работу в среде Windows, где он автоматически устанавливает программное обеспечение необходимое для его работы. Именно благодаря эмуляции CD-ROM'а и возможна автоматическая установка. Модем виден в папке Windows "Мой компьютер" как CD-ROM и как съемный диск. Виртуальный CD, содержащий Windows программы, бесполезен под Linux и мешает определиться модему, поэтому его необходимо отключить.
Далее даем команду lsusb, убеждаемся что устройство присутствует в системе:
$ lsusb
....
Bus 003 Device 004: ID 12d1:1446 Huawei Technologies Co., Ltd.
....

Отключение эмуляции CD-ROM

Отключение будет проходить в 2 этапа: деактивация cdrom-устройства, дополнительная настройка модема.

Этап 1:
Устанавливаем утилиту usb_modeswitch, предназначенной для дополнительной настройки 3G-модемов под Linux, конкретно она деактивирует cdrom-устройства и активирует модем, поддерживает устройства следующих производителей — Huawei, T-Mobile, Vodafone, Option, ZTE, Novatel.
$ sudo yum -y install usb_modeswitch

Настраиваем файл конфигурации программы usb_modeswitch
cat << EOF >> /etc/usb_modeswitch.conf

DefaultVendor = 0x12d1
DefaultProduct = 0x1446 MessageEndPoint = "0x01"
MessageContent = "55534243000000000000000000000011060000000000000000000000000000"
EOF

Теперь переключаем устройство в режим модема:
$ sudo usb_modeswitch -H -v 12d1 -p 1001

После этого значок CD-ROM пропадает на некоторое время, а через 30-60 секунд снова появляется. Команда отключила эмуляцию CD-ROM, udev распознал собственно модем, а затем снова произошла эмуляция CD-ROM.
Но этого достаточно чтобы в директории /dev появились три новых устройства: ttyUSB0-ttyUSB2.
$ ls -1 /dev/ttyUSB*
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2

Этап 2:
Отключаем эмуляцию CDROM насовсем с помощью minicom. Для начала установим пакет.
$ sudo yum -y install minicom

Затем даем команду:
$ sudo minicom -s
  1. Выбираем пункт «Настройка последовательного порта», далее в строке: "Какую настройку изменить?" печатаем А. Курсор перейдет в верхнюю строку "А - Последовательный порт: /dev/modem". Вместо /dev/modem пишем /dev/ttyUSB0.
  2. нажимаем ENTER, верхнее окно пропадает, и нажимаем ESC чтобы выйти из режима конфигурации.
  3. Появится окошко "Инициализируется модем", затем на экране выведется ответ на команду инициализации.
  4. Введите команду AT и нажмите ENTER. Появится ответ - OK.
  5. Далее нужно ввести команду AT^U2DIAG=0 и нажать ENTER.
  6. Теперь нажимаем CTRL+A потом Z. Выбираем команду "Выход без сброса"- Q и подтверждаем выход.

Чтобы убедиться в этом, вытащим его из гнезда USB, а затем снова включим (лучше в другое гнездо). Если никакого CD-ROM'а не появляется, повторим команду:
$ ls -1 /dev/ttyUSB*
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2

Настройка модемного соединения с Интернет

Настраивать модемное соединение можно двумя основными способами: писать скрипты ррр (Point-to-Point-Protocol), либо использовать программы-посредники. В моем случае дозвон осуществлялся с помощью wvdial. Установим программу:
$ sudo yum -y install wvdial

Настроим конфигурацию в файле /etc/wvdial.conf
[Dialer pin]
Modem = /dev/ttyUSB0
Baud = 9600
Init1 = AT+CPIN="0000"

[Dialer Defaults]
Modem = /dev/ttyUSB0

[Dialer ogo]
Modem = /dev/ttyUSB0
ISDN = off
Modem Type = Analog
Modem Baud = 460800
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","3g.utel.ua"
Init3 =
Phone = *99***1#
Phone1 =
Phone2 =
Dial Prefix =
Dial Attempts = 1
Dial Command = ATDT
Ask Password = off
Password = xxx
Username = xxx
Auto Reconnect = on
Abort on Busy = off
Carrier Check = off
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = on
Idle Seconds = 0
Auto DNS = on

Набираем в консоли следующую команду. Она необходима для введения PIN-кода (по умолчанию на карточке стоит защита PIN-кодом). Если модем упорно не хочет соединяться, можно убрать проверку PIN-кода с помощью мобильного телефона.
$ sudo wvdial pin

--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: AT+CPIN="0000"
AT+CPIN="0000"
OK
--> Modem initialized.
--> Configuration does not specify a valid phone number.
--> Configuration does not specify a valid login name.
--> Configuration does not specify a valid password.

Собственно дозвон.
$ sudo wvdial ogo

ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","3g.utel.ua"
AT+CGDCONT=1,"IP","3g.utel.ua"
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Sun Nov 21 17:32:32 2010
--> Pid of pppd: 2222
--> Using interface ppp0

Чтобы прервать соединение, нужно нажать CTRL+C. Если просто закрыть окно терминала, то соединение будет продолжать работать, и чтобы его разорвать придется убивать процесс командой kill.

Нерешенные вопросы:

Запуск wvdial от обычного пользователя.
При попытке запуска от обычного пользователя ругается «Cannot open /dev/ttyUSB0: Device or resource busy».
С помощью strace стало понятно, что необходимы права на запись в каталог /var/lock — добавляем пользователя в группу lock.
Далее pppd вылетает с кодами ошибок err=2 и err=3, что решается изменением прав доступа к файлам /etc/ppp/peers/wvdial, /etc/ppp/*-secrets.
После этого pppd вылетел в ошибкой err=8 (The connect script failed (returned a non-zero exit status).) Пришлось временно отложить разбирательства с pppd.

Литература:

Команды управление режимами устройства:
AT^U2DIAG=0 (устройство в режиме только модем)
AT^U2DIAG=1 (устройство в режиме модем + CD-ROM)
AT^U2DIAG=255 (устройство в режиме модем + CD-ROM + Card Reader)
AT^U2DIAG=256 (устройство в режиме модем + Card Reader).
man wvdial, wvdial.conf, pppd