среда, 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-адрес хоста для диагностики.