/ #linux 

IP-телефонія на базі Asterisk. Частина 2: Налаштування SIP

Цикл статей по розгортанню IP-телефонії на базі Asterisk. Фактично це моя проектна робота на отримання відповідного сертифікату одного з навчальних центрів. Робота була захищена, сертифікат отриманий, все написане тестувалось і є повтінстю робочою реалізацією. Інформація в статті і версії програмного забезбечення актуальні на 2017 рік.

2. Налаштування SIP

2.1 Схема нумерації

За проектним завданням, наша умовна компанія складається з 5-ти підрозділів: управлінський персонал, відділ продажів, відділ закупівель, склад, відділ техпідтримки. Номер 601 закріплений за секретарем. Нумерація телефонів буде тризначною, в якості першої цифри будуть використані номери структурних підрозділів:

  • 1ХХ - управлінський персонал
  • 2ХХ - відділ продажів
  • 3ХХ - відділ закупівель
  • 4ХХ - склад
  • 5ХХ - технічний відділ
  • 601 - секретар

Для виходу на зовнішні лінії використовується підключення до SIP провайдера

2.2 Налаштування внутрішніх номерів

Створюємо новий файл users.conf для налаштування внутрішніх номерів:

mkdir /etc/asterisk/sip
touch /etc/asterisk/sip/users.conf

Створюємо шаблон і вносимо користувачів:

[users](!)
type=friend
nat=no
dtmfmode=rfc2833
qualify=yes
canreinvite=no
disallow=all
allow=alaw
allow=ulaw
call-limit=2
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/24

[101](users)
defaultuser=101
secret=101
context=manager
host=dynamic

[102](users)
defaultuser=102
secret=102
context=manager
host=dynamic

[201](users)
defaultuser=201
secret=201
context=sales
host=dynamic

[202](users)
defaultuser=202
secret=202
context=sales
host=dynamic

[203](users)
defaultuser=203
secret=203
context=sales
host=dynamic

[204](users)
defaultuser=204
secret=204
context=sales
host=dynamic

[301](users)
defaultuser=301
secret=301
context=buyings
host=dynamic

[302](users)
defaultuser=302
secret=302
context=buyings
host=dynamic

[401](users)
defaultuser=401
secret=401
context=warehouse
host=dynamic

[402](users)
defaultuser=402
secret=402
context=warehouse
host=dynamic

[501](users)
defaultuser=501
secret=501
context=it
host=dynamic

[601](users)
defaultuser=601
secret=601
context=reception
host=dynamic

Підключаємо файл з налаштуваннями користувачів в sip.conf:

#include sip/users.conf

Перечитуємо налаштування

asterisk-centos*CLI> sip reload
 Reloading SIP
  == Parsing '/etc/asterisk/sip.conf': Found
  == Parsing '/etc/asterisk/sip/users.conf': Found
  == Parsing '/etc/asterisk/users.conf': Found
  == Using SIP CoS mark 4
  == Parsing '/etc/asterisk/sip_notify.conf': Found

і перевіряємо список користувачів

asterisk-centos*CLI> sip show users
Username                   Secret           Accountcode      Def.Context      ACL  Forcerport
101                        101                               manager          Yes  No        
102                        102                               manager          Yes  No        
204                        204                               sales            Yes  No        
203                        203                               sales            Yes  No        
202                        202                               sales            Yes  No        
201                        201                               sales            Yes  No        
501                        501                               it               Yes  No        
401                        401                               warehouse        Yes  No        
402                        402                               warehouse        Yes  No        
302                        302                               buyings          Yes  No        
301                        301                               buyings          Yes  No      

2.3 Підключення провайдера телефонії

В якості провайдера телефонії обрано zadarma.com.

Створюємо новий файл trunk.conf для налаштування sip trunk:

mkdir /etc/asterisk/trunk
touch /etc/asterisk/trunk/trunk.conf

Вносимо налаштування для підключення згідно з інструкцією на сайті https://zadarma.com/ua/support/instructions/asterisk/:

[zadarma]
host=sip.zadarma.com
insecure=invite,port
type=friend
fromdomain=sip.zadarma.com
disallow=all
allow=alaw
allow=ulaw
dtmfmode=auto
secret=PASSWORD
defaultuser=74XXXX
trunkname=zadarma
fromuser=74XXXX
callbackextension=74XXXX
context=zadarma-in
qualify=400
directmedia=no
nat=force_rport,comedia

Підключаємо файл з налаштуваннями sip trunk в sip.conf:

#include trunk/trunk.conf

Перечитуємо налаштування

asterisk-centos*CLI> sip reload
 Reloading SIP
[2017-04-24 22:03:06] NOTICE[3129]: chan_sip.c:24558 handle_response_peerpoke: Peer 'zadarma' is now Reachable. (51ms / 400ms)

і перевіряємо список пірів

asterisk-centos*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                      
101/101                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
102/102                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
201/201                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
202/202                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
203/203                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
204/204                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
301/301                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
302/302                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
401/401                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
402/402                   (Unspecified)                            D  No         No          A  0        UNKNOWN                                      
501/501                   192.168.1.101                            D  No         No          A  5060     OK (2 ms)                                    
zadarma/74XXXX            185.45.152.161                              Yes        Yes            5060     OK (52 ms)                                   
12 sip peers [Monitored: 2 online, 10 offline Unmonitored: 0 online, 0 offline]

Оскільки дзвінки всередині оператора Zadarma не тарифікуються, то для емуляції дзвінків на “зовнішні” лінії реєструємо ще один акаунт. У нашому випадку дзвінки на/з номер 74YYYY будуть вважатися “зовнішніми”.


В наступній статті будемо налаштовувати Dialplan.

Author

Олександр Бобилєв

Залишаю собі право використовувати ненормативну (але інформативну) лексику там, де звичайні слова втрачають сенс і не відображають всієї палітри почуттів, від споглядання навколишньої дійсності.