Месяц: Сентябрь 2017

ZRTP в Asterisk

Все изменения будем делать в файле sip.conf

Для начала в секции general нужно прописать опцию

directrtpsetup=yes

Далее в настройках пира нужно указать следующие параметры:

[101]
...
context=common
host=10.10.10.10
transport=tls
encryption=no ; обязательно нужно отключить STLS
port=5061
insecure=port,invite

Из основного нужно отключить SRTP командой encryption=no, и включить TLS транспорт, так же обратите внимание на порт, все остальное параметры выставляются на ваше усмотрение и отражены здесь для примера.

Сохраняемся, делаем в консоли Asterisk sip reload и пробуем звонить. Если оба конца поддерживают ZRTP, то тогда ваш голос будет шифрован.

Установка FreeSwitch из репозитария + FusionPBX

Нам понадобятся:

EPEL — https://fedoraproject.org/wiki/EPEL
Remi — http://rpms.famillecollet.com/
Okae — https://okay.com.mx/en/linux/rpm-repositories-for-centos-6-and-7.html

Подключим репозитарий EPEL:
yum install epel-release

Установим Okpay:

Centos 6 on 32 bits: rpm -ivh http://repo.okay.com.mx/centos/6/i386/release/okay-release-1-1.noarch.rpm
Centos 6 on 64 bits: rpm -ivh http://repo.okay.com.mx/centos/6/x86_64/release/okay-release-1-1.noarch.rpm
Centos 7 on 64 bits: rpm -ivh http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm

Теперь ставим Web-интерфейс FusionPBX + Freeswitch:

yum install fuisionpbx

Установка FreeSWITCH 1.7 — CentOS

Предварительная подготовка:

yum update
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
yum install dnsmasq wget -y
yum install git autoconf automake libtool ncurses-devel libjpeg-devel -y
yum install sqlite-devel libcurl-devel pcre-devel speex-devel libedit-devel -y
yum install expat-devel openssl-devel libtiff-devel libX11-devel unixODBC-devel python-devel zlib-devel -y
yum install alsa-lib-devel libogg-devel libvorbis-devel perl-libs gdbm-devel uuid-devel -y yum install gcc-c++ -y
yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm -y
yum install ldns-devel lua-devel libshout-devel lame-devel libsndfile-devel -y

Скачаем и скомпилируем:

cd /root
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
cd /usr/local/src
git clone https://freeswitch.org/stash/scm/fs/freeswitch.git
cd /usr/local/src/freeswitch/
./bootstrap.sh -j
cd /usr/local/src/freeswitch/libs/
git clone https://freeswitch.org/stash/scm/sd/libyuv.git
cd libyuv
make -f linux.mk CXXFLAGS="-fPIC -O2 -fomit-frame-pointer -Iinclude/"
make install
ln -s /usr/lib/pkgconfig/libyuv.pc /usr/lib64/pkgconfig/
cd /usr/local/src/freeswitch/libs/
git clone https://freeswitch.org/stash/scm/sd/libvpx.git
cd libvpx
./configure --enable-pic --disable-static --enable-shared
make
make install
ln -s /usr/local/lib/pkgconfig/vpx.pc /usr/lib64/pkgconfig/
cd /usr/local/src/freeswitch/libs/
git clone https://freeswitch.org/stash/scm/sd/opus.git
cd opus
./autogen.sh
./configure
make
make install
ln -s /usr/local/lib/pkgconfig/opus.pc /usr/lib64/pkgconfig/
cd /usr/local/src/freeswitch/libs/
git clone https://freeswitch.org/stash/scm/sd/libpng.git
cd libpng
./configure
make
make install
ln -s /usr/local/lib/pkgconfig/libpng* /usr/lib64/pkgconfig/

cd /usr/local/src/freeswitch/
./configure -C
make
make install
make samples
make sounds-install moh-install sounds-ru-install
make hd-sounds-install hd-moh-install hd-sounds-ru-install
make uhd-sounds-install uhd-moh-install uhd-sounds-ru-install
make cd-sounds-install cd-moh-install cd-sounds-ru-install

Финальная настройка:

useradd --system --home-dir /usr/local/freeswitch -G daemon freeswitch
passwd -l freeswitch
chown -R freeswitch:daemon /usr/local/freeswitch/
chmod -R 770 /usr/local/freeswitch/
chmod -R 750 /usr/local/freeswitch/bin/*
mkdir /var/run/freeswitch
chown -R freeswitch:daemon /var/run/freeswitch
ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/
ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/
cp /usr/local/src/freeswitch/build/freeswitch.init.redhat /etc/init.d/freeswitch
chmod 750 /etc/init.d/freeswitch
chown freeswitch:daemon /etc/init.d/freeswitch
chkconfig freeswitch on
service freeswitch start

iptables -I INPUT -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5080 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -I INPUT -m string --string "REGISTER sip:" --algo bm --to 65 -m hashlimit --hashlimit 4/minute
--hashlimit-burst 1 --hashlimit-mode srcip,dstport --hashlimit-name sip_r_limit -j ACCEPT
iptables -I INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 5060 -j ACCEPT
iptables -I INPUT -p udp -m udp --dport 5080 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 5080 -j ACCEPT
iptables -I INPUT -p udp -m udp --dport 16384:32768 -j ACCEPT
service iptables save

Проверяем работу:


fs_cli
freeswitch@internal> status
UP 0 years, 0 days, 0 hours, 1 minute, 45 seconds, 488 milliseconds, 44 microseconds
FreeSWITCH (Version 1.7.0 git 0d6e17b 2015-10-29 22:02:14Z 64bit) is ready
0 session(s) since startup
0 session(s) - peak 0, last 5min 0
0 session(s) per Sec out of max 30, peak 0, last 5min 0
1000 session(s) max
min idle cpu 0.00/98.63
Current Stack Size/Max 240K/8192K

Монтируем непонятный образ.

У нас есть образ, но непонятно как его монтировать.
Делам так:

$ /sbin/fdisk -lu disk.img
You must set cylinders.
You can do this from the extra functions menu.

Disk disk.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes

Device Boot Start End Blocks Id System
disk.imgp1 * 63 96389 48163+ 83 Linux
disk.imgp2 96390 2056319 979965 82 Linux swap / Solaris
disk.imgp3 2056320 78140159 38041920 5 Extended
disk.imgp5 2056383 3052349 497983+ 83 Linux
disk.imgp6 3052413 10859939 3903763+ 83 Linux
disk.imgp7 10860003 68372639 28756318+ 83 Linux
disk.imgp8 68372703 76180229 3903763+ 83 Linux
disk.imgp9 76180293 78140159 979933+ 83 Linux

Нам нужен 7-ой раздел, начинается с сектора 10860003
Тогда наш след. шаг будет таким:

# losetup /dev/loop0 disk.img -o $((10860003 * 512))
# file -s /dev/loop0
/dev/loop0: Linux rev 1.0 ext3 filesystem data
# mount /dev/loop0 /mnt
[…]

Если на нам больше не нужен раздел, то:

# umount /mnt
# losetup -d /dev/loop0

Теперь мы можем постоянно использовать этот образ как часть файловой системы:

# mount -o loop,offset=$((10860003 * 512)) disk.img /mnt

Проблема с BMC (IPMI) на сервере Intel (CentOS)

Страница web-интерфейса BMC грузится и грузится, можно ждать хоть до посинения. IP BMC пингуется бодро.

Ситуация не совсем обычная, так как за 7 работы в хостинге вижу первый раз.

Можно сбросить BMC, без перезагрузки сервера.

# yum install ipmitool
Загружены модули: fastestmirror
Подготовка к установке
Loading mirror speeds from cached hostfile
* base: mirror.awanti.com
* extras: mirror.awanti.com
* openvz-kernel-rhel6: openvz.rinet.ru
* openvz-utils: openvz.rinet.ru
* updates: mirror.awanti.com
Разрешение зависимостей
—> Проверка сценария
—> Package ipmitool.x86_64 0:1.8.15-2.el6 will be для установки
—> Обработка зависимостей: gettext для пакета: ipmitool-1.8.15-2.el6.x86_64
—> Проверка сценария
—> Package gettext.x86_64 0:0.17-18.el6 will be для установки
—> Обработка зависимостей: libgomp.so.1(GOMP_1.0)(64bit) для пакета: gettext-0.17-18.el6.x86_64
—> Обработка зависимостей: cvs для пакета: gettext-0.17-18.el6.x86_64
—> Обработка зависимостей: libgomp.so.1()(64bit) для пакета: gettext-0.17-18.el6.x86_64
—> Проверка сценария
—> Package cvs.x86_64 0:1.11.23-16.el6 will be для установки
—> Package libgomp.x86_64 0:4.4.7-18.el6 will be для установки
—> Проверка зависимостей окончена

Зависимости разрешены

==================================================================================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
==================================================================================================================================================================================
Установка:
ipmitool x86_64 1.8.15-2.el6 base 465 k
Установка зависимостей:
cvs x86_64 1.11.23-16.el6 base 712 k
gettext x86_64 0.17-18.el6 base 1.8 M
libgomp x86_64 4.4.7-18.el6 base 134 k

Результат операции
==================================================================================================================================================================================
Установить 4 пакет(а,ов)

Объем загрузки: 3.1 M
Будет установлено: 9.0 M
Продолжить? [y/N]: y
Загрузка пакетов:
(1/4): cvs-1.11.23-16.el6.x86_64.rpm | 712 kB 00:00
(2/4): gettext-0.17-18.el6.x86_64.rpm | 1.8 MB 00:00
(3/4): ipmitool-1.8.15-2.el6.x86_64.rpm | 465 kB 00:00
(4/4): libgomp-4.4.7-18.el6.x86_64.rpm | 134 kB 00:00
———————————————————————————————————————————————————————————-
Общий размер 7.7 MB/s | 3.1 MB 00:00
Запуск rpm_check_debug
Проверяем сценарий
Проверка сценария прошла успешно
Запускается сценарий
Установка : libgomp-4.4.7-18.el6.x86_64 1/4
Установка : cvs-1.11.23-16.el6.x86_64 2/4
Установка : gettext-0.17-18.el6.x86_64 3/4
Установка : ipmitool-1.8.15-2.el6.x86_64 4/4
Verifying : cvs-1.11.23-16.el6.x86_64 1/4
Verifying : ipmitool-1.8.15-2.el6.x86_64 2/4
Verifying : libgomp-4.4.7-18.el6.x86_64 3/4
Verifying : gettext-0.17-18.el6.x86_64 4/4

Установлено:
ipmitool.x86_64 0:1.8.15-2.el6

Зависимости установлены:
cvs.x86_64 0:1.11.23-16.el6 gettext.x86_64 0:0.17-18.el6 libgomp.x86_64 0:4.4.7-18.el6

Готово!

Если, при запуске ipmitool будет вот так:

# ipmitool
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory

 

То надо под грузить модули:

# modprobe ipmi_devintf

# modprobe ipmi_si

После чего:

# ipmitool bmc reset cold
Sent cold reset command to MC

И мы имеем быстро загружающуюся страницу BMC.