четверг, 21 января 2016 г.

Решение проблемы запуска Vmware Vcenter Converter Standalone Client

Столкнулся на паре компьютеров с проблемой запуска Vmware Vcenter Converter Standalone Client. Выдает ошибку failed to impersonate the corrent user to the vmware vcenter converter standalone server и на этом все стопорится. Я и IIS выключал и порты менял на стороннем софте, думая что они мешают работе конвертера - ничего не помогало.
В результате помогло создание пользователя с правами администратора и установка конвертера из под него.

воскресенье, 17 января 2016 г.

Обновление ESXi через консоль

Периодически компания Vmware выпускает для гипервизора ESXi обновления и патчи, которые желательно устанавливать. Утилитами от Vmware, типа Update Manager я не пользуюсь, так как легко обновиться можно и через консоль.

Последовательность действий для обновления системы:
1. Скачиваем файл обновления в формате zip;
2. Записываем любым способом zip файл на один из datastore;
3. Подключаемся к ESXI хосту по ssh под пользователем root;
4. Выполняем команду для обновления системы: esxcli software vib install -d /vmfs/volumes/[датастор]/[имя файла с обновлением].zip
5. После обновления перезагружаем сервер с Vmware ESXi.

Обновление может быть не установлено из за ошибок на диске, к примеру может вылезти ошибка "There was an error checking file system on altbootbank, please see log for detail".

Что делаем:
1. Переходим в каталог с дисками (cd /dev/disks);
2. Смотрим что и как у нас там называется (ls);
3. Проверяем требуемый диск командой (dosfsck -v -r naa.600508e0000000006c35e1f61ecd8f01:1)

вторник, 1 декабря 2015 г.

Создание установочной флешки c ESXi

1. Устанавливаем UNetbootin.

2. Качаем образ VMWare ESXi (к примеру с сайта компании: downloads.vmware.com/d/)

3. Форматируем флешку в FAT32.

4. Запускаем UNetbootin выбираем скаченный исошник, выбрав соответсвующий пункт опции Diskimage (ISO).

5. По окончании копирования открываем флешку и редактируем (внимание пользователям Windows — редактируем тем что понимает unix line, к примеру notepad++ и т.п.) открываем файл syslinux.cfg.

6. Заменяем строку DEFAULT menu.c32 на DEFAULT mboot.c32

Теперь с флешки можно загружаться

Настройка vSphere Data Protection

Обновившись с VMware vSphere 5.0 на VMware vSphere 5.5 я получил неработающий vSphere Data Recovery, на замену которому пришел vSphere Data Protection. И все бы ничего, но неожиданно возник ворох разнообразных граблей с запуском этого сервера резервного копирования.

1. Установочный OVA-файл не видит виртуального свитча dvSwitch и ставится только на VMNetwork, то есть vmnetwork у вас не должен быть удален. Ну и после установки надо не забыть поменять привязку на ethertnet-адаптере.

2.  Не возможно подключиться к консоли сервера, vSphere Client выдает ошибку "The VMRC console has disconnected...attempting to reconnect." Долго соображал как же подключиться к консоли, пока не обнаружил что тот же Vmware Fusion вполне себе хорошо работает с серверами vSphere и, в отличии от vSphere Client, консоль отображает без проблем.

3. Обязательно надо прописать DNS-имя на сервере DNS и в настройке сервера. Иначе все будет тупить и не работать.

4. После всего этого вебинтерфейс начал отзываться, но работать отказывался. Нашел статейку на vmware что разработчики всех популярных браузеров, среди которых Mozilla Firefox, Google Chrome и Internet Explorer в целях безопасности удалили поддержку криптографического алгоритма DSA, который использовался в веб сервере всех версий VDP до 6.0.x включительно. Исправлено начиная с версии 6.0.1 сменой алгоритма DSA на RSA.
Для смены типа алгоритма без обновления VDP vmware предлагает скачать и запустить скрипт исправления 2111900_VDPHotfix.SHA2.sh.zip

Скрипт делает следующее:

# Остановить tomcat
emwebapp.sh --stop
# Забэкапить текущее хранилище ключей
cp /root/.keystore /root/.keystore.sav
# Удалить сертификаты tomcat из хранилища
/usr/java/latest/bin/keytool -delete -alias tomcat -storepass changeit
# Сгенерировать новый сертификат и поместить его в хранилище
/usr/java/latest/bin/keytool -genkeypair -v -alias tomcat -keyalg RSA -sigalg SHA256withRSA -keystore /root/.keystore -storepass changeit -keypass changeit -validity 3650 -dname "CN=localhost.localdom, OU=Avamar, O=EMC, L=Irvine, S=California, C=US"
# Запустить tomcat
emwebapp.sh --start
Выполнить команды можно в локали машины, зайдя на неё с логином/паролем "root/changeme".

После смены ключей vSphere Data Protection снова стал нормально открываться по своему адресу https://vdp_host:8543/vdp-configure/

пятница, 7 ноября 2014 г.

Изменение пароля GUI-пользователя в Elastix 2 и Elastix 3

Пароль меняется в базе SQlite консольной командой

/usr/bin/sqlite3 /var/www/db/acl.db "UPDATE acl_user SET md5_password = '`echo -n newpass|md5sum|cut -d ' ' -f 1`' WHERE name = 'admin'"

где newpass - новый пароль, а name - имя пользователя.


UPD:
Недавно вышел релиз Elastix 3.0, на нем вышеописанная инструкция не работает. Сменить пароль можно командой

/usr/bin/elastix-admin-passwords --change

Ну и не забываем что теперь пользователь у нас superadmin и у пароля есть большие ограничения по сложности (не менее 10 разнокалиберных символов и цифр).

вторник, 28 октября 2014 г.

Бэкап и восстановление Freebsd


Хочу рассказать, как относительно быстро восстановить работоспособность умершего freebsd сервера, либо перенести полностью сервер с одной машины на другую. Для этого нам понадобится программа для архивации fsbackup и live-cd с freebsd. Сразу предупреждаю, что это не how to, нужен некоторый уровень знания и понимания freebsd.

Первым делом сделаем сам архив. Для архивирования любых данных я использую простую и удобную программу fsbackup. Подробнее о ней можно узнать тут. В конфиге комментарии на русском языке, так что с настройкой проблем быть не должно. Архив можно хранить локально, на удаленном ftp, либо заливать через ssh на другой сервер. Поддерживается шифрование, создание инкрементных бэкапов. Программа живет в портах /usr/ports/sysutils/fsbackup Для бэкапа системы я использую следующий конфиг:

$cfg_backup_name = «srv12_domain_local»;
$cfg_cache_dir = "/usr/local/fsbackup/cache";
$prog_md5sum = «md5sum -b»;
$prog_tar = "/usr/bin/tar";
$prog_ssh = "/usr/bin/ssh";
$prog_rm = "/bin/rm";
$prog_gzip = "/usr/bin/gzip";
$prog_pgp = «gpg»;
$cfg_checksum = «timesize»;
$cfg_backup_style = «backup»;
$cfg_increment_level = 7;
$cfg_save_old_backup = 1;
$cfg_type = «remote_ftp»;
$cfg_remote_ftp_mode = 0;
$cfg_remote_password = «password»;
$cfg_local_path = "/mnt/backup/srv12/system";
$cfg_time_limit = 0;
$cfg_size_limit = 0;
$cfg_maximum_archive_size = 0;
$cfg_root_path = "/";
$cfg_verbose = 2;
$cfg_stopdir_prune=0;

1;

__DATA__

#Архивируем весь сервер с корня
/
#Указываем папки исключения, которые бэкапить не нужно
!/dev
!/mail
!/mnt
!/usr/ports
!/var/db/portsnap
!/usr/local/fsbackup/cache
!/web/squidcache
!/web/mysql
!/usr/src
!/usr/local/www/data-dist/netams


Я архивирую весь сервер, за исключением некоторых папок, которые указаны отдельно.

Архив мы получили, теперь нужно подготовить сервер, на который будет осуществляться перенос. Для этого на исходном сервере необходимо открыть /etc/fstab

/dev/ar0s1b none swap sw 0 0
/dev/ar0s1a / ufs rw 1 1
/dev/ar0s1f /mail ufs rw 2 2
/dev/ar0s1d /tmp ufs rw 2 2
/dev/ar0s1e /usr ufs rw 2 2
/dev/ar0s1g /var ufs rw 2 2
/dev/ar0s1h /web ufs rw,suiddir,noatime 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0


запомнить существующие разделы и затем создать такие же разделы на другом сервере. Размер разделов может не совпадать, достаточно просто наличие таких же разделов. Я разбиваю диск с помощью установочного диска freebsd и custom install на нем: разбиваю непосредственно диск и ставлю загрузчик freebsd. После того, как создали разделы, копируем наш бэкап куда-нибудь, чтобы потом можно было его забрать на второй сервер, загрузившись с live-cd. Можно скопировать на ftp, можно на флешку, можно просто в виндовую шару положить и потом ее подмонтировать. Вместе с архивом нужно скопировать скрипт fsrestore.sh, который лежит в /usr/local/fsbackup/scripts. Этот скрипт будет выполнять непосредственно восстановление системы.

Теперь берем live-cd, я использую Frenzy, и грузимся с него. В принципе, пользоваться можно чем угодно, любым live-cd с freebsd, но мне нравится именно Frenzy. После загрузки имеем полноценную систему, которая автоматически подмонтировала созданные нами ранее разделы. Подмонтированы они в режиме чтения, так что сначала отмонтируем их.

umount /dev/ad4s1a

и так далее со всеми разделами.

Затем в папке /mnt создадим папки с именами разделов нашей системы, которую мы переносим. В моем случае это папки /mnt/tmp, /mnt/usr, /mnt/var, /mnt/web, /mnt/mail.

Далее монтируем разделы в только что созданные папки, при этом раздел / монтируем в /mnt

mount /dev/ad4s1a /mnt
mount /dev/ad4s1f /mnt/mail
mount /dev/ad4s1d /mnt/tmp
mount /dev/ad4s1e /mnt/usr
mount /dev/ad4s1g /mnt/var
mount /dev/ad4s1h /mnt/web


Теперь нужно подмонтировать флешку с архивом:

mount_ntfs /dev/da0s1 /mnt/backup

Не забываем заменить /dev/da0s1 на то устройство, каким является флешка у вас.

Можно вместо флешки подмонтировать виндовую шару. Перед монтированием шары стоит не забыть настроить сеть либо через sysinstall, либо сразу c помощью ifconfig:

ifconfig eth0 192.168.0.15 netmask 255.255.255.0
ifconfig eth0 up


Монтируем шару:

mount_smbfs -I 192.168.0.2 -E koi8-r:cp866 //user@comp/shara /mnt/backup

user – имя пользователя шары, comp – имя компьютера в сети shara – имя шары

Итак, у нас есть бэкап, есть подмонтированные разделы будущей системы. Теперь можно начать восстановление. Для этого редактируем скрипт fsrestore.sh. В нем нужно изменить только две строчки:

# Директория где находится бэкап.
backup_path="/mnt/backup"
# Корневая директория куда будут помещены данные восстановленные из бэкапа.
restore_path="/mnt"


После этого запускаем скрипт и ждем завершения. Лучше бэкап скопировать куда-нибудь локально, и затем запускать восстановление. Так будет быстрее и надежнее. После завершения восстановления, проверяем файлы. В данный момент в папке /mnt должна находиться копия нашего сервера.

Сейчас нужно внести некоторые изменения в конфигурацию. Первым делом обязательно нужно отредактировать файл /mnt/etc/fstab так как имена дисков в разных серверах могут быть разными. На исходном сервере у меня было зеркало ar0, перенес же я на одиночный хард ad4. Соответственно, меняем в fstab ar0 на ad4. Тут же можно поменять сетевые и прочие настройки в rc.conf но это уже не критично. Все остальное можно будет изменить загрузившись в системе. Если же не отредактировать fstab, то, скорее всего, мы не загрузимся.

После восстановления перезагружаем компьютер, вытаскиваем live-cd, логинимся в систему. Осталось выполнить последнее действие. Вместе с непосредственно архивом fsbackup создает файлик с правами доступа и владельцами на все файлы и папки в архиве. Файл этот имеет расширение .dir Во время восстановления скрипт не отработал и не расставил нужные права, так как путь восстановления был не в / а в /mnt, поэтому пути в файле не совпадали с путем восстановления. Так что теперь нам нужно вручную исполнить этот файл, чтобы полностью восстановить все права и владельцев. Для этого ставим ему права на исполнение и запускаем. После его исполнения мы имеем точную копию системы.

За статью спасибо хаброюзеру

UPD:
При бэкапировании баз данных MySQL 5.5 происходит ошибка, связано это с опцией --all в скрипте mysql_backup.sh (она вроде как не используется в этой версии MySQL). Всё что нужно сделать - удалить в скрипте все эти опции. После чего бэкапирование баз данных производится без каких либо проблем.

четверг, 23 октября 2014 г.

Настройка Grandstream HT503 для FreePBX (Asterisk, Trixbox, Elastix)

Нужен был шлюз с 1 FXO портом, ещё один FXS в этом случае приятно дополнение, ну и lifeline конечно пригодится при отключении электричества. D-link покупать не хотелось, а linksys в продаже отсутствует, поэтому выбор пал на Grandstream, заранее скажу не понравилось, даже нелюбимый мной дэлинк ведёт себя и то более предсказуемо.

Я убил целый день из-за него на настройку, на прошивках 11.3 и 12.1 невозможно совершить исходящий звонок через FXO порт - астериск показывает что всё в порядке, а звонок не проходит - тишина в трубке. Вот невозможно и всё тут, поэтому если вам нужен FXO для звонков то вам нужна прошивка 10.9. Если у кого-то возникнут сложности с прошивкой пишите в комментариях, дополню статью.

Скачать прошивку 1.0.10.9 для HT503 можно здесь или с официального сайта.



Это было отступление, неприятное, но необходимое. Пока посмотрю как будет себя вести эта штука в бою, позже дополню статью.

Статья состоит из нескольких частей, это сетевые настройки, настройки FXS порта (внутренний) и настройки FXO порта (городской).

Сетевые настройки.

Внимание! Данный класс устройств не предназначен для того что бы их выставляли в интернет! Заранее позаботтесь о том что бы доступ к этому устройству имел только ограниченный круг лиц, в идеальном случае никто кроме администраторов и самого астериска доступа к устройству иметь не должен, в противном случае вы рискуете тем что злоумышленник сможет звонить через ваш HandyTone за ваши деньги.
Итак, если вы подключаетесь к порту LAN устройства то там по умолчанию включен DHCP сервер, а IP адрес устройства - 192.168.2.1. Собственно так и надо доступ получать к вебке, потому что WAN порт по дефолту закрыт от всего, и настроен на получение IP по DHCP.

Значит заходим по адресу http://192.168.2.1 пароль админа по умолчанию - admin. Первым делом когда входим, в целях безопасности меняем пароль User и настроить статический IP адрес. Всё это делается в разделе Basic Settings. Разделение на user и admin в ht503 происходит исключительно по паролю, поэтому ставьте для user и admin разные пароли!

ht503 network settings
Не забываем нажимать кнопку Apply для сохранения настроек. Далее идём в Advanced Settings и меняем пароль админа.
ht503 admin pass
Далее, если мы уверены что у нас в сети никто не станет ломать эту железку, можно открыть доступ к настройкам и icmp пакетам (читай пингу) с Wan порта, делается это в Basic Settings
ht503 wan side access

Настройки FXS порта.

Эта самая пожалуй простая часть, для начала создаём пользователя в интерфейсе FreePBX, делаем аналогично SPA 8000 только DTMF режим ставим rfc2833. Переходим в раздел FXS порт, заполняем адрес сервера (Primary SIP Server), имя пользователя (SIP User ID) и пароль (Authenticate Password аналогично экстеншену в астере).
sip fxs settings ht503 freepbx
Спускаем ниже, настраиваем Dial Plan что бы набор номера происходил без задержек, хотя будет работать и без этого.
ht503 dialplan fxs


Пояснения о том как работает диалплан есть в инструкции:

Разрешённые символы: 1,2,3,4,5,6,7,8,9,0 , *, #, A,a,B,b,C,c,D,d

x - любая цифра от 0 до 9;
хх+ - как минимум любые две цифры;
^ - запрет набора номера;
[3-5] - цифры от 3 до 5;
[147] - цифры 1, 4 или 7;
<2=011> - заменить 2 на 011;
< =1> - добавить цифру 1 перед номером;
| - разделитель между правилами.

Примеры из инструкции:

{[369]11 | 1617xxxxxxx} - позволяет набрать 311, 611, 911 и любые 10 цифр начинающиеся с 1617;
{^1900x+ | <=1617>xxxxxxx} - блокирует набор любого номера начинающего с 1900 и добавляет префикс 1617 перед любыми 7 набранными цифрами;

и диал план который использую я - {*xx|1xx|7xx|2xxxxxx|9xxxxxx|8xxxxxxxxxx|0[1-4]}
можно набрать номера от *01 до *99 - для функций астериска
от 100 до 199, от 700 до 799 - внутренняя нумерация
от 2000000 до 2999999 и от 900000 до 999999 - городская нумерация
любые 11 цифр начинающиеся с 8ки - межгород и мобильники
01,02,03,04 - номера экстренных служб.

Все махинации с правилами набора номера, такие как добавление префикса или наоборот замену каких-то цифр я рекомендую делать в астериске.

Переходим к настройкам линии, в параметре Slic Setting по умолчанию стоит USA, но в этом режиме трубка какие-то странные звуки издаёт, поэтом я выбрал Belgium.

На этом же скрине видно параметр Gain - регулировка громкости, меня устроили первоначальные параметры.
fxs settings ht503

На этом настройка FXS порта закончена. Жмём Apply, ждём пока перезагрузится шлюз и проверяем, всё должно работать.

Настройки FXO порта

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

Сначала будем настраивать входящий звонок. DID на HT503 прописывается в разделе Basic Settings - параметрUnconditional Call Forward to VOIP (здравствуй логика).
did ht503 freepbx


Здесь читаем где прописать DID на FreePBX. Не забываем Apply нажимать.

Следующим шагом надо будет создать транк в интерфейсе FreePBX. Выбираем раздел Trunks (Транки). Добавляем транк Add Trunk.

Trunk Name - имя транка, то как вы его хотите видеть, не на что в общем-то особо не влияет .
Outbound CallerID - номер телефона который вы будете видеть в отчёте при исходящих звонках.
Dialed Number Manipulation Rules - сопоставление набранных номеров с шаблоном, можно не заполнять, но если заполнили номер который астериск пустит в транк не совпадающий с шаблоном набран не будет. prefix это то что откидывается из переданного номера в транк, prepend - то что добавляется перед номером. т.е. если в транк астериск например передаёт 79181234567, а вам надо что бы шлюз набрал 891812345678 правило должно быть (8)+7|918XXXXXXX. Впринципе такое можно делать в разделе исходящая маршрутизация у астериска. Опять таки статейка есть по этому вопросу, где я постарался максимально этот момент описать.
Trunk Name - не проверял, на HT503 но на некоторых шлюзах если указать имя транка отличное от имя пользователя могут не проходить входящие, поэтому рекомендую транк называть так же как имя пользователя.
PEER Details - самая интересная часть, здесь прописываются основные настройки.

username=gs-ht-503 ;Имя пользователя для порта, то что мы указывали в SIP User ID на шлюзе
type=friend ;Позволяет и принимать и отправлять вызовы
secret=Sw0rdfish ;Пароль
qualify=yes ;Разрешает серверу определять доступность VoIP шлюза
port=5062 ;SIP порт VoIP шлюза, параметр который указан шлюзе
nat=never ;Мы же не используем nat?
host=dynamic ;Для работы VoIP шлюз должен зарегистрироваться
dtmfmode=rfc2833 ;Режим который рекомендуется использовать.
context=from-pstn ;Контекст указывает обработчик входящих вызовов
canreinvite=no ;Запрещает передачу медиатрафика минуя астериск

Картинка для проверки.
freepbx trunk ht503
Теперь аналогично созданному транку заполняем Primary SIP Server, SIP User ID, Authenticate Password.
sip fxo settings ht503 freepbx
для того что бы протестировать приём входящих звонков осталось ещё пару настроек:

AC Termination Model выбираем Impedance-based.
Impedance-based оставляем 600ом,
Number of Rings если у нас на номере включён Caller ID то ставим 2 что бы шлюз мог определить номер, если нет ставим 1 что бы трубку шлюз поднимал быстрее.
PSTN Ring Thru FXS: ставим No, в противном случае звонок из города сначала будет приходить на FXS порт, а уже через таймаут уходить на астер, но нам этого не надо.
ht503 AC Termination Model

Жмём Apply - звоним проверяем.

Следующим шагом будем заполнять Disconnect Tone подсказка что к чему есть прямо в вебинтерфейсе. Чтобы правильно заполнить шаблон нам надо будет записать короткие гудки и проанализировать. Для анализа я использую бесплатный аудиоредактор Audacity.
Открываем записанный файл, выделяем нужный нам отрезок короткого гудка и выбираем Анализ - Построить график спектра

Наводим курсор на пик и видим что у нас написано Пик: 426 гц, -26,6дб. В данном случае сигнал одночастотный (а бывают и двухчастотные, для них будет два пика).

Дальше смотрим длительность между гудками и длительность самих гудков.

в моём случае это 256мс, округлим до 250. Итак исходные данные мы собрали, теперь пишем шаблон:

Формула выглядит так:

f1=X@-Y,f2=Z@-Y,c=A/B;

где:
X - частота (у меня 426 Герца)
Z - частота второго пика, если сигнал одночастотный ставим тоже что и в X.
Y - громкость в dB, на графике 26, но можно оставить дефолтные 32
A - период сигнала гудка (0.250 с)
B - период тишины (0.250 с)

получаем - f1=426@-26,f2=426@-26,c=250/250;

Настраиваем раздел FXO Termination.
Enable Current Disconnect - No;
Enable PSTN Disconnect Tone Detection - Yes;
PSTN Disconnect Tone - f1=426@-26,f2=426@-26,c=250/250.

Настраиваем исходящие звонки. Для этого нам нужно будет в частности диалплан настроить, принцип работы такой же как в FXS повторяться не буду. У меня выглядит так:
ht503 fxo dial plan

Дальше идут два немного выбивающихся из общепринятых настроек параметра, по крайней мере на других шлюзах я с этим не сталкивался.

Во-первых: необходимо выставить Wait for Dial-Tone - No иначе звонок никуда не пойдёт.

Во-вторых: этот шлюз умеет звонить в город в два этапа и в один, в случае если мы используем правила набора номера FreePBX то нам нужен один этап, а это значит что Stage Method (1/2) надо указать 1, по умолчанию стоит 2. Если выбрать 2 то при попытке позвонить в город через HT503 Астериску будет приходить Forbidden, а в логе шлюза будет ошибка - ATACtrl::processFxoOutgoingCallInitiated, Invalid User Id
Dispatching event: 17 (CALL_FAILED) on port 1:0
Тоже времени порядочно пришлось потратить что бы эту фичу понять (и снова привет разработчикам).

Проверочная картинка:
Жмём Apply - пробуем звонить. Спасибо за внимание.

За статью спасибо Trustore