Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Настройка VoIP-транка между Avaya и Asterisk

База знаний Интеграция с другими АТС Станции Avaya

Нередко возникает задача интеграции IP-АТС Asterisk и IP-АТС Avaya. Причин этому может быть немало: как начиная с задач модернизации Avaya, так и расширение возможностей за счет Астериск. Ведь, как известно, Avaya имеет не все возможности, которые есть у Asterisk (и наоборот), а если такие возможности в Avaya и есть, то нередко есть лицензионные ограничения: подключение функции в Avaya может стоить больших денег.

В этой статье мы рассматриваем настройку транка между станциями двух вендоров.

Статей о настройке транка между Asterisk и Avaya в интернете можно найти немало, но, когда я сам столкнулся с этой проблемой, ни одно из описанных решений до конца не подошло, поэтому и пишу статью с описанием настроек в своём конкретном случае.

H.323-транк между Asterisk и Avaya.

Лицензии на подключение новых номеров к АТС Avaya закончились, и клиент решил расширить количество корпоративных абонентов за счет подключения АТС на базе Asterisk. Лицензии на SIP-транки у клиента не оказалось и её приобретение изначально не рассматривалось, поэтому остался только вариант с H.323. С нашей стороны — сборка FreePBX с некоторыми доработками, которые не повлияют на приведенные настройки, звонки наружу — тоже через Avaya.

Итак, я получил адрес, порт, логин и пароль для подключения к Avaya по SSH и тут же появилась первая проблема — для подключения нужен софт от Avaya (его у меня, естественно, нет, и в свободном доступе он обнаружен не был) или эмулятор терминала. Эмулятор, к счастью, быстро нашелся — такой терминал поддерживает программа TuTTY (http://putty.dwalin.ru/?downloads). Для linux TuTTY нет, но под wine работает прекрасно.

Сразу несколько слов об управлении консолью Avaya. Кнопки внизу подписаны, но, всё равно, привожу краткое описание:

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

        F2 — обновить (не пользовался)

        F3 — применить внесенные изменения и выйти из текущего меню настроек (изменения сразу же сохраняются и вступают в силу, дополнительных манипуляций не требуется)

        F4 — очистить поле, в котором стоит курсор

        F5 — помощь по полю, в котором стоит курсор, или набранной команде (выводит возможные значения как '?' у cisco)

        F6 — редактировать (не пользовался)

        F7, F8 — для пролистывания вперед/назад многостраничных меню и результатов команд.

        Также:

        Shift+Tab — стереть одно слово

        R, ввод — повтор последней введенной команды.

       Некоторые основные команды:

        logoff — выход из консоли

        list — вывести список элементов, например «list trunk-group» выводит список транков

        display — вывести настройки конкретного элемента, например «display trunk-group 10» выводит настройки транка 10.

        change — изменить настройки элемента

        busyout trunk, busyout signaling-group — сделать недоступным указанный транк, сигнальную группу (необходимо для изменения настроек транка, сигнальной группы, находящихся в работе).

        release trunk, release signaling-group — вернуть в работу указанный транк, сигнальную группу.

Сама настройка:

  1. Добавляем имя хоста Asterisk в node-names

change node-names ip
Вписываем IP-адрес хоста Asterisk и какое-нибудь имя. Кстати procr — LAN-интерфейс Avaya, к которому и будет подключаться Asterisk.

 Если ни один из существующих наборов кодеков не подходит, создаем свой, иначе пропускаем этот и следующий пункты. (смотрим номера существующих наборов кодеков командой list и выбираем незанятый номер)

change ip-codec-set 3

Вписываем нужные кодеки, F5 выдаёт полный список возможных.

Обратите внимание на опцию FAX на второй странице настроек. Если предполагается хождение факсов между Asterisk и Avaya, лучше сразу поставить off.

  1. Для использования созданного набора кодеков нужно создать новый ip-network-region (выбираем следующий незанятый номер)

change ip-network-region 3

Опции:

  • Location — ставим номер LAN-интерфейса, к которому будет привязан регион сети (в моём случае он один, получить список можно командой «list ip-interface all»)
  • Name — вписываем любое имя
  • Codec Set — вписываем номер набора кодеков, созданного на шаге 2
  • «Intra-region IP-IP Direct Audio» и «Inter-region IP-IP Direct Audio» ставим «no», без этого голос у меня не пошел.

 Создаем транк (как и в предыдущих случаях выбираем следующий незанятый номер)

add trunk-group 3

Заполняем как на изображении.

Опции:

  • Group Name — произвольное имя
  • «Member Assignment Method», «Signaling Group», «Number of Members» пока не трогаем, т.к. сигнальная группа еще не создана. После создания сигнальной группы возвращаемся и вписываем «Signaling Group» — номер сигнальной группы, «Number of Members» — количество одновременных вызовов в транке.
  • TAC — код доступа к транку. Для этих кодов в диалплане должно быть создано правило типа dac. Если на АТС есть другие транки, можно посмотреть их TAC и выбрать незанятый из того же диапазона. Если же нет, нужно создать правило в диалплане. Пример:

change dialplan analysis

Листаем на 3-ю страницу и заполняем как на изображении:

 

На АТС были настроены кириллические Caller ID и на Asterisk приходила белиберда вместо звонящего номера, поэтому «Send Name» установлено в «n», а «Format» — в «unk-pvt». Так Avaya посылает на Asterisk только номер.

 Создаем сигнальную группу

change signalling-group 3

        Опции:

  •  «Trunk Group for Channel Selection» и «Trunk Group for NCA TSC» — ставим номер транка из пункта 4.
  • Far-end Node Name — вписываем имя узла из пункта 1
  • Near-end Listen Port — может быть 1720, 5000-5999. Впишите номер порта не занятый другими сигнальными группами.
  • Far-end Network Region — введите номер региона сети из пункта 3

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

 

  1. Создаем маршрут в транк

change route-pattern 3

Опции:

  • Grp No — номер транка.
  • FRL — 0, если транк к внутреннем номерам, 1 — если к провайдеру.
  • Numbering Format — для правильного отображения Caller ID нужно выставить lev0-pvt, если транк к внутренним номерам, natl-pub или pub-unk, если транк к провайдеру.

 Направим в полученный транк номера 2400-2599.

change dialplan analysis

        change uniform-dialplan 2

        

        change aar analysis 2

Route Pattern — номер маршрута в транк

Перенаправляем входящие звонки на Asterisk, если это нужно

change inc-call-handling-trmt trunk-group 1 (здесь 1 — номер транка к провайдеру)

Number Len — длина внешнего номера

Number Digits — внешний номер

Del — количество цифр, удаляемых из внешнего номера

Insert — цифры, вставляемые в номер

В данном случае вызов снаружи направляется на номер 2400

 Настройка на стороне Asterisk.

        Для работы по протоколу H.323 я использовал модуль chan_ooh323.so. Создаем файл /etc/asterisk/ooh323.conf

 

[general]

class="PreformattedText console">;Define the asterisk server h323 endpoint
disallow=all
allow=alaw
;The port asterisk should listen for incoming H323 connections.
;Default — 1720
port=1720 ;должен соответствовать порту, указанному в Far-end Listen Port в пункте 5
;The IP address, asterisk should listen on for incoming H323
;connections
;Default — 0.0.0.0: tries to find out local ip address on it's own
bindaddr=0.0.0.0         ;Лучше указать конкретный адрес для привязки
;Alias address for for asterisk server
;Default — «Asterisk PBX»
h323id=ObjSysAsterisk
;e164=100
;CallerID for the asterisk originated calls
;Default — Same as h323id
callerid=PBX
;This parameter indicates whether channel driver should register with
;gatekeeper as a gateway or an endpoint.
;Default — no
;gateway=no
;Whether this asterisk server will use gatekeeper.
;Default — DISABLE
;gatekeeper = DISCOVER
;gatekeeper = a.b.c.d
gatekeeper = DISABLE
;Whether asterisk should use fast-start and tunneling for H323 connections.
;Default — yes
faststart=yes
h245tunneling=yes
;Whether media wait for connect for fast start call
;Default — no
mediawaitforconnect=yes
;Location for H323 log file
;Default — /var/log/asterisk/h323_log
logfile=/var/log/asterisk/h323_log
;Following values apply to all users/peers/friends defined below, unless
;overridden within their client definition
;Sets default context all clients will be placed in.
;Default — default
context=from-trunk
;Sets rtptimeout for all clients, unless overridden
;Default — 60 seconds
rtptimeout=60      ; Terminate call if 60 seconds of no RTP activity
;when we're not on hold
; dtmf mode to be used by default for all clients. Supports rfc2833, q931keypad,
; h245alphanumeric, h245signal.
;Default — rfc 2833
dtmfmode=rfc2833
 [avaya]
type=friend
context=from-internal ;На АТС Avaya внутренние номера
ip=1.2.3.4                     ;IP-адрес АТС Avaya
port=5001                    ;Должен соответствовать Near-end Listen Port, указанному
                                     ;в пункте 5
disallow=all
allow=alaw
allow=ulaw
t38mode=disable
dtmfmode=rfc2833

Набирать номера в транк можно так

Dial (OOH323/avaya/${EXTEN})

 После непродолжительного тестирования оказалось, что, если входящий вызов со стороны Avaya переходит в состояние «занято», то канал этого вызова продолжает висеть неопределённое время, каждый из таких повисших каналов грузит одно из ядер процессора на 100%. Типичная картина:

 

pbx*CLI> core show channels

 Channel                 Location   State    Application (Data)
OOH323/avaya-3  s-CHANUNAVAIL@macro- Busy   Congestion (10)
OOH323/avaya-5  s-CHANUNAVAIL@macro- Busy   Congestion (10)
 2 active channels
6 calls processed

 Даже в таком виде схема рабочая, и несколько повисших каналов не нарушают работу Asterisk. Чтобы повисших каналов не становилось слишком много, можно подвесть такой скрипт в cron на выполнение каждую минуту:

 

#!/bin/bash

ASTERISK=/usr/sbin/asterisk
CHAN= «avaya»
 while read CHANNEL; do
        if [[ $CHANNEL =~ ^ (OOH323/$CHAN-[0-9]+) ([^!]*!){5}
(Busy
|Congestion) ([^!]*!){6} ([0-9]+).* ]]; then
                  if [ ${BASH_REMATCH[5]} -ge 20 ]; then
                           $ASTERISK -rx «channel request hangup ${BASH_REMATCH[1]}»
                  fi
        fi
 done <<<» `$ASTERISK -rx \»core show channels concise\»`»

 Впрочем, гораздо более лучшим решением является использование модуля chan_h323.so вместо chan_ooh323.so или Yate в режиме H.323 — SIP прокси. Об этих схемах будет рассказано в последующих статьях.

внутренние номера, Т38, call, for, Channel, Группа вызовов, FreePBX, Call-файл, VoIP, Подключение, настройка T38 fax, настройка, sip, asterisk, Cisco