пятница, 8 ноября 2013 г.

понедельник, 4 ноября 2013 г.

OpenSSL certificate generation script  - как ни крути, полезная штука! Честно украдено у freeRADIUS.
#!/bin/ksh
SSL=/usr/local/openssl

export PATH=${SSL}/bin/:${SSL}/ssl/misc:${PATH}
export LD_LIBRARY_PATH=${SSL}/lib

# needed if you need to start from scratch otherwise the CA.pl -newca command doesn't copy the
new
# private key into the CA directories
rm -rf demoCA

echo "*********************************************************************************"
echo "Creating self-signed private key and certificate"
echo "When prompted override the default value for the Common Name field"
echo "*********************************************************************************"
echo

# Generate a new self-signed certificate.
# After invocation, newreq.pem will contain a private key and certificate
# newreq.pem will be used in the next step
openssl req -new -x509 -keyout newreq.pem -out newreq.pem -days 730 \
 -passin pass:whatever -passout pass:whatever

echo "*********************************************************************************"
echo "Creating a new CA hierarchy (used later by the "ca" command) with the certificate"
echo "and private key created in the last step"
echo "*********************************************************************************"
echo

echo "newreq.pem" | CA.pl -newca >/dev/null

echo "*********************************************************************************"
echo "Creating ROOT CA"
echo "*********************************************************************************"
echo

# Create a PKCS#12 file, using the previously created CA certificate/key
# The certificate in demoCA/cacert.pem is the same as in newreq.pem. Instead of
# using "-in demoCA/cacert.pem" we could have used "-in newreq.pem" and then omitted
# the "-inkey newreq.pem" because newreq.pem contains both the private key and certificate
openssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.p12 -cacerts \
 -passin pass:whatever -passout pass:whatever

# parse the PKCS#12 file just created and produce a PEM format certificate and key in root.pem
openssl pkcs12 -in root.p12 -out root.pem -passin pass:whatever -passout pass:whatever

# Convert root certificate from PEM format to DER format
openssl x509 -inform PEM -outform DER -in root.pem -out root.der

echo "*********************************************************************************"
echo "Creating client private key and certificate"
echo "When prompted enter the client name in the Common Name field. This is the same"
echo " used as the Username in FreeRADIUS"
echo "*********************************************************************************"
echo

# Request a new PKCS#10 certificate.
# First, newreq.pem will be overwritten with the new certificate request
openssl req -new -keyout newreq.pem -out newreq.pem -days 730 \
 -passin pass:whatever -passout pass:whatever

# Sign the certificate request. The policy is defined in the openssl.cnf file.
# The request generated in the previous step is specified with the -infiles option and
# the output is in newcert.pem
# The -extensions option is necessary to add the OID for the extended key for client
authentication
openssl ca -policy policy_anything -out newcert.pem -passin pass:whatever \
 -key whatever -extensions xpclient_ext -extfile xpextensions \
 -infiles newreq.pem

# Create a PKCS#12 file from the new certificate and its private key found in newreq.pem
# and place in file cert-clt.p12

openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-clt.p12 -clcerts \
-passin pass:whatever -passout pass:whatever
# parse the PKCS#12 file just created and produce a PEM format certificate and key in cert-clt.pem
openssl pkcs12 -in cert-clt.p12 -out cert-clt.pem -passin pass:whatever -passout pass:whatever
# Convert certificate from PEM format to DER format
openssl x509 -inform PEM -outform DER -in cert-clt.pem -out cert-clt.der
echo "*********************************************************************************"
echo "Creating server private key and certificate"
echo "When prompted enter the server name in the Common Name field."
echo "*********************************************************************************"
echo
# Request a new PKCS#10 certificate.
# First, newreq.pem will be overwritten with the new certificate request
openssl req -new -keyout newreq.pem -out newreq.pem -days 730 \
-passin pass:whatever -passout pass:whatever
# Sign the certificate request. The policy is defined in the openssl.cnf file.
# The request generated in the previous step is specified with the -infiles option and
# the output is in newcert.pem
# The -extensions option is necessary to add the OID for the extended key for server authentication
openssl ca -policy policy_anything -out newcert.pem -passin pass:whatever -key whatever \
-extensions xpserver_ext -extfile xpextensions -infiles newreq.pem
# Create a PKCS#12 file from the new certificate and its private key found in newreq.pem
# and place in file cert-srv.p12
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-srv.p12 -clcerts \
-passin pass:whatever -passout pass:whatever
# parse the PKCS#12 file just created and produce a PEM format certificate and key in cert-srv.pem
openssl pkcs12 -in cert-srv.p12 -out cert-srv.pem -passin pass:whatever -passout pass:whatever
# Convert certificate from PEM format to DER format
openssl x509 -inform PEM -outform DER -in cert-srv.pem -out cert-srv.der
#clean up
rm newcert.pem newreq.pem
10. OpenSSL extensions file
[ xpclient_ext]
extendedKeyUsage = 1.3.6.1.5.5.7.3.2
[ xpserver_ext ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

вторник, 8 октября 2013 г.

Проброс USB в XenServer 6.2 (USB Passthrough)

Проброс USB из XenServer 6.2 в виртуальную машину
В XenServer 6.2 пробросить USB порт в виртуальную машину нельзя. Можно пробросить целиком контроллер USB, а вместе с ним в "виртуалку" попадут и все порты связанные с этим контроллером. По такому же принципу можно пробросить практически любое устройство из хостовой системы. Как правило, на сервере от 2 USB контроллеров. Узнать это можно командой хостовой системе:


[root@xen ~]# lspci | grep USB
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

Нас интересуют идентификаторы контроллеров 00:1a.0 и 00:1d.0 именно их мы и будем использовать в дальнейшем. Наверняка, угадать к какому контроллеру подключено устройство будет сложно. Для этого есть команда lsusb из пакета usbutils, но в XenServer этот пакет не установлен. Можно попытаться использовать dmesg. Или данные из файла /proc/bus/usb/devices:

cat /proc/bus/usb/devices

Например информация о флешке Transcend в этом файле выглядит таким образом:
T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 11 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=8564 ProdID=1000 Rev=11.00
S:  Manufacturer=JetFlash
S:  Product=Mass Storage Device
S:  SerialNumber=643SX46T1R2IPSGQ
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=31875us

Видно, что используется Bus=02, значит контроллер будет 00:1d.0
Это отражено в описании самого контроллера:

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  1, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 2.06
S:  Manufacturer=Linux 2.6.32.43-0.4.1.xs1.8.0.835.170778xen ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0         <------------------------------------<------------------------<---------
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms


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

Например так:

[root@xen ~]# xe vm-list name-label=test
uuid ( RO)           : cd9c4655-dc8a-c086-103c-c1716293449d
     name-label ( RW): test
    power-state ( RO): running

Зная идентификатор контроллера в консоли XenServer нужно выполнить команду:

[root@xen ~]# xe vm-param-set other-config:pci=0/000:00:1d.0 uuid=cd9c4655-dc8a-c086-103c-c1716293449d

Где 0/000: - обязательная часть, далее идет сам идентификатор контроллера.
Проверить правильность настроек можно командой:

xe vm-param-list uuid=cd9c4655-dc8a-c086-103c-c1716293449d | grep other-config

Должно присутствовать: pci: 0/000:00:1d.0

После перезапуска ВМ, в диспетчере задач, в случае если установлен Windows, появится хостовый USB контроллер с подключенным к нему устройством.

Для того чтобы отключить проброс контроллера, в консоли XenServer необходимо выполнить команду:

xe vm-param-remove param-name=other-config param-key=pci uuid=cd9c4655-dc8a-c086-103c-c1716293449ds
Украдено с http://wiki.autosys.tk/Citrix.%D0%9F%D1%80%D0%BE%D0%B1%D1%80%D0%BE%D1%81-USB-%D0%B2-XenServer-6-2-USB-Passthrough.ashx

понедельник, 16 сентября 2013 г.

Xenserver + Debian wheezy install

Чтобы добавить темплэйт Debian Wheezy в ксен нужно выполнить такой скрипт:

https://gist.github.com/hingstarne/5320400

#!/bin/bash
# Script to install a debian wheezy template on xcp 1.1 and above, or
# Citrix (TM) Xenserver 5.6 and above.
# Copyright (C) 2012 Arne-Kristian Hingst - All Rights Reserved
# Permission to copy and modify is granted under the eupl license
# http://ec.europa.eu/idabc/servlets/Docbb6d.pdf?id=31979
# Last revised 04/04/2013
#

# Add your favourite mirror here
MIRROR=http://mirror.yandex.ru/debian/

# No need to edit something below
SQUEEZE=$(xe template-list name-label=Debian\ Squeeze\ 6.0\ \(64-bit\) --minimal)
if [[ -z $SQUEEZE ]] ; then
  SQUEEZE=$(xe template-list name-label=Debian\ Squeeze\ 6.0\ \(64-bit\)\ \(experimental\) --minimal)
if [[ -z $SQUEEZE ]] ; then
  echo "Cant find Squeeze 64bit template, is this on 5.6 or above?"
exit 1
fi
fi
NEWUUID=$(xe vm-clone uuid=$SQUEEZE new-name-label="Debian Wheezy 7.0 (64-bit)")
xe template-param-set uuid=$NEWUUID other-config:install-methods=http,ftp,nfs other-config:default_template=true
xe template-param-set uuid=$NEWUUID other-config:install-methods=http other-config:debian-release=wheezy
xe vm-param-set uuid=$NEWUUID other-config-install-repository=$MIRROR

вторник, 14 мая 2013 г.

Себе на заметку

Asterisk 1.8 + chan_sccp 4.1/chan_sccp41_RC1 < Asterisk 1.6 + chan_sccp_3.1.3

внезапно 4.0/4.1 стал  вызывать странные рестарты астериска.


Пофиксил:

для 7942 стабильно заработало с прошшивкой SCCP42.8-5-4S
а 7965 перестал валить Атериск  с прошивкой SCCP45.9-0-2SR1S

воскресенье, 21 апреля 2013 г.

copy vhd from nfs/cifs

Итак задача: скопировать в локальный стораж VHD с сетевого хранилища.
Можно сделать это через импорт в XenCenter, но тут есть свой ньюанс - надо приаттачить сетевой диск к машине и трафик будет идти по схеме NAS - машина с XenCenter - XenServer, что соответственно негативно скажется на скорости. Еще можно приаттачить NFS-VHD storage, тут уже всё ок, но не всегда работает. ( кстати: чтобы добавить туда свой VHD-образ надо создать новый диск, а затем заменить его своим образом )

А можно пойти другим путем.
Нам нужна будет утилитка vhd2xen от акрониса ( можно взять тут )
качаем: wget http://download.acronis.com/vhd2xen.i686
даем права на исполнение: chmod +x vhd2xen.i686
ну и запускаем установку: ./vhd2xen.i686
далее отвечаем на несложные вопросы
и вуаля - всё готово для нашего действа.
Установилась наша утилитка вот сюда: /usr/lib/Acronis/VHD2XEN/.

Далее нам надо смонтировать наш сетевой диск
mount -t nfs ip:/path /mnt/storage
или mount -t cifs //share /mnt/storage -o username=**** password=****

Все готово к импорту, можно начинать:




[root@WWiskas disk_c]# /usr/lib/Acronis/VHD2XEN/vhd2xen.sh /mnt/storage/path/to/vhd.vhd

Copyright (C) Acronis, 2000-2008.
All rights reserved.

VHD to XEN converter

Select the storage repository to import VHD file to:
1. uuid - XenServer... (unknown)
2. uuid - Local... (local)
3. uuid - DVD... (unknown)
4. uuid - Removable... (unknown)
2

A VHD file must be decompressed before importing to an internal
storage. You need about 98Gb free space to save the raw
uncompressed image and write permissions in the location where
the original VHD file is stored.

Enter XEN name for imported disk:
ИМЯ_ДИСКА_для_XEN

Importing may take a long time depending on vhd size.


спустя некоторое время:
Conversion done, importing to XEN...

и еще немного погодя:
Import successfully finished!

в общем по гигабиту у меня копирование диска в 100ГБ ( 40 занято ) заняло около 4х часов. ( ну вернее скорость копирования в среднем была 20-35 Мб/сек )


Всё, нам остается только ожидать счастливого окончания операции.
А, и еще - нам потребуются права на запись в папку с VHD, иначе импорт закончится крашем.

но этот способ тоже не идеален - сначала оно делает RAW обрах, который равен по объему всему месту, а не только данным, и затем копирует его.

вторник, 16 апреля 2013 г.

Xenserver 6.1 raid monitoring

Нормально Dell Openmanage не встает на XenServer 6.1, так что приходится извращаться.


сначала добавим репозитарии делла:

wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash

в конце увидим:
Installing repository rpm: http://linux.dell.com/repo/community/content/el5-i386/noarch/dell-community-repository-1-11.2.el5.noarch.rpm
Done!

далее второй реп:
wget -q -O - http://linux.dell.com/repo/hardware/bootstrap.cgi | bash

затем установим необходимые для мониторинга пакеты:

yum -y install srvadmin-base
yum -y install srvadmin-storageservices

после этого было бы неплохо перезагрузиться, но можно и потом.

после этого можно смотреть статус с помощью команды 

omreport storage vdisk

если у вас не работает, то вероятнее всего надо создать симлинк: 
ln -s /opt/dell/srvadmin/sbin/omreport /usr/local/sbin/omreport