IP-телефония на базе Asterisk*
8(3532) 40-95-05
8(3537) 20-30-40
Viber Out:+883510008211052 pjsip.conf Asterisk 12

pjsip.conf Asterisk 12

Posted in Настойка Asterisk

PJSip - драйвер канала SIP в Asterisk 12

 Что такое PJSIP

PJSIP мультимедийная библиотека с открытым кодом, для реализации протоколов SIP, SDP, RTP, STUN, TURN и ICE. Она сочетает лучшие возможности SIP сигнализации, хорошую проходимость NAT и высокий уровень взаимодействия с приложениями. Подходит практически для любого типа систем, начиная от компьютеров и заканчивая встраиваемыми системами (embedded systems) и мобильными телефонами.

Формат файла pjsip.conf

Pjsip.conf обычный текстовый файл, как и все конфигурационные файлы Asterisk, состоит из секций. Каждая секция (раздел) определяет конфигурацию объекта res_pjsip.

Секции отделены друг от друга именами, заключенными в квадратные скобки [какая неожиданность]

и содержат одну или более конфигурационную опцию и её значение отделенное знаком равно.

[ SectionName ] 
ConfigOption = Value 
ConfigOption = Value

Имена секций pjsip.conf

В большинстве случаев имена секций могут быть произвольными, однако в случае с типами ENDPOINT и AOR имена должны

совпадать со заголовком SIP URI «To» для идентификации входящих SIP запросов.

Каждая секция имеет обязательную опцию type=, которой определяется назначение секции в конфигурации объектов res_pjsip.

Типы секций pjsip.conf

Ниже перечислены типы секций res_pjsip и простейшие примеры конфигурации.

Варианты и значения по умолчанию

Как узнать возможные варианты значений и параметры по умолчанию?

В этом поможет встроенная справка интерфейса командной строки (CLI).

«config show help res_pjsip <configobject> <configoption>»

config show help res_pjsip aor

ENDPOINT

Модуль ENDPOINT определяет многочисленные параметры SIP, а также связь с другими модулями - AUTH, AOR и TRANSPORT.
Секция ENDPOINT должна быть обязательно связана с одной или несколькими секциями AOR.
По сути дела, ENDPOINT является основным профилем SIP телефона или SIP транка в res_pjsip, аналогично пиру в sip.conf.
Только если там определялись почти все параметры, то здесь часть ключевых свойств вынесены в специальные секции (модули), которые и будут рассмотрены ниже.

config show help res_pjsip endpoint
Простой пример конфигурации секции ENDPOINT
[777]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=udp-transport
auth=auth777
aors=777
В данном примере мы видим тип секции: type=endpoint
контекст, разрешенные кодеки и также ассоциацию с другими секциями
transport=udp-transport, auth=auth777 и aors=777.
Насколько я понимаю, опции type и aors являются обязательными для работоспособности точки.
Для назначения Caller ID этому пиру(ENDPOINT), потребуется задать следующие параметры:
trust_id_outbound=yes
callerid=V Pupkin <777>

TRANSPORT

Настройка транспортного уровня res_pjsip. Используются протоколы UDP, TCP, WebSockets и методы шифрования TLS/SSL. Можно настроить одну транспортную секцию для использования множеством точек (ENDPOINT), или создать уникальный транспортный уровень для конкретной точки.

config show help res_pjsip transport

Для применения настроек транспортного уровня недостаточно перечитать конфиги. Потребуется рестартовать Asterisk

простой пример конфигурации секции TRANSPORT
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0

или TLS транспорт:

[tls-transport]
type=transport
protocol=tls
bind=0.0.0.0
;various TLS specific options below:
cert_file=
privkey_file=
ca_list_file=
cipher=
method=
Каждый транспорт в вашей системе должен иметь уникальный порт (также как и в sip_profiles во FreeSWITCH)
localhost*CLI> pjsip show transports
Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
 =========================================================================================
Transport:  udp-transport             udp      0      0  0.0.0.0:5080
Transport:  udp-transport-infra       udp      0      0  192.168.1.110:5081
Transport:  udp-transport-megafon     udp      0      0  0.0.0.0:5060

AUTH

Секция аутентификации содержит опции и полномочия для входящих и исходящих регистраций. С этой секцией ассоциируются такие секции как ENDPOINT и REGISTRATIONS. Множество точек и регистраций могут использовать одну и ту же секцию аутентификации, если требуется.

config show help res_pjsip auth
localhost*CLI> config show help res_pjsip auth
auth: [category !~ /.?/]
 
Authentication type
 
 Authentication objects hold the authentication information for use by other
objects such as 'endpoints' or 'registrations'. This also allows for multiple
objects to use a single auth object. See the 'auth_type' config option for
password style choices.
 
auth_type                    -- Authentication type
nonce_lifetime            -- Lifetime of a nonce associated with this authentication config.
md5_cred                    -- MD5 Hash used for authentication.
password                     -- PlainText password used for authentication.
realm                          -- SIP realm for endpoint
type                             -- Must be 'auth'
username                    -- Username to use for account
Простой пример секции AUTH
[auth777]
type=auth
auth_type=userpass
password=password
username=777
с использованием MD5
[auth6001]
type=auth
auth_type=md5
md5_cred=5f4dcc3b5aa765d61d8327deb882cf99
username=777

AOR

Главная функция AoR (Address of Record) указать Asterisk, как связаться с ENDPOINT. Без соответствующей AOR секции, точка ENDPOINT будет недоступна для вызова. Здесь также задаются соответствия голосовой почте, MWI, продолжительность действия регистрации -expiration и настройки qualify (периодической отправки SIP сообщений OPTONS для мониторинга состояния устройств)

Когда Asterisk получает запрос на регистрацию от устройства, он в первую очередь ищет соответствующую SIP заголовку To: «777»<sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.;transport=UDP> запись в именах секций AOR – в нашем прмере [777]

config show help res_pjsip aor
Простейший пример секции AOR
[777]
type=aor
max_contacts=1
Опция max_contact=1 значит, что только один SIP User Agent может быть одновременно зарегистрирован через эту запись AOR, можно указать и 10, если потребуется.
[777]
type=aor
contact=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.:5060
Во втором примере мы не ожидаем запроса на регистрацию от SIP UA, а указываем вручную постоянный контакт для этой записи. Можно не беспокоится о кол-ве подключений, адрес все равно один.
[siptrunk]
type=aor
contact=sip:123.123.1.1:5060
В последнем примере пропущен username, что позволяет использовать данную запись для исходящей связи, определяя вызываемый номер при помощи диалплана «Dial(PJSIP/${EXTEN}@siptrunk)».

REGISTRATION

Секция регистраций отвечает за исходящие регистрации. Используется для регистрации в удаленных системах, будь то другой Asterisk или транк от провайдера.

config show help res_pjsip_outbound_registration registration
Пример секции REGISTRATION
[siptrunk]
type=registration
transport=udp-transport
outbound_auth=siptrunk
server_uri=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра..1.1:5060
client_uri=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра..1.1:5060
retry_interval=60
Для регистрации понадобится определить используемый транспорт и секцию аутентификации. Помимо этого, наверняка, потребуется указать контакт для входящих вызовов.
[providertrunk]
type=registration
transport=udp-transport
outbound_auth=providertrunk
server_uri=sip:sip.example.com
client_uri=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
retry_interval=60
Пример регистрации транка провайдера.

DOMAIN_ALIAS

Псевдоним домена. [Имя] данной секции является псевдонимом, а конфигурационная опция domain=, доменным именем, которому сопоставлен псевдоним.

config show help res_pjsip domain_alias
Пример секции DOMAIN_ALIAS
[example2.com]
type=domain_alias
domain=example.com

ACL

Модуль не привязан к какой-либо точке ENDPOINTs и управляет всеми входящими SIP коммуникациями с использованием res_pjsip. Установки ACl (Access Control Lis) могут быть назначены в самой секции, или в файле acl.conf на который будет ссылаться секция.

config show help res_pjsip_acl acl
Простые примеры ACL

Asterisk 12 res_pjsip_acl

Настройки берутся из файла acl.conf:

[acl]
type=acl
acl=example_named_acl1
Настройки непосредственно в секции:
[acl]
type=acl
deny=0.0.0.0/0.0.0.0
permit=123.12.123.0
permit=123.12.123.1
Конфиг разрешающий регистрацию на основе SIP заголовка, а не IP адреса.
[acl]
type=acl
contactdeny=0.0.0.0/0.0.0.0
contactpermit=123.12.123.0
contactpermit=123.12.123.1

IDENTIFY

Определяет конечные точки с помощью IP-адреса источника.

config show help res_pjsip_endpoint_identifier_ip identify
Пример identity
[777]
type=identify
endpoint=777
match=123.0.112.1

CONTACT

Контакты являются одним из способов не указывать явно SIP URI в плане набора (диалплане).

config show help res_pjsip contact
localhost*CLI> config show help res_pjsip contact
contact: [category !~ /.?/]
A way of creating an aliased name to a SIP URI
 Contacts are a way to hide SIP URIs from the dialplan directly. They are
also used to make a group of contactable parties when in use with 'AoR' lists.
type                      -- Must be of type 'contact'.
uri                       -- SIP URI to contact peer
expiration_time           -- Time to keep alive a contact
qualify_frequency         -- Interval at which to qualify a contact
outbound_proxy            -- Outbound proxy used when sending OPTIONS request
path                      -- Stored Path vector for use in Route headers on outgoing requests.

Отношения объектов конфигурации pjsip.conf

ENDPOINT

  • Множество ENDPOINTs связываются с множеством AORs
  • Ноль или больше ENDPOINTs связаны с ноль или одной AUTHs
  • Ноль или больше ENDPOINTs связаны с как минимум одним TRANSPORT
  • Ноль или одна ENDPOINTs связана с определенной IDENTIFY

REGISTRATION

  • Ноль или больше REGISTRATIONs связаны с ноль или одной AUTHs
  • Ноль или больше REGISTRATIONs связаны с как минимум одним TRANSPORT

AOR

  • Множество ENDPOINTs связываются с множеством AORs
  • Множество AORs связаны с множеством CONTACTs

CONTACT

  • Множество CONTACTs связываются с множеством AORs

IDENTIFY

  • Ноль или больше ENDPOINTs связаны с определенным IDENTIFY объектом.

ACL, DOMAIN_ALIAS

  • Эти объекты не имеют направленных связей с другими объектами.

Примеры

 Пример ENDPOINT для одного SIP телефона с регистрацией на Asterisk.
;===============TRANSPORT
 
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
;===============EXTENSION 777
 
[777]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=udp-transport
auth=auth777
aors=777
 
[auth777]
type=auth
auth_type=userpass
password=777
username=777
 
[777]
type=aor
max_contacts=1
  • auth= используется для входящей аутентификации
  • max_contacts= установите кол-во регистраций, одну или более, разрешенных для этой учетной записи.
Пример SIP транка с исходящей регистрацией
;==============TRANSPORTS
 
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
;===============TRUNK
 
[siptrunk]
type=registration
transport=udp-transport
outbound_auth=siptrunk
server_uri=sip:sip.example.com
client_uri=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
retry_interval=60
 
[siptrunk]
type=auth
auth_type=userpass
password=1234567890
username=1234567890
 
[siptrunk]
type=aor
contact=sip:123.0.112.1:5060
 
[siptrunk]
type=endpoint
transport=udp-transport
context=from-trunk
disallow=all
allow=ulaw
outbound_auth=siptrunk
aors=siptrunk
 
[siptrunk]
type=identify
endpoint=siptrunk
match=123.0.112.1
Пример регистрации множественных ENDPOINTs с использованием шаблонов
;===============TRANSPORT
 
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
;===============ENDPOINT TEMPLATES
 
[endpoint-basic](!)
type=endpoint
transport=udp-transport
context=from-internal
disallow=all
allow=alaw
 
[auth-userpass](!)
type=auth
auth_type=userpass
 
[aor-single-reg](!)
type=aor
max_contacts=1
 
;===============EXTENSION 777
 
[777](endpoint-basic)
auth=auth777
aors=777
 
[auth777](auth-userpass)
password=777
username=777
 
[777](aor-single-reg)
 
;===============EXTENSION 778
 
[778](endpoint-basic)
auth=auth778
aors=778
 
[auth778](auth-userpass)
password=778
username=778
 
[778](aor-single-reg)
 
;===============EXTENSION 779
 
[779](endpoint-basic)
auth=auth779
aors=779
 
[auth779](auth-userpass)
password=779
username=779
 
[779](aor-single-reg) 
Диалплан extensions.conf
 exten => _6XXX,1,Dial(PJSIP/${EXTEN})
 exten => _9NXXNXXXXXX,1,Dial(PJSIP/mytrunk/sip:${EXTEN:1}@203.0.113.1:5060)
 exten => _9NXXNXXXXXX,1,Dial(PJSIP/${EXTEN:1}@mytrunk)

От старого к новому - sip.conf к pjsip.conf сравнение примеров.

Сравнение конфигурации ENDPOINT

  • Два SIP телефона должны звонить и принимать вызовы через Asterisk.
  • В обоих случаях для аутентификации используются username и password.
  • 777 регистрируется с динамического IP, 778 со статического IP адреса.
sip.confpjsip.conf
[general]
udpbindaddr=0.0.0.0
 
[777]
type=friend
host=dynamic
disallow=all
allow=alaw
context=from-internal
secret=1234
 
[778]
type=friend
host=192.168.1.2
disallow=all
allow=alaw
context=from-internal
secret=1234
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
[777]
type = endpoint
transport = sudp-transport
context = from-internal
disallow = all
allow = alaw
aors = 777
auth = auth777
 
[777]
type = aor
max_contacts = 1
 
[auth777]
type=auth
auth_type=userpass
password=1234
username=777
 
[778]
type = endpoint
transport = udp-transport
context = from-internal
disallow = all
allow = alaw
aors = 778
auth = auth778
 
[778]
type = aor
contact = sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра..1.2:5060
 
[auth778]
type=auth
auth_type=userpass
password=1234
username=778

Сравнение конфигурации trunk

sip.confpjsip.conf
[general]
udpbindaddr=0.0.0.0
 
register => myaccountname:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра..1:5060
[mytrunk]
type=friend
secret=1234567890
username=myaccountname
host=123.0.112.1
disallow=all
allow=alaw
context=from-trunk
[simpletrans]
type=transport
protocol=udp
bind=0.0.0.0 
[mytrunk]
type=registration
transport=simpletrans
outbound_auth=mytrunk
server_uri=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра..1:5060
client_uri=sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра..1.2:5060
 
[mytrunk]
type=auth
auth_type=userpass
password=1234567890
username=myaccountname
 
[mytrunk]
type=aor
contact=sip:123.0.112.1:5060
 
[mytrunk]
type=endpoint
transport=simpletrans
context=from-trunk
disallow=all
allow=alaw
outbound_auth=mytrunk
aors=mytrunk
 
[mytrunk]
type=identify
endpoint=mytrunk
match=123.0.112.1
  • Наши клиенты:

    OOO Газпром межрегионгаз Оренбург    
    ООО "Газпром межрегионгаз Оренбург" Жилой комплекс Экодолье Оренбург Сеть магазинов бытовой техники "Айсберг"
  • Наши клиенты:

          
     Сеть магазинов мебели "Мягков" Администрация г.Орска Орский шпалопропиточный завод
  •   
     Сеть магазинов "Строительный БУМ" ЗАО "Орский завод синтетического спирта" Региональная торговая компания "ШАР"
  •    
     Телерадиокомпания "Евразия" Производственное объединение "Климатвентмаш" Оренбургская региональная сеть
    "Рекламная кампания"
  •  Оператор интернета и тв
    ООО "ОрскТелеком"
    МУП "Орская городская аптека" Автосалон "Вояж"
  • fort
    ozemi gost
    Отель "Фортеция" ЗАО "Завод электромонтажных изделий" Объединенная служба такси
  • novupak 
    logo ormash1  
    Производство и продажа полиэтиленовой пленки

    АО "Орский Машиностроительный завод"

     
Powered by Warp Theme Framework
������.
Яндекс.Метрика