Яндекс.Метрика

    Ни о чём

    Как связать два asterisk-сервера

    imageИтак, имеем два астериска.
    Задача — организовать прямой дозвон через префикс туда и обратно.
    Исходные данные:
    Астериск 1.4 на обеих концах
    kazan.asterisk.ru — имя первого астериска.
    volgograd.asterisk.ru — имя второго астериска.
    Предполагается, что оба астериска имеют прямой выход в интернет (в ином случае тоже проблем быть не должно, нужно настроить NAT и использовать параметр nat=yes)

    Пусть 1-й астериск у нас находится в Казани, другой в Волгограде. Обратимся к автомобильным кодам регионов.
    Тогда дозвон из Волгограда будет 9-16-<номер>.
    Из Казани 9-34-<номер>.
    sip.conf 1-го астериска:
    [general]
    context=default
    allowguest=no
    bindport=5060
    bindaddr=0.0.0.0

    ; настройки для регистрации на другом астериск-сервере
    register => kazan:kazan_password@volgograd.asterisk.ru:5060

    [volgograd]
    ; логин и пароль для подключения
    username=volgograd
    secret=volgograd_password
    ; разрешать входящие и исходящие вызовы
    type=friend

    ; не отсылать повторные сообщения INVITE
    canreinvite=no
    ; Не требовать доп. аутентификации
    insecure=very
    ; периодическая проверка доступности устройства
    qualify=yes

    ; разрешаем регистрацию
    ; (www.voip-info.org): If you want the phone to register itself, use the keyword dynamic instead of Host IP.
    ; ограничить подключения можно через deny,permit
    host=dynamic

    ;DTMF
    dtmfmode=rfc2833

    ; настройка кодеков
    disallow=all
    allow=alaw
    allow=ulaw

    ; в какой контект будут попадать входящие звонки
    context=office_rules


    extension.conf 1-го астериска:
    ; контекст для пользователей
    [office]
    exten => _934.,1,Set(CALLERID(all)="Kazan <16>")
    exten => _934.,n,Dial(SIP/${EXTEN:3}@volgograd,60,r)
    exten => _934.,n,HangUp
    ..

    include => office_rules

    ; контекст для входящих вызовов
    ; внутренние номера имеют вид 1XX или 2XX
    [office_rules]
    exten => _[12]XX,1,Dial(SIP/${EXTEN},60,tTr)
    exten => _[12]XX,n,HangUp()



    sip.conf 2-го астериска:
    [general]
    context=default
    allowguest=no
    bindport=5060
    bindaddr=0.0.0.0

    ; настройки для регистрации на другом астериск-сервере
    register => volgograd:volgograd_password@kazan.asterisk.ru:5060

    [kazan]
    type=friend

    ; credentials for registration
    username=kazan
    secret=kazan_password

    ; разрешаем регистрацию
    ; (www.voip-info.org): If you want the phone to register itself, use the keyword dynamic instead of Host IP.
    ; ограничить подключения можно через deny,permit
    host=dynamic

    ; не отсылать повторные сообщения INVITE
    canreinvite=no
    ; Не требовать доп. аутентификации
    insecure=very
    ; периодическая проверка доступности устройства
    qualify=yes

    ; DTMF
    dtmfmode=rfc2833

    ; разрешенные кодеки (только G711)
    disallow=all
    allow=ulaw
    allow=alaw

    ; в какой контекст принимать звонки
    context=office_rules



    extension.conf 2-го астериска:
    ; контекст для пользователей
    [office]
    exten => _916.,1,Set(CALLERID(all)="Volgograd <34>")
    exten => _916.,n,Dial(SIP/${EXTEN:3}@kazan,60,r)
    exten => _916.,n,HangUp
    ..

    include => office_rules

    ; контекст для входящих вызовов
    ; внутренние номера имеют вид 1XX или 2XX
    [office_rules]
    exten => _[12]XX,1,Dial(SIP/${EXTEN},60,tTr)
    exten => _[12]XX,n,HangUp()



    PS. Буду признателен советам по расширению функциональности и безопасности.

    upd: В любом случае, в плане аспекта безопасности, нужно глянуть это.