Знание

Свързване на два Asterisk сървъра

Разбира се, можете също да използвате протоколи SIP или H.323 (но не и MGCP), за да комуникирате между два сървъра Asterisk, но използването на протокола IAX е най-лесното решение на този проблем. Можете да използвате следното, за да създадете цялостен план за набиране:

  • Разумно проектирайте план за набиране за всеки сървър, така че веднага да стане ясно кой сървър принадлежи към определено разширение, когато набирате номер на някой от сървърите. Например използвайте номера 3xxx за сървър A, 4xxx за сървър B и 5xxx за разширения, свързани към сървър C.
  • Използвайте директивата "превключване", за да направите сървър A да търси на сървър B за разширения, които не са известни на сървър A (и двата сървъра трябва винаги да сте в изправност и да сте на разположение, в противен случай ще имате големи закъснения между момента на набиране на номера и всяка реакция на това действие!)
  • Можете да използвате DUNDILOOKUP: Разпределена директория с универсални номера (DUNDi)
  • Може да използва ENUMLOOKUP (e.164)

Метод, използващ SIP протокол.

Когато разгледаме файла sip.conf, може да си струва да започнете, като посочите типа клиент като type = friend и на двата сървъра и ако всичко започне да работи добре, може да искате да разделите този запис по тип: peer - за изходящи повиквания и потребител за входящи повиквания. Също така, обърнете внимание във файла sip.conf на параметрите "несигурен = много" ("несигурен = порт, поканете" във версия 1.4) и, вероятно, на параметъра: "autocreatepeer = да".

Настройване на IAX канал.

Когато използвате IAX връзка между два сървъра на Asterisk, конфигурацията се състои от следните стъпки:

Дефиниране на IAX2 потребител от тип потребител.

Параметърът "context" е много важен, той задава името на локалния контекст, където ще се изпращат входящи повиквания от потребители (вижте описанието на файла: extensions.conf).

Дефиниране на IAX2 потребител от тип връстник.

След като приключихме стъпки 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, задръствания

exten => _8XXX, 1, Dial (IAX2/myserver: passwordB @ IAXserverB/$, 30, r)
exten => _8XXX, 2, Dial (SIP/myserver: passwordB @ SIPserverB/$, 30, r)
exten => _8XXX, 3, задръствания

Разбира се, вместо записи като [IAXserverA] и т.н., трябва да посочим тези, които сме записали във файловете iax.conf и sip.conf, за да може всичко да работи както трябва. В този пример SIP се използва като резервен канал в случай на проблеми с IAX връзка.
Моля, обърнете внимание, че в този пример потребителското име и паролата са включени в CDR записа (може да искате да използвате втория пример или да използвате ключови изрази вместо комбинации от потребителско име и парола)!

В този пример потребителското име и тайните полета не се показват в CDR записите.

[сървърB]
тип = приятел
потребител =
тайна =

разширения.conf
exten => _7XXX, 1, Dial (IAX2/serverB/$, 30, r)
exten => _7XXX, 2, задръствания

разширения.conf
exten => _8XXX, 1, Dial (IAX2/serverA/$, 30, r)
exten => _8XXX, 2, задръствания

В някои случаи параметрите serverA и serverB трябва да съдържат потребителското име на сървъра.

Използвайки обекта Switch в extensions.conf, можете да свържете два сървъра Asterisk и план за набиране към друг сървър. В този случай нашият „сървър C“ се свързва или със „сървър A“, или със „сървър B“:

[по подразбиране]
exten => _801XXX, 1, Goto, srvA | $ | 1
exten => _802XXX, 1, Goto, srvB | $ | 1

[srvA]
exten => _801XXX, 1, StripMSD, 3
exten => _XXX, 2, Отидете, 1
switch => IAX/serverA

[srvB]
exten => _802XXX, 1, StripMSD, 3
exten => _XXX, 2, Отидете, 1
switch => IAX/сървърB

Забележки: Не можете да установите затворена верига, като използвате превключвател от serverA към serverB и от сървърB към сървърA! Също така обърнете внимание на (новата) настройка във файла iax.conf "autokill =", която предотвратява продължително прекъсване, ако отдалеченият сървър е изключен или прекъснат.

Във файла extensions.conf (на главния файл):

[изходяща]
switch => IAX2/master: [email protected]/outbound

Във файла iax.conf (на master):

[роб]
тип = потребител
auth = открит текст
контекст = изходящ
контекст = изходящ2; (ако желаете, може да са няколко)
тайна = тайна
хост = динамичен
callerid = "роб"
багажник = да
notransfer = да

[роб]
тип = връстник
auth = открит текст
context = outbound-nuphone
тайна = тайна
хост = динамичен
багажник = да
notransfer = да

I В extensions.conf (на роб):

[възложени-направени]
; Изберете извикващ механизъм, първият извиква посоченото разширение,
; втората извиква специално разширение - s.

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

Във файла iax.conf (на подчиненото устройство):

[майстор]
тип = връстник
хост = iax-gw1.company.net
тайна = тайна
контекст = изходящ
багажник = да
canreinvite = не

[майстор]
тип = потребител
тайна = тайна
context = acontext
багажник = да
canreinvite = не

Екип регистрирам.

За да разрешите регистрацията, в раздела [general] на файла iax.conf добавете директива за регистрация: