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