Asterisk и Cisco маршрутизатор в роли шлюза
Материал из Xgu.ru
- Автор: Сергей Бондаренко
Содержание |
[править] Cisco маршрутизатор как FXO и SIP шлюз
Cisco маршрутизатор может выступать в роли FXO и SIP шлюза для Asterisk.
Такая схема может быть полезна в следующих случаях:
- Подключение к городской телефонной сети (PSTN) посредством аналоговых портов FXO (особенно применимо для факсимильной связи - Fax);
- Резервирование линий телефонной связи;
- Подключение к городским телефонным сетям (PSTN) посредством выделенного IP канала от провайдера IP телефонии (ITSP) что позволит получить гарантированный уровень качества обслуживания (QoS).
[править] Топология решения
Для функционирования в качестве телефонного шлюза Cisco маршрутизатор должен работать под управлением Cisco IOS с включёнными голосовыми функциями. Посмотреть подходящий IOS можно в Cisco Feature Navigator. В данной лабораторной среде использовался Cisco IOS C2800NM-ADVENTERPRISEK9_IVS-M Version 12.4(22)T.
Алгоритм работы входящего звонка:
- Звонок с PSTN поступает на Cisco на один из номеров: 0444909999 (IP), 0444909991 (FXO);
- Cisco с помощью правил маршрутизации звонков (dial-peer) маршрутизирует звонок на автоответчик (IVR) Asterisk;
- Дальше звонок обрабатывается согласно звонкового плана настроенного на Asterisk;
Алгоритм работы исходящего звонка:
- Звонок с телефона зарегистрированного на Asterisk поступает на Cisco маршрутизатор;
- Cisco нормализует номер и маршрутизирует звонок в PSTN;
Выбор маршрута абонентами Asterisk:
Выбор маршрута абонентом осуществляется с помощью префикса. Абоненты Asterisk звонят через аналоговые линии FXO набирая префикс 9 перед номером телефона – 9ХХХХХХХХХХ. Для звонка через IP канал ITSP, абоненты набирают номер без префикса ХХХХХХХХХХ.
Fax может быть подключён к Asterisk через аналоговый адаптер, например Cisco ATA 186.
[править] Пример конфигурации Cisco маршрутизатора
Маршрутизатор также может содержать другие необходимые конфигурации функций Cisco IOS: Cisco IOS Firewall, ACL, BGP, OSPF, GRE, VPN и др.
!Разрешить SIP сигнализацию между точками в VoIP сети
voice service voip
allow-connections sip to sip
! Правило нормализации набраного номера DNIS (убираем префикс 9)
voice translation-rule 1
rule 1 /^9\(.+\)$/ /\1/
! Правило нормализации звонящих номеров ANI
! (вместо локального номера 6XX подставляем городской номер 0444909999)
voice translation-rule 3
rule 1 /^.*$/ /0444909999/
voice translation-profile over_fxo
translate called 1
voice translation-profile to_sip_itsp
translate calling 3
! Настройка аналоговых FXO портов 0/3/0 и 0/3/1.
! Направление всех входящих из PSTN звонков на внутренний номер 0444909991.
voice-port 0/3/0
description from_fxo
no battery-reversal
cptone RU
timeouts interdigit 2
connection plar opx 0444909991
description 0444909991
caller-id enable
voice-port 0/3/1
description from_fxo
no battery-reversal
cptone RU
timeouts interdigit 2
connection plar opx 0444909991
description 0444909991
caller-id enable
! SIP транк - маршрут звонка на Asterisk.
! Направление всех входящих звонков на номера 0444909991 и 0444909999.
dial-peer voice 1 voip
description to_asterisk
preference 2
destination-pattern 044490999[19]
session protocol sipv2
session target ipv4:10.0.44.188:5060
session transport udp
dtmf-relay rtp-nte
codec g711ulaw
no vad
! Маршруты звонка на PSTN через FXO интерфейсы 0/3/0 и 0/3/1.
! Нормализация исходящих DNIS – убираем префикс 9
dial-peer voice 4909991 pots
description to_fxo_pstn
translation-profile outgoing over_fxo
preference 7
destination-pattern 9.T
progress_ind disconnect enable 8
port 0/3/0
dial-peer voice 49099911 pots
description to_fxo_pstn
translation-profile outgoing over_fxo
preference 7
destination-pattern 9.T
progress_ind disconnect enable 8
port 0/3/1
! SIP транк - маршрут звонка на PSTN через ITSP.
! Нормализация исходящих ANI – указываем наш городской номер 0444909999
dial-peer voice 4909999 voip
description to_gtelecom
translation-profile outgoing to_sip_itsp
preference 3
destination-pattern [0-8].T
session protocol sipv2
session target ipv4:51.63.116.35:5061
session transport udp
incoming called-number 0444909999
dtmf-relay rtp-nte
codec g711ulaw
no vad
! Регистрация Cisco шлюза на Asterisk
sip-ua
authentication username ciscotestrouter password 7 password
registrar ipv4:10.0.44.188 expires 65535
sip-server ipv4:10.0.44.188
[править] Пример конфигурации Asterisk
sip.conf
[general] context = incomming ;контекст для входящих звонков allowoverlap = yes bindport = 5060 bindaddr = 0.0.0.0 udpbindaddr = 0.0.0.0 tcpenable = yes tcpbindaddr = 0.0.0.0 srvlookup = yes notifyhold = yes defaultexpiry = 3600 [ciscotestrouter] ;SIP транк на Cisco маршрутизатор type=peer host=10.0.44.144 context=isptelecom port=5060 secret=password user=ciscotestrouter language=ru disallow=all allow=ulaw qualify=yes dtmfmode=rfc2833 ;Внутренние телефоны [test-phones](!) context = vip type = friend host = dynamic language=ru nat = yes canreinvite = no qualify = yes dtmfmode = auto disallow = all allow = alaw allow = ulaw allow = h261 allow = h263 allow = h263p allow = h264 subscribemwi = no subscribecontext = blf callgroup = 20 pickupgroup = 20 [650](test-phones) defaultuser=650 secret= password user=650 callerid="Sergey" mailbox=650@default [651](test-phones) defaultuser=651 secret= password user=651 callerid="Fax"
extensions.conf
[IVR]
;IVR пилот
exten => 691,1,Goto(menu,s,1)
[menu]
;IVR меню
exten => s,1,Background(01-Greeting)
exten => s,n,Background(02-MainMenu)
exten => s,n,WaitExten(10)
exten => s,n,Goto(local,650,1)
exten => s,n,Hangup
exten => _6XX,1,Goto(local,${EXTEN},1)
[local]
;Маршрут на локальные зарегистрированные на Asterisk IP телефоны
exten => _6XX,1,Dial(SIP/${EXTEN},,t,30,Ttm)
exten => _6XX,n,Hangup()
[national]
;Маршрут в PSTN через Cisco маршрутизатор
exten => _9[0-8].,1,Dial(SIP/ciscotestrouter/${EXTEN},25) ;на FXO линии для Fax
exten => _[0-8].,1,Dial(SIP/ciscotestrouter/${EXTEN},25) ;звонки через ITSP
[incomming]
;Прием звонков транслируемых Cisco шлюзом из PSTN
exten => _044490999[19],1,Goto(IVR,691,1)
;Распределение прав для контекстов
[itsptelecom]
include => incomming
[vip]
include => IVR
include => local
include => national
