С одной стороны нам понадобится сам asterisk.
Можно воспользоваться одним из готовых дистрибутивов таких как Trixbox, Elastix, AsteriskNow, но у меня не получилось добиться адекватной работы от модуля работы с h323 входящего в состав первых двух дистрибутивов( во всяком случае при настройке транков к avaya).
У кого тоже не получилось или просто интересно, прошу под кат.
Воспользуемся другим драйвером, а именно OpenH323 от NuFone, так как его нет ни в одном из готовых дистрибутивов, то будем мы его собирать из исходников, за одно и сам asterisk соберем.
Но для начала нам понадобиться ОС, под все наши «упражнения».
Я выбрал последнюю( на момент проведения данных действий) стабильную версию CentOS, а именно 5.8( спасибо centos.org и зеркалу от Яндекс).
Качаем — Запускаем — Ставим
Тут по желанию, ставить можно при помощи gui( тогда жмем далее — далее — да — далее — да — настраиваем сеть — далее — временная зона — рутовый пароль — можно по выбирать нужные дополнительные пакеты, но мы после установки воспользуемся yum, так что далее).
Наблюдаем процесс установки/идем пить чай/занимаемся другими делами.
После установки и перезагрузки однократно запустится setup, в котором надо настроить/отключить selinux и firewall.
Если момент запуска setup Вы проморгали — его можно самостоятельно запустить написав в терминале setup
Нам оттуда понадобится только пункт firewall configuration он запускает system-config-securitylevel-tui(можно его запустить вместо setup).
Там для ускорения процесса отключим firewall и selinux(настройка и того и другого темы для отдельных статей).
Все, можно подключаться к серверу по SSH и ставить asterisk с необходимыми дополнениями.
Установим необходимые пакеты, а именно
make
gcc-c++
kernel-devel
openssl-devel
expat-devel
gnutls-devel
flex
bison
ncurses-devel
libxml2-devel
sqlite-devel
yum install make gcc-c++ kernel-devel openssl-devel expat-devel gnutls-devel flex bison ncurses-devel libxml2-devel sqlite-devel -y
Качаем необходимые библиотеки в директорию /root
Open H.323 v1.18.0
PWLib v1.10.0
cd /root
wget http://www.voxgratia.org/releases/openh323-v1_18_0-src-tar.gz
wget http://www.voxgratia.org/releases/pwlib-v1_10_0-src-tar.gz
Переименовываем.
mv openh323-v1_18_0-src-tar.gz openh323-v1_18_0-src.tar.gz
mv pwlib-v1_10_0-src-tar.gz pwlib-v1_10_0-src.tar.gz
Распаковываем.
tar vfxz openh323-v1_18_0-src.tar.gz
tar vfxz pwlib-v1_10_0-src.tar.gz
И еще раз переименовываем.
mv pwlib_v1_10_0 pwlib
mv openh323_v1_18_0 openh323
Добавляем необходимые компилятору заголовки.
cp /usr/src/kernels/2.6.18-308.4.1.el5-i686/include/linux/compiler.h /usr/include/linux
Компилируем библиотеки.
cd /root/pwlib
./configure
make clean opt
cd /root/openh323
./configure
make clean opt
Копируем скомпилированные библиотеки вместе со ссылками в нужное место.
cp /root/openh323/lib/libh323_linux_x86_r* /lib
cp /root/pwlib/lib/libpt_linux_x86_r* /lib
Качаем исходники asterisk нужной нам версии, например 10.4 (или по старому счету 1.10.4).
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.4.0.tar.gz
Распаковываем.
tar vfxz asterisk-10.4.0.tar.gz
Заходим в директрию с исходниками и указываем необходимые пути.
cd asterisk-10.4.0
export OPENH323DIR=/root/openh323/
export PWLIBDIR=/root/pwlib/
export OPENH323_LIBDIR=/lib
export PWLIB_LIBDIR=/lib
и запускаем
./configure
Если все прошло хорошо, то увидим выполненный в псевдографике логотип asterisk.
Можно запускать.
make menuselect
Там channel drivers и в самом низу отмечаем chan_h323, нажимаем s чтобы сохраниться и выйти далее.
make
make install
make samples
make config
/sbin/chkconfig asterisk on
Можно запустить asterisk.
/etc/init.d/asterisk start
ИТОГО:
Работающий asterisk, с драйвером канала h.323 от NuFone.
Создаем транк группу на avaya:
add trunk-group next
page 1
Group Type: isdn
Carrier Medium: H.323
Service Type: public-ntwrk
Member Assignment Method: auto
Number of Members: 2 необходимое количество линий
change node-names ip
asterisk X.X.X.X
add signaling-group next
page 1
Group Type: h.323
Trunk Group for Channel Selection: "номер транковой группы"
Near-end Node Name: procr
Near-end Listen Port: 1720
Far-end Node Name: asterisk
Far-end Listen Port: 1720
На этом настройка avaya пока закончена.
Переходим к asterisk.
cd /etc/asterisk/
В первую очередь нам понадобится h323.conf:
[general]
port = 1720
bindaddr = X.X.X.X ; ip адресс астериска
disallow=all
allow=alaw
dtmfmode=inband
gatekeeper = DISABLE
context=h323-in ; контекст для входящих звонков по данному каналу
progress_setup = 8
progress_alert = 8
[avaya] ; контекст коннекта к avaya
type=friend
host=Y.Y.Y.Y ; ip адрес CM
port=1720
diallow=all
allow=alaw
h245tunneling=yes
Далее можно/нужно рестартануть потоки с обеих сторон.
asterisk:
asterisk -r
module reload chan_h323.so
avaya:
busyout trunk 15
busyout signaling-group 15
release signaling-group 15
release trunk 15
проверяем
status trunk 15
0015/001 T00022 in-service/idle no
Для того, чтобы можно было использовать данный транк, необходимо внести изменения в extensions.conf:
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2
TRUNKMSD=1
[default]
[h323-out] ; контекст исходящих на avaya
exten => _X.,1,Dial(H323/${EXTEN}@avaya) ; все исходящие в неизменном виде отправляем на avaya
[h323-in]
exten => _X.,1,Dial(SIP/${EXTEN}) ; все входящие по каналу h323 пытаемся передать на соответствующие sip номера в неизменном виде
Конечно, в реальной схеме такие конструкции использовать не стоит, здесь они приведены для того, чтобы показать концепцию.
Приведу конфигурационный файл sip.conf
[general]
bindport=5060
bindaddr=0.0.0.0
context=default
allowguests=no
[99999] ; тестовый sip юзер
type=friend
secret=99999
host=dynamic
context=h323-out ; использующий для исходящих звонков контекст h323-out из extensions.conf
cid_number=00000 ; с вот таким интересным АОН
Можно заняться совершением тестовых звонков
и проконтролировать со стороны asterisk, просто запустив его консоль:
asterisk -r
А со стороны avaya
list trace tac #15
PS: при подготовке статьи использовалась информация с asterisk.ru ну и гугл, конечно.
Автор: snorck