З’єднання двох серверів Asterisk, База знань

З'єднання двох серверів Asterisk

Звичайно, Ви також можете використовувати SIP або H.323 (але не MGCP) протоколи для зв'язку двох серверів Asterisk між собою, однак, використання IAX протоколу - це найпростіший для вирішення цього завдання. Для створення загального плану набору можна використати наступне:

  • Розумно проектуйте план набору для кожного сервера, щоб було відразу зрозуміло, якому із серверів належить той чи інший екстеншен, при наборі номера на будь-якому сервері. Наприклад, використовуйте номери 3xxx для сервера A, 4xxx – для сервера B та 5xxx – для номерів екстеншенів, підключених до сервера C.
  • Використовуйте директиву "switch", для того, щоб сервер A шукав на сервері B ті екстеншени, які не відомі на сервері A (обидва сервери повиннізавждибути в робочому стані і доступні, інакше у Вас будуть великі затримки між моментом набором номера та будь-якої реакції на цю дію!)
  • Можна використовувати DUNDILOOKUP: Distributed Universal Number Directory (DUNDi)
  • Можна використовувати ENUMLOOKUP (e.164)

Метод із використанням SIP протоколу.

Коли ми розглядаємо файл sip.conf, можливо варто почати з вказівки типу клієнта, як type=friend, на обох серверах, і, якщо при цьому все почне нормально працювати, Вам, можливо, захочеться розділити цей запис за типами: peer - для дзвінків та user - для вхідних дзвінків. Також варто звернути увагу на файли sip.conf на параметри "insecure=very" ("insecure=port,invite" у версії 1.4) і, можливо, на параметр: "autocreatepeer=yes".

Налаштування каналу IAX.

При використанні з'єднання протоколу IAX між двома серверами Asterisk, налаштування складається з наступних кроків:

Визначеннякористувача IAX2 типу user.

Параметр "context" - дуже важливий, він встановлює ім'я локального контексту, куди потраплятимуть вхідні дзвінки від користувачів (Дивись опис файлу: extensions.conf).

Визначення користувача IAX2 типу peer.

Тепер, коли ми завершили кроки 1 та 2, залишилося лише налаштувати план набору. Прочитайте наведені нижче приклади, для того, щоб зрозуміти, як це краще зробити.

З'єднання планів набір.

extensions.conf:exten => _7XXX,1,Dial(IAX2/myserver:passwordA@IAXserverA/$,30,r) exten => _7XXX,2,Dial(SIP/myserver:passwordA@SIPserverA/$,30,r) exten => _7XXX,3,Congestion

exten => _8XXX,1,Dial(IAX2/myserver:passwordB@IAXserverB/$,30,r) exten => _8XXX,2,Dial(SIP/myserver:passwordB@SIPserverB/$,30,r) exten => _8XXX,3,Congestion

Звичайно, нам потрібно замість записів типу [IAXserverA] і т.д. вказати ті, що ми прописали у файлах iax.conf і sip.conf, щоб все працювало як потрібно. У цьому прикладі, SIP використовується як резервний канал, у разі проблем з'єднання по IAX протоколу.Зверніть увагу, що в цьому прикладі ім'я користувача і пароль потрапляє в CDR запису замість комбінацій ім'я користувача/пароль)!

У цьому прикладі в CDR записах не відображається поле username і secret.

[serverB] type=friend user= secret=

extensions.confexten => _7XXX,1,Dial(IAX2/serverB/$,30,r) exten => _7XXX,2,Congestion

extensions.confexten => _8XXX,1,Dial(IAX2/serverA/$,30,r) exten => _8XXX,2,Congestion

У деяких випадках параметри serverA і serverB повинні містити ім'якористувача сервера.

За допомогою об'єкта Switch у файлі extensions.conf можна з'єднати два сервери Asterisk і план набору другого сервера. В даному випадку наш "server C" або з'єднується з "server A" або з "server B":

[default] exten => _801XXX,1,Goto,srvA$1 exten => _802XXX,1,Goto,srvB$1

[srvA] exten => _801XXX,1,StripMSD,3 exten => _XXX,2,Goto,1 switch => IAX/serverA

[srvB] exten => _802XXX,1,StripMSD,3 exten => _XXX,2,Goto,1 switch => IAX/serverB

Зауваження: Ви не можете встановити замкнутий ланцюжок, використовуючи switch з serverA на serverBіз serverB на serverA! Також, зверніть увагу на (нову) установку у файлі iax.conf "autokill=", яка запобігає тривалому зависанню, якщо віддалений сервер не працює або від'єднався.

У файлі extensions.conf (на master):

[outbound] switch => IAX2/master:[email protected]/outbound

У файлі iax.conf (на master):

[slave] type=user auth=plaintext context=outbound context=outbound2 ; (за вашим бажанням, їх може бути декілька) secret=secret host=dynamic callerid="slave" trunk=yes notransfer=yes

[slave] type=peer auth=plaintext context=outbound-nuphone secret=secret host=dynamic trunk=yes notransfer=yes

IВ файлі extensions.conf (на slave):

[assigned-dids] ; Виберете механізм виклику, перший викликає вказаний екстеншен, ; другий викликає спеціальний екстеншен – s.

;exten => 7046446999,1,Dial,IAX2/master@slave/$ ;exten => 7046446999,1,Dial,IAX2/master@slave

У файлі iax.conf (на slave):

[master] type=peer host=iax-gw1.company.net secret=secret context=outbound trunk=yes canreinvite=no

[master] type=user secret=secret context=acontext trunk=yes canreinvite=no

Командаregister.

Для включення реєстрації в секції [general] файлу iax.conf додайте директиву для реєстрації: