Настройка связки Asterisk и Mvts(GnuGK). С комменатирями voipx.ru

Недавно перед мной встала задача подключения SIP клиентов находящихся за NAT'ом. В наличии имелась mvts без SIP-HIT модуля и покупать этот модуль никто не собирался. Так что проблему необходимо было решить проектами OpenSource. Тогда я скачал и установил Asterisk. Сразу же встала проблема установки и настройки oh323 модуля. На этой теме я останавливаться не буду, и так на этот счет уже много написано. Только скажу, что имел опыт установки этого модуля на Slackware 9.0 это было самое трудное, на RedHat 9.0 модуль встал практически без проблем, а на Asterisk@home как будто только и ждал этого модуля.

voipx.ru: Для реализации данной схемы предполагается, что для поддержки протокола H323 в Asterisk используется драйвер chanoh323. В Asterisk в первую очередь надо проверить наличие соответствующих библиотек и настроек, для чего проверяется:

  • наличие в библиотеках Asterisk файла chan_oh323.so (для FreeBSD /usr/local/lib/asterisk/modules)
  • указание в конфигурационном файле enum.conf, что для h323 используется соответствующий драйвер
h323driver => OH323
  • загрузку соответствующего модуля и отсутствие загрузки модулей других драйверов h323, запустив в консоле Asterisk команды
  • *CLI> show modules
    
  • При наличии лишних модулей и отсутствии нужных, необходимо вручную прописать необходимость загрузки нужных модулей и запрет загрузки лишних модулей в файле modules.conf
    load => chan_oh323.so
    noload => chan_h323.so
    
  • Проверить наличие соответствующего типа канала комнадой из консоли Asterisk
    *CLI> show channeltypes
    
  • В рассматриваемом примере предполагается, что через NAT пробрасывется номер 996699, включенный в MVTS, а оконечное устройство Linksys PAP2-NA, включаемого в Asterisk

    Mvts настраивается стандартно, прописываем Asterisk как обычного RAS пользователя.

    В user.cfg

    [Asterisk]
    reg_address=xxx.xxx.xxx.xxx
    user=asterisk
    gateway_type=0
    password=
    
    voipx.ru: Указывается пароль, который в Asterisk прописывается как пароль гейткипера
    #ip_precedence=3
    proxy_type=1
    acct_enable=1
    auth_enable=0
    

    Ну в dialpeer.cfg
    voipx.ru: Это план набора, пробрасывающего все вызовы по шаблону 996699 на Asterisk (DID - в случае наличия других пробрасывемых номеров)

    [Asterisk]
    dst_pattern=996699;и т.д. сколько DID'ов вы хотите посылать на *
    gateway=Asterisk;NULL
    priority=110
    hunt_stop=0
    hunt_mode=0
    

    Для GnuGk

    [RasSrv::GWPrefixes]
    xxx.xxx.xxx.xxx=996699
    

    С mvts(GK) закончили. Приступаем к *. Для начала настраиваем oh323.conf. Тут есть два варианта, стоит ли * и mvts(GK) на одном сервере или нет. Если стоит на одном то listenPort нужно обязательно другой, а не 1720. Так же желательно повесить oh323 на интерфейс, отличный от того который прописан для gatekeeper в oh323.conf. Если * и mvts(GK) стоит на разных серверах, то соответственно порт 1720, интерфейсы так и так разные.

    [general]
    listenAddress=xxx.xxx.xxx.xxx
    listenPort=31337
    
    voipx.ru: Это при установке на одной машние. При установке на разных машинах:
    listenPort=1720
    
    Далее
    tcpStart=10000
    tcpEnd=20000
    udpStart=10000
    udpEnd=20000
    fastStart=yes
    h245Tunnelling=no
    h245inSetup=no
    inBandDTMF=yes
    jitterMin=20
    jitterMax=100
    ipTos=none
    outboundMax=10
    inboundMax=10
    simultaneousMax=10
    wrapLibTraceLevel=1
    libTraceLevel=0
    libTraceFile=stdout
    gatekeeper=xxx.xxx.xxx.yyy
    
    voipx.ru: Это адрес машины с MVTS
    gatekeeper=DISCOVER
    gatekeeperTTL=600
    
    voipx.ru: При указании в MVTS для пользователя "Asterisk" пароля, он указывается в виде следующего параметра
    gatekeeperPassword=
    
    Далее
    userInputMode=TONE
    amaFlags=default
    accountCode=H323
    language=en
    musiconhold=default
    context=h323-in
    

    [register] context=h323-in alias=996699

    [codecs] codec=G729 frames=6 codec=G729A frames=6 codec=G729B frames=6 codec=G729AB frames=6 codec=G711U frames=20 codec=GSM0610 frames=4 codec=G7231 frames=4

    В настройках sip.conf прописываем пользователей вот таким способом. Эти настройки используются для одного порта Linksys PAP2-NA стоящего за NAT

    voipx.ru: При наличии проброса номеров на другие устройства - прописывается для каждого

    [996699]
    type=friend
    host=dynamic
    username=996699
    secret=pass
    callerid=996699 
    canreinvite=no
    context=h323-in
    nat=yes
    qualify=yes
    

    Теперь нужно отредактировать dialplan, в extensions.conf прописываем.

    [h323-in]
    exten => 996699,1,Dial(SIP/996699,60,tr) ;для входящих
    
    voipx.ru: Эти строки повторяются для каждого последующего номера или через шаблон
    Далее
    exten => _Z.,1,Dial(OH323/${EXTEN},60,t) ;для исходящих
    

    Теперь приступим к кодекам, по умолчанию g729 кодека, который необходим для выхода в PSTN в * нет. И если кодек не подходит для вашего процессора * при звонке через него в PSTN просто падает. Идем на http://www.asterisk-support.ru/files/codecs/download/G729/index_fs

    Обычно подходит один из этих codec_g729-gcc-debug.so или codec_g729-gcc-pentium.so, но можно экспериментальным путем подобрать тот, который подходит именно для вашего сервера. Закидываем выбранный кодек в папку /usr/lib/asterisk/modules. Запускаем или перезагружаем * и тестируемся. Если при исходящем звонке * падает то просто подберите кодек. Так же стоит помнить о том в каком формате приходят номера.

    Автор
    icq:383630
    e-mail: 5p134n(at)gmail.com

    Оригинал статьи размещен на http://www.asterisk-support.ru/