1.Создание SIP аккаунтов для пользователей.
Создадим в системе двух пользователей с именами USER1 и USER2. Для этого в Web интерфейсе управления Астериском в вкладке SETUP выбираем опцию EXTENSIONS. Далее выбираем Submit.
USER1 будет иметь SIP номер 1001, а USER2 будет иметь SIP номер 1002. Сразу для двух пользователей настроим голосовую почту.
Далее настраиваем голосовую почту для USER1. Для голосовой почты также необходимо ввести пароль.
Пароль должен состоять только из цифр
. В данном примере, пароль идентичен аккаунту. В целях безопасности желательно, чтобы пароли аккаунта регистрации и голосовой почты не совпадали.
Кликните мышкой на USER1 и посмотрите свойства этого пользователя. В Верхней части Интернет браузера, примените все настройки кликнув на Apply Configuration Changes.
Имеем:
username=USER1
— имя клиента. Оно же понадобится для авторизации.
context=from-internal
установлен по умолчанию. Об этом мы поговорим далее.
nat=yes
если SIP клиент находиться за роутером с трансляцией IP адресов (NAT)
canreinvite=no
; Обычно, устанавливается в ‘NO’, если клиент находиться за NAT
type=friend
— type
может принимать 3 различных значения:
*user
— возможны только входящие звонки;
*peer
— возможны только исходящие звонки;
*
friend
— разрешены как исходящие, так и входящие вызовы.
host=dynamic
— IP-адрес, с которого разрешены подключения для данного клиента. Поскольку у клиента возможен динамический IP-адрес, мы это и указываем.
context=from-internal
— Задаем контекст, в котором будет описывать правила для данного клиента. Грубо говоря, это группа клиентов.
callerid=»USER1″
— Идентификационное имя клиента. Оно же будет отображаться на дисплее телефона при входящем звонке этого клиента (АОН).
canreinvite=no
— разрешает (yes) или запрещает (no) установку прямого соединения между участниками (минуя Asterisk).
Аналогично необходимо создаем аккаунт и для пользователя USER2 с номером 1002.
2. Создание транка
Чтобы приступить к созданию транка, необходимо сначала зарегистрироваться на сайте www.sipnet.ru, получив свой SID.
SID состоит из чисел. Для создания и настройки Транка на примере провайдера Sipnet.ru найдите соответствующий модуль TRUNKS. Здесь мы увидим несколько типов транков:
Add Zap Trunk
Add IAX2 Trunk
Add SIP Trunk
Add ENUM Trunk
Add DUNDi Trunk
Add Custom Trunk
Поскольку мы будем настраивать звонки по протоколу SIP, то выбираем Add SIP Trunk
PEER DETAILS (В текстовом виде):
dtmfmode=rfc2833
type=friend
host=sipnet.ru
fromuser=0022605618
fromdomain=sipnet.ru
secret=FJJGFh
username=0022605618
insecure=port,invite
conext=contex-internal
disallow=all
nat=yes
allow=g723&g723.1&gsm&ulaw&alaw
Ну а теперь о правилах Dial Rules. Для того чтобы SIP умел набирать короткие городские номера моего региона (например Ростов-на-Дону,+7-863), добавляем правила вида:
7863+NXXXXXX
8863+NXXXXXX
Таким образом через SIP телефон я могу набирать комбинации вида: 2122132, 3432342 и т.д.
3. Создание правил маршрутизации исходящих звонков.
Правила маршрутизации звонков настраиваются в меню
Setup — OutBound Routes
Ну а теперь поговорим о Dial Patterns. В моем случае я разрешить звонить на короткие городские звонки вида XXXXXXX и мобильные звонки МТС начинающиеся на 918XXXXXXX. Все остальные звонки на мобильные номера других операторов исключены. Вы также можете добавить оператора Мегафон, добавив правило 7928XXXXXXX.
Вы можете настраивать на любой вкус Dial Patterns с Dial Rules.
Route Password:
функция полезная, но в реальности не работает.
Позволяет осуществлять звонки через транк используя пароль. Пользователь при осуществлении звонка через транк, согласно правилу маршрутизации должен ввести цифровой пароль. При запросе пароля и его подтверждения, у меня звонок сбрасывался, поэтому протестировать нормально эту функцию мне так и не удалось.
4. Создание правил исходящих звонков для пользователей.
Предположим, что пользователю USER1 разрешено звонить на междугородние и мобильные звонки, а пользователю USER2 это запрещено. Для этого будем использовать Context, которые определены в
/etc/asterisk/extensions.conf
(правил набора).
Рассмотрим самый простой случай.
Через Config File Editor из Trixbox, откройте файл extensions_additional.conf, там находим контекст [outbound-allroutes]. В нашем случае это выглядит так:
[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-001-9_outside
include => outrt-002-SipnetOut
exten => foo,1,Noop(bar)
; end of [outbound-allroutes]
где, outrt-002-SipnetOut — Наш транк на Sipnet.ru
Как видим в этот
контекст outbound-allroutes входят еще контексты через include
. Здесь. если закомментировать «include => outrt-002-SipnetOut», то пользователи не смогут осуществлять междугородние и международные звонки через транк Sipnet.ru. Если мы будем править этот файл ручками, то при следующеем перезагрузки TrixBox’а, файл будет иметь свое первоначальное состояние, Таким образом, все
наши конфиги можно править и сохранять только в конфигурационных файлах вида *_custom.conf
Теперь ознакомимся с Context: [outrt-002-SipnetOut]
[outrt-002-SipnetOut]
include => outrt-002-SipnetOut-custom
exten => _7918XXXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _7918XXXXXXX,n,Set(_NODEST=)
exten => _7918XXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _7918XXXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _7918XXXXXXX,n,Macro(outisbusy,)
exten => _7928XXXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _7928XXXXXXX,n,Set(_NODEST=)
exten => _7928XXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _7928XXXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _7928XXXXXXX,n,Macro(outisbusy,)
exten => _NXXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _NXXXXXX,n,Set(_NODEST=)
exten => _NXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _NXXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _NXXXXXX,n,Macro(outisbusy,)
; end of [outrt-002-SipnetOut]
Далее, через Config File Editor из TrixBox, открыть файл extensions_custom.conf. Найдем здесь контекст [from-restricted] и сделаем дополнения:
[from-restricted]
……………………………………………………
include => outbound-allroutes-custom
include => outrt-001-9_outside
;include => outrt-002-SipnetOut
exten => foo,1,Noop(bar)
exten => h,1,Hangup
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)
Сохраняем файл.
Теперь вернемся к нашим пользователям. Поскольку перед нами стоит задача отключить права возможности звонить пользователю USER2 через Транк Sipnet.ru, то редактируем его свойства и заменяет значение поля Context:
from-internal на from-restricted
.?
5. Создание правил входящих звонков для пользователей.
В
GENERAL SETTINGS
правим значение Security Settings на YES.
Ранее, когда мы настраивали параметры TRUNKS, мы добавляли следующие значения в настройках
insecure=port,invite
type=friend
port:
игнорировать номер порта, с которого пришла аутентификация
invite:
не требовать начальное сообщение INVITE для аутентификации
port,invite:
не требовать начальное сообщение INVITE для аутентификации и игнорировать порт, с которого пришел запрос.
Пример
insecure=port ; Разрешить проверку соответствия пира по ip-адресу без проверки соответствия номера порта
insecure=invite ; Не требовать аутентификации входящих сообщений INVITE
insecure=port,invite ; (оба условия)
Обычно используется для разрешения входящих вызовов (например от провайдера FWD) там где указано type=friend и определены имя и пароль.
Typically used to allow incoming calls (e.g. from FWD) while having a type=friend entry defined with username and password.
very: игнорировать авторизацию (user/password) yes: ??
Пример:
insecure=very
insecure=yes ; Проверять SIP клиента только по IP адресу, не используя user/pass
insecure=very ; Позволяет зарегистрированному хосту совершать вызовы без повторной авторизации.
Обычно используется для того, чтобы получать входящие вызовы (например, публичный или тестовый вход).