Академический Документы
Профессиональный Документы
Культура Документы
Administration
Авторский курс
Александра Левичева
ASTERISK
2
Лабораторная топология
На рисунке представлена топология, которая используется для лабораторных работ в курсе AAE
3
План набора номеров в лабораторной топологии
4
Лабораторная работа №1.0 – Установка Asterisk 11.2
Описание работы
В данной работе Вы установите IP PBX Asterisk на CentOS выбрав необходимые модули (OOH323), а
кроме того необходимые зависимости для Asterisk (LibPRI, DAHDI).
1) Установка зависимостей
a. Отключить selinux
b. Установить необходимые сетевые и системные параметры
c. Обновиться
d. Установить зависимости и необходимое ПО
e. Установить необходимые модули ядра
2) Загрузка Asterisk и его модулей (dahdi, libpri)
a. wget
i. libpri
ii. dahdi
iii. asterisk
b. разархивировать скачанное
3) Установка ПО с необходимыми модулями
Установка
При установке Asterisk необходимо настроить доступ к интернету, также установка системы
производится под пользователем root (с целью ускорения процесса).
Шаг 4 Asterisk 11 использует SQLite3 поэтому для него необходимо установить sqlite-devel.
yum install –y gcc gcc-c++ make wget subversion libxml2-devel ncurses-devel
yum install –y openssl-devel vim-enhanced sqlite-devel
5
mkdir -p /usr/src/asterisk-complete/libpri
mkdir -p /usr/src/asterisk-complete/dahdi
mkdir -p /usr/src/asterisk-complete/asterisk
Установка DAHDI
make config
Шаг 12 Добавить в автозагрузку
chkconfig dahdi on
Шаг 14 Для проверки загружен ли модуль DAHDI в ядро операционной системы нужно ввести.
lsmod | grep dahdi
Установка LibPRI
6
cd /usr/src/asterisk-complete/libpri
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
tar zxvf libpri-1.4-current.tar.gz
cd libpri-1.4.14
echo $?
Установка Asterisk
Шаг 19 Проверка зависимостей, установка ключей. В случае установки Asterisk 11 поверх х64 систем
модуль libasteriskssl необходимо установить в директорию /usr/lib64. По-умолчанию Asterisk
установит этот модуль в каталог /usr/lib, что неверно. Для корректной установки используйте
команду ниже
./configure --libdir=/usr/lib64
8
Лабораторная работа №1.1 – Регистрация
программных телефонов
Описание работы
Регистрация xlite
extensions.conf sip.conf
[default] [general]
exten => 2011,1,Dial(SIP/xlite)
[xlite]
secret=pass1
host=dynamic
type=friend
dialplan reload
sip reload
9
Регистрация с использованием аутентификацией. Значения в выделенных полях должны совпадать при
регистрации с аутентификацией.
10
Регистрация Zoiper (Idefisk)
Недостатком данного телефона, является нестабильность работы. Часто может завершать работу из-за
неизвестной ошибки.
extensions.conf sip.conf
[default] [general]
exten => 2011,1,Dial(SIP/xlite)
exten => 2012,1,Dial(SIP/idefisk) [xlite]
secret=pass1
host=dynamic
type=friend
[idefisk]
secret=pass1
host=dynamic
type=friend
dialplan reload
sip reload
11
Конфигурация SJPhone (опционально)
Недостатком данного телефона, является невозможность выбрать сетевой интерфейс на Windows 7 ОС и
поэтому телефон не регистрируется.
extensions.conf sip.conf
[default] [general]
exten => 2011,1,Dial(SIP/xlite)
exten => 2012,1,Dial(SIP/idefisk) [xlite]
exten => 2013,1,Dial(SIP/sjphone) secret=pass1
host=dynamic
type=friend
[idefisk]
secret=pass1
host=dynamic
type=friend
[sjphone]
secret=pass1
host=dynamic
type=friend
12
Profile name: 2003
File name: 2003.ini
Profile type: Calls through SIP proxy
OK!
account: sjphone
password: pass1
OK!
13
Note Важно выбрать правильный интерфейс для исходящего трафика от телефона. При работе с данным
телефоном возникали проблемы при выборе неверного исходящего интерфейса.
extensions.conf sip.conf
[default] [msip]
exten => 2014,1,Dial(SIP/msip) secret=pass1
host=dynamic
type=friend
extensions.conf sip.conf
[default] [phonerlite]
exten => 2015,1,Dial(SIP/phonerlite) secret=pass1
host=dynamic
type=friend
dialplan reload
sip reload
15
Регистрация 3cx телефона
extensions.conf sip.conf
[default] [2013]
exten => 2013,1,Dial(SIP/2013) secret=pass1
host=dynamic
type=friend
dialplan reload
sip reload
16
Кроме того есть возможность посмотреть на отладку телефона 3cx.
Использование шаблонов
extensions.conf sip.conf
[default] [general]
exten => 2011,1,Dial(SIP/xlite) [codec](!)
exten => 2012,1,Dial(SIP/sjphone) disallow=all
exten => 2013,1,Dial(SIP/3cx) allow=ulaw
allow=alaw
[std](!)
host=dynamic
type=friend
context=default
[xlite](std)
17
secret=pass1
callerid=”xlite” <5552011>
18
Лабораторная работа №1.2 – Глобальная
конфигурация
Описание работы
В данной работе нужно сделать глобальные преднастройки для оптимизации работы Asterisk.
Каталоги Asterisk
Когда в конфигурации указывается имя файла, который нужно использовать Asterisk должен определить
полное имя файла (т.е. путь + имя файла). Посмотреть где хранятся файлы конфигурации, используемые
модули, буфер можно в файле:
vim /etc/asterisk/asterisk.conf
Загружаемые модули
Как и большинство других систем Asterisk имеет модульную архитектуру. Каждый из модулей
предоставляет какой-то набор функций. Естественно, абсолютно все функции никогда не используются,
поэтому рекомендуется отключить часть модулей. Но большинство модулей имеют зависимости, поэтому
нельзя просто отключить все неиспользуемые модули – может какой-то из нужных модулей использует
выключенный Вами модуль.
modules.conf
[modules]
autoload=yes
load=codec_g722.so
load=chan_skinny.so
19
;
noload => pbx_ael.so
noload => res_calendar.so
noload => chan_mgcp.so
noload => pbx_dundi.so
noload => app_festival.so
noload => app_morsecode.so
noload =>func_enum.so
Приведен пример включения всех модулей по-умолчанию, включения модулей кодека G.722 и протокола
сигнализации SCCP или Skinny (команды необязательные, т.к. эти два модуля и так будут
автозагружены). Неиспользуемые модули (протокол MGCP, интеграция с почтой, преобразование текста-
в-речь (text-to-speech) и др.) выключены и не будут потреблять ресурсы.
Нередко возникают проблемы при интеграции разных телефонных станций (например, Asterisk-Cisco Call
Manager). Чтобы найти причину нужно посмотреть в сообщения отладки с помощью команд:
Включите отладку и позвоните с одного SIP телефона на другой. Посмотрите на сообщения протокола
SIP.
После того как конфигурационные файлы отредактированы надлежащим образом нужно применить
конфигурацию. Это делается путем перезагрузки модулей, конфигурация которых была изменена.
Команда config list покажет, какие конфигурационные файлы связаны с какими модулями. Остается
посмотреть какие файлы были изменены и перезагрузить соответствующие модули с помощью команды
module reload <MODULE-NAME>.
20
Просмотр логов
logger.conf
[general]
console => notice,warning,error,verbose,dtmf,fax
Применить изменения
logger reload
Настройки asterisk.conf
asterisk.conf
Применить изменения.
Добавьте создания «алиасов» (коротких обозначений) команд включения и выключения отладки SIP
протокола. Пример ниже.
cli_aliases.conf
[friendly]
;….
;….
sipdeb = sip set debug on
sipudeb = sip set debug off
21
Авто-выполнение команд при запуске Asterisk
cli.conf
[friendly]
;….
sip set debug on = yes
core set verbose 3 = yes
22
Лабораторная работа №1.3 – Регистрация аппаратных
телефонов (опциональная)
Описание работы
В данной работе Вы будете регистрировать Cisco IP телефон по протоколу сигнализации SIP на Asterisk.
Необходимо разобраться с настройкой DHCP, TFTP серверов необходимых для регистрации Cisco
телефона.
4) TFTP
a. xinetd tftp-server tftp
b. look at root directory [ps ax | grep tftp]
c. netstat –lu | grep tftp
d. chkconfig xinetd on
e. Firmware и файлы конфигурации (не обязательно)
i. firmware [apps*,cnu,cvm,dsp,jar*,termXX,SIPXX]
ii. config
1. SEP<MAC>.cnf.xml
2. dialplan.xml
3. softkeyDefault.xml
4. softkeyDefault_kpml.xml
f. iptables
i. iptables –L
ii. iptables –F
Питание
Шаг 4 Обеспечивается коммутатором с поддержкой 802.1af PoE (802.1at PoE+).
23
Vlan
Шаг 5 Обеспечивается коммутатором с поддержкой 802.1q
Настройка DHCPd
yum install dhcp
/etc/init.d/dhcpd start
less /var/lib/dhcpd/dhcpd.leases
tftp localhost
После конфигурации SFTP сервера необходимо загрузить конфигурационный файл для Cisco телефона.
Воспользуйтесь программой winSCP client.
24
Шаг 8 Настройка Asterisk
extensions.conf sip.conf
[default] [2019]
exten => 2019,1,Dial(SIP/2019) secret=pass1
host=dynamic
type=friend
25
Лабораторная работа №2.1 – Использования
контекстов, приоритетов, приложений
Описание
Задача 1 – Конфигурация входящих звонков из города и привилегий пользователей:
Входящие вызовы извне доступны только для внутренних номеров (запрещены транзитные звонки
черезAsterisk).
Создать контексты:
Настройка
[globals] [general]
[incoming] context=all-blocked
exten => _X.,1,Verbose(2,Incoming call to ${EXTEN:-4})
same => n,Goto(internal,${EXTEN:4},1) [cme]
type=peer
[internal] host=10.1.250.101
exten => 2011,1,Dial(SIP/xlite,10) context=incoming
exten => 2012,1,Dial(SIP/idefisk,10)
exten => 2013,1,Dial(SIP/sjphone,20) [xlite]
26
secret=pass1
[local] host=dynamic
include => internal type=friend
exten => _0[1-9]XXXXXX,1,Dial(SIP/cme/${EXTEN:1}) context=local
[ld] [idefisk]
include => local secret=pass1
exten => _00[1-9]XX[1-9]XXXXXX,1,Dial(SIP/cme/${EXTEN:1}) host=dynamic
type=friend
[intl] context=intl
include => ld
exten => _000.,1,Dial(SIP/cme/${EXTEN:1}) [sjphone]
secret=pass1
host=dynamic
type=friend
context=ld
Note Маршруты созданные в контекстах local, ld, intl в данной работе не используются. Они показаны для
наглядности и улучшения понимания понятия «контекст». Эти маршруты будут использованы после
подключения к оператору.
[general] [general]
autofallthrough=yes context=all-blocked
[globals]
sipgw=SIP/cme [std](!)
host=dynamic
[incoming] type=friend
exten => _X.,1,Verbose(2,Incoming call to ${EXTEN:-4}) context=local
same => n,Goto(internal,${EXTEN:-4},1)
[cme]
[internal] type=peer
exten => 2003,1,Dial(SIP/sjphone) host=10.1.250.101
context=incoming
[local]
include => internal [xlite](std)
exten => _0[1-9]XXXXXX,1,Dial(${sipgw}/${EXTEN:1}) secret=pass1
[ld] [idefisk](std)
include => local secret=pass1
exten => _00[1-9]XX[1-9]XXXXXX,1,Dial(${sipgw}/${EXTEN:1}) context=intl
exten => 2002,1,Dial(SIP/idefisk,10)
[sjphone](std)
[intl] secret=pass1
include => ld context=ld
exten => _000.,1,Dial(${sipgw}/${EXTEN:1})
exten => 2001,1,Dial(SIP/xlite,10)
extensions.conf sip.conf
[internal]
exten => 2011,1,Dial(SIP/xlite)
27
exten => 2012,1,Dial(SIP/sjphone)
exten => 2013,1,Dial(SIP/3cx)
28
Лабораторная работа №3.1 – Создание плана набора
номеров и конфигурация PRI потока
Описание работы
Настройка
Конфигурация Asterisk
extensions.conf sip.conf
[default] [cme](codec)
exten => 2011,1,Dial(SIP/xlite) type=friend
exten => _112,1,Dial(SIP/cme/${EXTEN}) host=10.1.250.101
exten => _0112,1,Dial(SIP/cme/${EXTEN:1}) dtmfmode=rfc2833
[local] [xlite]
exten => _0[2-9]XXXXXX,1,Dial(SIP/cme/${EXTEN:1}) context=local
exten => 2012,1,Dial(SIP/phonerlite)
[phonerlite]
[ld] context=ld
exten => _00[2-9]XX[1-9]XXXXXX,1,Dial(SIP/cme/${EXTEN:1})
exten => 2013,1,Dial(SIP/3cx) [3cx]
context=default
[intl]
exten => _000.,1,Dial(SIP/cme/${EXTEN:1})
29
Проверка выполненной работы
extensions.conf sip.conf
[codec](!)
exten => _X.,1,Verbose(2,Incoming call to ${EXTEN:-4}) disallow=all
same => n,Goto(default,${EXTEN:-4},1) allow=ulaw
allow=alaw
30
Лабораторная работа №3.3 (опциональная) – Интеграция с
Microsoft Lync 2010
extensions.conf sip.conf
[lync](codec)
exten => _520XXXX,1,Dial(SIP/lync/${EXTEN:3}) type=friend
host=10.1.1.212
port=5068
dtmfmode=rfc2833
transport=tcp, tls
nat=no
10.1.1.10 pbx0
10.1.1.212 lync.ciscoclass.com
10.1.1.212 lync
31
Лабораторная работа №3.4 – Интеграция с Asterisk
extensions.conf sip.conf
[astr0](codec)
exten => _510XXXX,1,Dial(SIP/astr0/${EXTEN:3}) type=friend
host=10.1.1.10
username=astr1 ; себя
secret=secretpass1
port=5060 ;5091
[xlite]
callerid=”xlite” <5112011>
[sjphone]
callerid=”sjphone” <5112012>
[2013]
callerid=”3cx” <5112013>
extensions.conf sip.conf
[astr1](codec)
exten => _511XXXX,1,Dial(SIP/astr1/${EXTEN:3}) type=friend
host=10.1.1.11
username=astr0
secret=secretpass1
[xlite]
callerid=”xlite” <5102011>
32
Лабораторная работа №3.5 – Интеграция с Cisco H323
шлюзом
Описание работы
Необходимо настроить подключение к удаленной АТС или шлюзу по протоколу H.323. По-умолчанию
драйвер протокола сигнализации H.323 не установлен в Asterisk 11.2cert.
Добавить поддержку протокола сигнализации H.323, а именно модуль – OOH323, настроить подключение
к удаленному шлюзу, создать маршрут и убедится в успешном звонке по данному маршруту.
Нужно проверить с помощью команды core show channeltypes наличие работающего OOH323 модуля в
системе. Провера того загружен ли модуль в Asterisk.
cd /usr/src/asterisk-complete/asterisk/certified-asterisk-1.8.15-cert2/
make menuselect
Меню Add-ons ‒‒> chan_ooh323
extensions.conf ooh323.conf
[general]
exten => _530XXXX,1,Dial(OOH323/h323gw/${EXTEN:3}) faststart=yes
;h245tunneling=yes
gatekeeper=DISABLE
bindaddr=10.1.1.10
port=1720
;tos_audio=ef
;cos_audio=5
context=default
[h323gw]
ip=10.1.1.101
port=1720
disallow=all
allow=ulaw
allow=alaw
type=friend
context=default
33
;incominglimit=4
h245Tunneling=no
;h323id=ObjSysAsterisk
;e164=100
rtptimeout=60 ; Terminate call if 60
seconds of no RTP activity
extensions.conf ooh323.conf
[h323gw]
incominglimit=1
34
Лабораторная работа №3.6 – Интеграция с Cisco H323 GK
Описание
В данной работе необходимо зарегистрировать несколько телефонных номеров на контроллере зон
(Gatekeeper). Позвонить с зарегистрированных номеров используя контроллер зон на другую телефонную
станцию также зарегистрированную на GK.
Номера:
2012
2013
ooh323 show gk
Конфигурация
Шаг 1 Настроить регистрацию на GK в файле ooh323.conf. Указать IP адрес контроллера зон, перечень
используемых кодеков, список номеров для регистрации, контекст для входящих звонков через
GK.
Шаг 2 Указать маршрут для звонков через GK в файле extensions.conf
extensions.conf ooh323.conf
[general]
exten => _530XXXX,1,Dial(OOH323/${EXTEN:3}) faststart=yes
gatekeeper=10.1.250.101
bindaddr=10.1.1.10
port=1720
context=default
h323id=ourAsterisk
disallow=all
allow=ulaw
allow=alaw
e164=2012
e164=2013
Шаг 4 Настроить вызовы с номеров 2012, 2013 на номер 5302001. Вызов должен быть успешен.
Описание
В данной работе необходимо настроить телефонные функции на базе Asterisk.
meetme list
meetme list <CONF-NUMBER>
features show
parkedcalls show
mixmonitor start <CHANNEL><FILE-NAME>
mixmonitor stop<CHANNEL>
config list
MeetMe
Шаг 1 Убедиться в том что DAHDI модуль установлен и запущен.
lsmod | grep dahdi
dahdi_transcode
dahdi_voicebus
dahdi
36
extensions.conf meetme.conf
extensions.conf
exten => 2040,1,ConfBridge(primary,,,)
Шаг 1 Проиграть приветствие, установить переменную используемую для имени файла и вызвать
приложение для записи.
extensions.conf
[internal]
exten => 2020,1,Playback(vm-intro)
same => n,Set(var1=${UNIQUEID:1:9})
same => n,Record(/var/lib/asterisk/sounds/en/new-greeting_${var1}.wav)
[incoming] [general]
exten => _X./2014,1,Playback(hello-world)
same => n,Hangup(1) [xlite]
callerid="xlite" <5102011>
exten => _X.,1,Verbose(2,Incoming call to ${EXTEN})
same => n,Set(SEC_EXTEN=${FILTER(0-9,${EXTEN})}) [3cx]
same => n,Goto(default,${SEC_EXTEN:-4},1) callerid="3cx" <5102013>
37
Шаг 3 Позвонить с номера 2014 и убедиться в том что вызов был заблокирован.
Вариант 2
Шаг 1 Добавить номера в черный список базы данных Asterisk.
localhost*CLI> database put blacklist 2014 ""
localhost*CLI> database put blacklist 2015 ""
Шаг 3 Создать контекст для входящих вызовов [incoming]. Применить этот контекст для удаленного
peer Asterisk.
extensions.conf sip.conf
[incoming] [general]
exten => _X.,1,Verbose(2,Incoming call to ${EXTEN}) [xlite]
same => n,GotoIf(${BLACKLIST()}?black) callerid="xlite" <5102011>
same => n,Goto(default,${EXTEN},1)
same => n(blacklisted),Hangup() [3cx]
callerid="3cx" <5102013>
Шаг 5 Позвонить с номера 2014 или 2015 и убедиться в том что вызов был заблокирован.
Подмена А номера
Шаг 1 При подключении к телефонной сети общего пользования компания обязана купить номер. Для
того чтобы делать звонки в ТфОП необходимо всем абонентам компании «выходить» под
купленным номером. Это реализовано путем подстановки номера ниже.
extensions.conf
[internal]
exten => _502XXXX,1,Set(CALLERID(all)="Call Center" <5102000>)
same => n,Dial(SIP/cucm/2${EXTEN:4})
38
exten => _41XXXX,1,NoOp()
same => n,MixMonitor(/var/lib/asterisk/record/rec_${UNIQUEID:1:9}.wav)
same => n,Goto(default,${EXTEN:2},1)
MoH
Шаг 1 Для проигрывания нестандартных звуковых дорожек в качестве music on hold необходимо
создать профиль MoH и назначить этот профиль пиру.
musiconhold.conf sip.conf
[custom1] [xlite](std)
mode=files secret=pass1
directory=custom_moh mohsuggest=custom1
sort=random
FollowMe
Шаг 1 Для использования функции дозвона по единому номеру (SNR, Single Number Reach) можно
использовать FollomMe. При звонке на номер 2044 вызов будет направлен в течении 10 секунд
на номер 2014, затем в течении 20 секунд на номер 2011.
extensions.conf followme.conf
[xlite]
context=>internal
number=>2011,20
number=>2014,10
Описание
В данной работе необходимо настроить функции безопасности для Asterisk.
Шаг 1 Позвоните с телефона (200х) на номер 51х2011. Быть ли звонок успешным? Почему? Теперь
добавьте команду.
sip.conf
[general]
allowguest=no
; [cucm](codec)
; type=peer
; host=10.1.1.55
; dtmfmode=rfc2833
; context=default
[general]
context=internal
allowguest=yes
[general]
context=MINIMAL-PRIVILEGES
allowguest=no
[cucm](codec)
type=peer
host=10.1.1.55
dtmfmode=rfc2833
context=default
41
[xlite]
deny = 0.0.0.0/0.0.0.0
Шаг 7 Закройте и запустите xlite. Регистрация была не успешной, потому что были запрещены все
адреса с которых может прийти запрос о регистрации. Откройте cmd и посмотрите IP адрес
компьютера с которого регистрируется Xlite телефон. Добавьте IPадрес компьютера с которого
регистрируется xlite.
sip.conf
[xlite]
deny = 0.0.0.0/0.0.0.0
permit=10.1.3.28/255.255.255.255
Шаг 8 Рекомендуется!
Выключить неиспользуемые транспорты для SIP протокола
Использовать сложные пароли для регистрации телефонов
Изменить слушающий порт SIP на нестандартный
Если используются несколько сетевых карт – выбрать только один адрес для Asterisk
Указать контекст с минимальными (или никакими) привилегиями для входящих вызовов
sip.conf
[general]
allowguest=no
tcpenable=no
bindaddr=10.1.1.10
bindport=5091
context=MINIMAL_PRIVILEGES
tcpauthtimeout = 15
tcpauthlimit = 30
dynamic_exclude_static = yes
shrinkcallerid=yes
42