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
