Меню

asterisk настройка sip шлюз

Asterisk настройка sip шлюз

Моя корзина:

Моя корзина:

info Настройка VoIP шлюзов FXO совместно с Asterisk (Elastix)

При переходе от традиционной телефонии к технологии VoIP , нередко возникает задача сохранить аналоговые линии ТфОП, интегрировав их в IP инфраструктуру Вашей организации. Одно из решений данной задачи – совместное использование Вашей IP — PBX с FXO шлюзом SNR .

Ниже рассматривается схема, позволяющая Вашей IP — PBX принимать вызовы, совершенные на номера ТфОП, а также совершать исходящие звонки посредством использования старых аналоговых линий (на примере Asterisk ( Elastix ) и шлюза SNR — VG -6040)

Конфигурация сервера Asterisk

IP адрес Asterisk — 10.10.10.2

Создаем SIP -транк для последующего подключения нашего FXO шлюза:

Trunk name — 701 (можно указать любое имя на Ваше усмотрение)

Где host — это сетевой адрес нашего шлюза SNR-VG-6040;

U sername и secret — выбираются на Ваше усмотрение

На этом настройка trunk на Asterisk заканчивается, применяем произведенные изменения: «Submit Changes»

Далее нам нужно настроить параметры исходящих вызовов (Outbound Routes):

Outbound Routes — Add route

Route Name — test (можно указать любое имя на ваше усмотрение)

Cледующим шагом настроим правила набора.

Ниже приведен скриншот с примером конфигурации:

В данном примере настройка произведена таким образом, что при наборе номера, начинающегося с цифры 8, звонок будет уходить на шлюз, а через него в ТфОП.

На этом конфигурация Asterisk заканчивается.

1. Переходим на вкладку SIP-сервер 1.

Настраиваем по примеру ниже:

SIP-сервер – сетевой адрес сервера Asterisk (в нашем случае 10.10.10.2)

На этой вкладке настраиваются FXO порты. В нашем случае используем первый порт.

В полях Имя пользователя и Идентификационное имя пишем 701, это логин для нашего транка в asterisk . В поле пароль, соответственно, пишем пароль 701, который был указан в опции secret в настройках транка. Далее выбираем один из двух SIP-серверов. В нашем случае это SIP-сервер 1.

Следующим этапом нам нужно настроить Stage Method — по умолчанию стоит значение ch1-4:1; это означает, что поступивший на шлюз входящий вызов будет перенаправляться на asterisk . Если поставить значение ch1-4:2, то любой входящий звонок, пришедший на шлюз из ТФОП или с АТС, не будет отправляться дальше в Asterisk, а будет получать от шлюза сигнал свободной линии. При этом, звонящему придётся набрать внутренний номер, чтобы попасть по назначению.

Далее настраиваем поле «Безусловная переадресация через линию SIP»:

Пользователь (SIPID) – указываем номер, на который будет происходить переадресация звонка;

SIP-сервер (домен) – для указания сервера, на котором будет принят звонок;

Порт (SIP), соответственно, описывает порты для SIP сигнализации указанных в предыдущем поле серверов или сервера.

источник

Установка и настройка SIP шлюза для Telegram

Telegram — кроссплатформенный мессенджер, позволяющий обмениваться сообщениями и медиафайлами многих форматов. Так же данный мессенджер позволяет осуществлять аудио звонки между пользователями Telegram, благодаря разработки с открытым исходным кодом https://github.com/Infactum/tg2sip появилась возможность взаимодействия между Asterisk и Telegram по SIP протоколу. В рамках данной статьи будет рассмотрено как выполнить установку и настройку SIP шлюза для Telegram. Возможности […]

Telegram — кроссплатформенный мессенджер, позволяющий обмениваться сообщениями и медиафайлами многих форматов. Так же данный мессенджер позволяет осуществлять аудио звонки между пользователями Telegram, благодаря разработки с открытым исходным кодом https://github.com/Infactum/tg2sip появилась возможность взаимодействия между Asterisk и Telegram по SIP протоколу.

В рамках данной статьи будет рассмотрено как выполнить установку и настройку SIP шлюза для Telegram. Возможности SIP шлюза:

  1. Звонки из Telegram на внутренний номер Asterisk
  2. Звонки из Asterisk пользователю Telegram по никнейму или номеру телефона

При написании статьи так же использовались следующие библиотеки и программные продукты с открытым исходным кодом:

  1. Кроссплатформенная библиотека для построения клиентов Telegram —
  2. Библиотека для организации PJSIP медиа стека —

  • Библиотека для логирования —
  • SIP шлюз для Telegram –
  • Скрипт установки кроссплатформенной системы автоматизации сборки программного обеспечения из исходного кода Cmake —
  • Кодек OPUS –
  • 1. Перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.1.231/

    2. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»

    3. Перейдем в меню Connectivity → Trunks → Add Trunk(SIP) и заполним ключевые параметры транка:

    1) Trunk Name – наименование транка на вкладке General
    2) Trunk Name — наименование sip пира на вкладке «sip Settings»
    3) PEER Details – параметры транка. В примере SIP шлюз будет установлен на тот же сервер, что и Asterisk(т.е. локально), IP сервера 192.168.1.231 и порт шлюза должен быть отличным от используемого порта в Asterisk(в примере 5062)

    4. Для возможности звонков на telegram с использованием коротких внутренних номеров, рассмотрим вариант создания Custom номеров, для этого перейдем в меню Applications → Extensions → Add Extension → Add New Custom Extension и заполним ключевые параметры:

    1) User Extension – короткий внутренний номер, на вкладке General.
    2) Display Name – имя внутреннего номера, на вкладке General.
    3) Dial – строка вызываемого номера, на вкладке Advanced. Для звонка по никнейму должна иметь вид: SIP/tg# @192.168.1.231:5062. Для звонка по номеру мобильного должна иметь вид: SIP/+7XXXXXXXXXX@192.168.1.231:5062.

    5. Для взаимодействия с Telegram необходимо выполнить регистрацию приложения и получить APP ID и API HASH, для этого перейдем на страницу https://my.telegram.org/auth и пройти авторизацию с использование мобильного номера

    По смс или на авторизованный клиент Telegram-а придет сообщение с кодом авторизации, скопируем его и введем на странице авторизации. После успешного прохождения авторизации нам станет доступен раздел «API development tools», перейдем в него

    Для регистрации приложения необходимо заполнить следующие поля:

    1) App title – название приложения
    2) Short name – упрощенное наименование приложения
    3) URL – ссылка на сайт проекта
    4) Platform – платформа создаваемого приложения, т.к. наше приложение не попадает не под один из критериев то выберем Other
    5) Description – описание создаваемого приложения

    После успешного заполнения формы система сгенерирует автоматически необходимые значения APP ID и API HASH, скопируем данные значения для последующей настройки.

    6. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.

    7. Прежде чем приступить к установке шлюза, нам необходимо выполнить установку ряда зависимостей, для этого в SSH консоли на сервере Asterisk выполним команды:

    8. Для сборки из исходников ряда зависимостей и SIP шлюза для Telegram, потребуется кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода Cmake 3.9.6, для установки Cmake в SSH консоли на сервере Asterisk выполним команды:

    9. Одной из необходимых зависимостей является кроссплатформенная библиотека для построения клиентов Telegram «Tdlib», приступим к её сборке и установке, для этого в SSH консоли на сервере Asterisk выполним команды:

    10. Так же необходимой зависимостью является библиотека для организации PJSIP медиа стека «PJProject», приступим к её сборке и установке, для этого в SSH консоли на сервере Asterisk выполним команды:

    11. Последней необходимой зависимостью является библиотека для организации логирования в C++ SPDlog, приступим к её сборке и установке, для этого в SSH консоли на сервере Asterisk выполним команды:

    12. Успешно завершив сборку и установку всех вышеописанных зависимостей, приступим к сборке и установке SIP шлюза для Telegram, для этого в SSH консоли на сервере Asterisk выполним команды:

    13. Успешно выполнив сборку и установку SIP шлюза для Telegram, приступим к его настройке, для этого в SSH консоли на сервере Asterisk выполним команду:

    И приведем конфигурационный файл к виду:

    где ключевые параметры для изменения:

    1. logging — уровни логирования(0-трасировка 2-информационные 4-ошибки 6-отключено 1-отладка 3-warn 5-критические)
    2. port — порт который будет слушать шлюз, должен быть отличным от порта Asterisk, в примере данной статьи используем 5062 порт
    3. id_uri — SIP ID, строка должна иметь вид: SIP_ID@IP_Asterisk
    4. callback_uri – uri строка для организации входящего звонка на Asterisk(sip:EXTEN@IP_Asterisk:Port_Asterisk)
    5. api_id– ID зарегистрированного приложения(п.5 данной статьи)
    6. api_hash — HASH зарегистрированного приложения(п.5 данной статьи)
    7. use_proxy – использование прокси для работы клиентской части Telegram клиента в SIP шлюзе, может принимать два значения «true» или «false»
    8. proxy_address – адрес прокси сервера
    9. proxy_port — порт прокси сервера
    10. proxy_username — имя пользователя прокси
    11. proxy_password — пароль пользователя прокси

    14. Для корректного прохождения голоса потребуется установка OPUS кодека, для этого в SSH консоли на сервере Asterisk выполним команды:

    Приведем конфигурационный файл к виду:

    Выполним подключение кодека:

    15. Т.к. SIP шлюз не позволяет в строку callback_uri подставлять разные внутренние номера, то для удобства созвона с нужным внутренним номером направим входящий звонок для экстена telegram в контекст быстрого голосового набора рассмотренного в статье

    16. На этом установка и подготовка завершены, выполним запуск SIP шлюза. Для первого раза единожды необходимо будет запустить gen_db для заведения базы необходимой созданному клиенту Telegram, для этого в SSH консоли на сервере Asterisk выполним команды:

    17. Звонок с Telegram на внутренний номер

    18. Звонок с внутреннего номера на кастом внутренний номер с закрепленным за ним никнеймом telegram пользователя

    источник

    Настройка SIP в Asterisk — sip.conf

    Файл ‘sip.conf’ отвечает за настройку внутренних и внешних каналов SIP в Asterisk. Объекты конфигурации — пиры, описываются в отдельных секциях, которые обозначаются именами в [квадратных скобках]. Действует принцип наследования, как и в большинстве конфигов Asterisk: все что задано после имени в квадратных скобках, относится к одному объекту, пока не будет объявлен следующий.
    Предопределенная категория — [general], задает глобальные настройки драйвера SIP Asterisk, которые распространяются на все объекты, но могут быть переопределены для отдельных пиров в их категориях.

    Asterisk SIP trunk

    Соединение обозначенное как user, это определение любой системы или оконечной точки (endpoint), которой мы разрешаем входящие вызовы на наш сервер Asterisk. Соединение type=user не обозначает никакого пользователя, а только создает канал и указывает контекст, для входа в диалплан аутентифицированных входящих вызовов.
    Через соединение обозначенное как peer совершаются исходящие вызовы.

    Asterisk Register String

    register ⇒ sipuser[:secret[:authuser]]@host[:port][/extension]

    Вышеприведенный пример, упрощенный вариант строки регистрации. Полный вариант содержит больше информации:
    register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][

    Обратите внимание на параметр transport, например tls:
    register => tls://user:password@host

    Строка регистрации имеет напрямую связанные с ней параметры [general]:

    Для получения подробной информации о командах смотрите Asterisk CLI — интерфейс командной строки.

    Пример вывода команды sip show registry в консоли Asterisk:

    Возможные состояния (state):

    Asterisk SIP peer

    Для совершения исходящих вызовов должен быть создан объект type=peer.

    Asterisk не делает различий между внутренними и внешними линиями, любой вызов совершается через какой-либо канал. Когда SIP сервер провайдера, вызывает Asterisk, то он совершает вызов через peer, проходя аутентификацию у user.

    Конфигурация пиров осуществляется при помощи текстовых блоков, отделенных друг от друга квадратными скобками. Имя в квадратных скобках может совпадать с параметром ‘defaultuser’, но не обязательно.

    Приведенный пример, являет собой типовой, самый распространенный вариант конфигурации sip транка с регистрацией через публичную сеть:

    Входящая и исходящая маршрутизация sip транка в диалплане Asterisk

    В диалплане (extensions.conf ) можно использовать разнообразный синтаксис для вызова (dial ) SIP устройств.

    В файле extensions.conf, для совершения исходящих вызовов, у Вас должно присутствовать правило набора, примерно такого вида:

    Пример контекста для входящих вызовов в файле ‘extensions.conf’:

    Где from-siptrunk контекст заданный user или friend объекту.

    Настройка SIP пира для регистрации внутренних абонентов

    Как уже отмечалось Asterisk не делает особых различий между транками и абонентами, поэтому конфиг телефона будет похож на SIP транк, но все же немного другой.

    Рассмотрим некоторые опции:

    ‘call-limit’ опция признана устаревшей и заменена на ‘callcounter’. Установить ограничение одновременных вызовов теперь можно переменной канала function ‘GROUP_COUNT’
    пример использования данного метода можно помотреть здесь: Ограничение количества одновременных вызовов по набранному номеру.

    Настройка нескольких SIP пиров по шаблону

    А затем определить уникальные свойства пиров, добавив рядом с именем каждого пира, имя общего шаблона в круглых скобках:

    Asterisk sip.conf General SIP Options

    Полный список параметров general sip.conf

    Следующие параметры используются в общей [general] секции sip.conf:

    allowexternalinvites

    Если установлено ‘no’, запрещает INVITE и REFER от внешних (не из localnet) доменов. См domain

    allowguest

    Если ‘no’, запрещает гостевые(без аутентификации) подключения. По умолчанию sipguest подключения разрешены.

    allowoverlap

    Вкл. или Выкл набор по одной цифре (т.е. каждая набранная цифра будет сразу отправляться в канал)

    allowsubscribe

    Разрешить ли внешним устройствам подписку (SUBSCRIBE) на информацию о статусе екстеншена. По умолчанию — ‘yes’:

    allowtransfers

    Когда установлено ‘no’, запрещает любые трансферы, если не переопределено в настройках пира.

    alwaysauthreject

    autodomain

    Установите эту опцию ‘yes’, чтобы добавить локальное HOSTNAME и локальный IP адрес в список доменов:

    bindaddr and bindport

    Эти параметры определяют IP адрес и порт на которых Asterisk будет слушать SIP запросы. Для драйвера канала SIP Asterisk ‘chan_sip’ можно назначить только один адрес и порт для всех подключений для UDP и один порт для TCP транспорта, в отличии от нового драйвера PJSIP. По умолчанию адрес не задан и лучше так и оставить. Некоторые рекомендуют изменять порт по умолчанию 5060, на другой, в целях безопасности. Но помните, что это только одна из мер безопасности, не самая важная, и не гарантирует вам полной защиты от злоумышленников.

    Вы можете задать независимые для UDP, TCP и TLS транспорта значения udpbindadd, tcpbindaddr и tlsbindaddr

    buggymwi

    Вкл. эту опцию, чтобы избежать ошибок при сообщении с некоторыми ip телефонами при отправке MWI сообщений.

    callevents

    Установите ‘yes’, если хотите генерировать информацию о SIP событиях для AMI (asterisk manager interface)

    checkmwi

    Время в секундах, между проверками голосовой почты :

    compactheaders

    Использовать или нет компактные SIP заголовки.

    defaultexpiry

    Срок действия регистрации в секундах для входящих и исходящих регистраций. При входящей регистрации, этот параметр задается клиентской стороной, и заданное здесь значение используется, только если клиент не сообщил свое занчение. Для исходящих регистраций этот параметр сообщается удаленной стороне UAS (user agent server)

    directrtpsetup

    domain

    Задает имя домена сервера Asterisk по умолчанию. Командой CLI ‘sip show domains’ выводится список локальных доменов.

    dumphistory

    externhost

    externip

    externrefresh

    Если все же используется ‘externhost’, указывает промежуток времени в секундах между запросами DNS .

    g726nonstandard

    Значения: yes/no, по умолчанию: no. Если клиент собирается для сеанса связи «договориться» использовать звуковой кодек G726-32, с использованием компрессии AAL2, вместо RFC3551 (что требуется для аппаратов фирмы Sipura и шлюзов от Grandstream, и может другим). То это противоречит спецификации RFC3551, клиент должен вместо этого «договориться» использовать AAL2-G726-32

    ignoreregexpire (global)

    Если ignoreregexpire установлен ‘yes’, Asterisk сделает одно из двух, в зависимости от настроек пиров: 1)Non-realtime peer Когда регистрация истекает, информация не удаляется из памяти или БД Asterisk и вызовы будут разрешены несмотря на то, что время регистрации истекло.

    2)Realtime peers Когда peer сконфигурирован в режиме реального времени, информация о регистрации используется независимо от defaultexpiry

    jbenable

    jbforce

    Принудительное использование jitter buffer принимающей стороной SIP канала.

    jbimpl

    Использовать фиксированный или подстраиваемый (адаптивный) jitter buffer. fixed jitter buffer всегда использует значение из jbmaxsize adaptive может принимать значение больше jbmaxsize По умолчанию ‘fixed’:

    Из личного опыта, вкл. ‘adaptive’ может приводить к весьма плачевным результатам.

    jblog

    Вкл./выкл jitter buffer frame лог. По умолчанию ‘no’:

    jbmaxsize

    Установите максимальную длину буфера в миллисекундах:

    jbresyncthreshold

    Джиттер буфер порог синхронизации. По умолчанию 1000:

    icesupport

    limitonpeers

    Применять call-limit только для type=peer Это улучшит использование call-limit для устройств настроенных, как type=friend, отделив ограничение call-limit от входящих вызовов.

    localnet

    укажет серверу Asterisk какие подсети являются локальными, прозрачными для использования IP адресов сервера, SIP запросы к которым не требуют модификации поля Contact: c использованием externip или externhost

    matchexterniplocally

    Сверять ‘externip’ с ‘localnet’ и производить подстановку, только если ‘externip’ из локальной подсети. Не совсем ясно, зачем это может понадобиться? Возможно при очень нестандартной топологии сети.

    maxexpiry

    Максимальная продолжительность регистрации в секундах.

    minexpiry

    Минимальная продолжительность регистрации в секундах.

    notifymimetype

    Указывает MIME тип используемый для message-waiting indication (MWI) в SIP NOTIFY сообщении.

    notifyringing

    Сообщать подписчикам о состоянии вызов (RINGING):

    notifyhold

    Сообщать подписчикам (subscribers) о состоянии удержание (HOLD):

    pedantic

    realm

    recordhistory

    Вкл. или Выкл историю sip для всех каналов.

    registerattempts

    Сколько попыток внешних регистраций произведет Asterisk, прежде чем откажется от продолжения. По умолчанию стоит ‘0’, что значит бесконечно.

    registertimeout

    Таймаут между попытками регистрации на другом устройстве.

    relaxdtmf

    rtautoclear

    (global) Конфигурация Realtime Peers Указывает должен ли Asterisk обнулять созданные на лету friends по истечении времени регистрации. Если установлено ‘yes’, по истечении срока регистрации, удалять friends до нового запроса. Если задано число, то оно используется вместо обычного времени регистрации.

    rtcachefriends

    Если rtcachefriends включен, Asterisk будет кэшировать friends(реалтайм пиры), которые приходят из realtime engine, так же, как если бы они сконфигурированы в «sip.conf».

    rtsavesysname

    (global) Определяет, должен ли Asterisk сохранить SystemName в базе данных в режиме реального времени во время регистрации:

    rtupdate

    (global) Если установлено ‘yes’ Asterisk будет обновлять IP-адрес, порт и период регистрации пиров при регистрации. По умолчанию ‘yes’:

    sipdebug

    sendrpid

    ОТправлять или нет Remote-Party-ID header:

    srvlookup

    transport

    Задает транспорт по умолчанию. По умолчанию ‘udp’, но может быть ‘tcp’, ‘tls’, ‘ws’ или ‘wss’. Если задано TCP а tcpenable=no будет использован UDP транспорт.

    tcpenable

    Включить поддержку TCP транспорта chan_sip Asterisk.

    tcpbindaddr

    Адрес на котором Asterisk «слушает» TCP подключения.

    tcpauthtimeout

    tcpauthtimeout указывает максимальное время в секундах данное клиенту на аутентификацию. Если за заданное время клиент не прошел проверку он отключается. (По умолчаннию 30 секунд)

    tcpauthlimit

    Максимальное кол-во неаутентифицированных сессий в момент любой времени.

    t1min

    Минимальная задержка туда-обратно (minimum round-trip) для сообщения контролируемого хоста. По умолчанию 100 миллисеунд:

    subscribecontext

    Ограничить запросы SUBSCRIBE только указанным контекстом, если не переопределено в настройках пира.

    t38pt_udptl

    tos_sip, tos_audio, andtos_video

    trustrpid

    Доверять или нет Remote-Party-ID header: Asterisk SIP trustrpid

    useragent

    Если вы не желаете сообщать, что используете Asterisk, напишите Cisco или Avaya, или abyrvalg v2.0.

    usereqphone

    usereqphone опция говорит Asterisk добавить «user=phone» в SIP URIs которые содержат действующий номер телефона:

    источник

    Читайте также:  настройки пилота war thunder

    Добавить комментарий

    Adblock
    detector