Описание [Osaka] используется для управления аутентификацией удаленного сервера и доставки на него нашего диалплана. Osaka - это имя пользователя, используемое для аутентификации при поступлении вызовов. Для параметра type задано значение friend, потому что мы хотим иметь возможность отправлять вызовы на сервер Осака и принимать от него вызовы. Для параметра host задано значение dynamic, что указывает Asterisk направлять вызовы на IP-адрес, полученный при регистрации противоположной конечной точки.
В начале данного раздела был упомянут потенциальный выигрыш в пропускной способности при использовании возможности объединения каналов, предоставляемой IAX2. В Asterisk эту функциональность активировать просто, надо лишь добавить строку trunk=yes в описание сервера типа friend. Если интерфейс синхронизации (то есть dummy) установлен и запущен, можно использовать преимущества объединения каналов IAX2.
Параметр secret ясен - это пароль, используемый для аутентификации. Контекст [incoming_osaka] - это раздел файла extensions.conf, где будут обрабатываться входящие звонки для этого сервера (friend). Наконец, параметр deny запрещает все IP-адреса, кроме явно разрешенного 192.168.1.107.
Конфигурация iax.conf для Осаки практически идентична, за исключением IP-адреса и имен:
[general] autokill=yes
register => osaka: welcome@192.168.1.104
[toronto]
type=friend
host=dynamic
trunk=yes
secret=welcome
context=incoming_toronto
deny=0.0.0.0/0.0.0.0
permit=192.168.1.104/255.255.255.255
Конфигурация телефона IAX
В разделе «Конфигурация программного телефона» мы занимались настройкой нашего первого программного телефона IAX2 на примере idefisk. Конфигурация, которая будет использоваться здесь, практически аналогична, за исключением незначительных изменений, связанных с необходимостью обеспечения уникальности участников сети. Если вы уже настроили программный телефон SIP, можете также использовать его в качестве одного (или обоих) равноправных участников сети. Не забывайте, что Asterisk - приложение, работающее с множеством протоколов, и вызов к Asterisk может быть послан с SIP-теле- фона, передан по магистральному каналу IAX2 и затем направлен на другой SIP-телефон (или H.323, MGCP и т. д.). Для Осаки: [1001] type=friend host=dynamic context=phones
Для Торонто:
[2001] type=friend host=dynamic context=phones
Далее сконфигурируем программный телефон IAX2 для регистрации в Asterisk. Если телефон успешно зарегистрирован, в командной строке будет выведено примерно следующее сообщение:
*CLI> -- Registered IAX2 '1001' (UNAUTHENTICATED) at 192.168.1.104:4569
Конфигурация диалплана
Чтобы обеспечить возможность установления соединения между двумя серверами Asterisk по магистральному каналу IAX2, необходимо сконфигурировать простой диалплан. Представленный диалплан будет направлять вызовы на все добавочные номера в диапазоне 1000 (от 1000 до 1999) на сервер Осака и вызовы на все добавочные номера в диапазоне 2000 (от 2000 до 2999) на сервер Торонто. В данном примере предполагается, что сконфигурирована пара программных телефонов IAX2, но если в вашем распоряжении имеется SIP-телефон (или
два), можно использовать и его. Просто помните, что в этом случае понадобится изменить приложение Dial() так, чтобы вызовы направлялись на SIP-телефон по SIP-протоколу, а не IAX2 (то есть строку
Dial(IAX2/${EXTEN},30) необходимо заменить на Dial(SIP/${EXTEN},30)). Файл extensions.conf для Торонто:
[globals]
[general]
autofallthrough=yes [default] [incoming_calls] [phones]
include => internal include => remote
[internal]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/${EXTEN},30)
exten => _1XXX,n,Playback(the-party-you-are-calling&is-curntly-unavail) exten => _1XXX,n,Hangup()
[remote]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/toronto/${EXTEN}) exten => _2XXX,n,Hangup()
[toronto_incoming] include => internal
Файл extensions.conf для Осаки:
[globals]
[general]
autofallthrough=yes [default] [incoming_calls] [phones]
include => internal include => remote
[internal]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/${EXTEN},30)
exten => _2XXX,n,Playback(the-party-you-are-calling&is-curntly-unavail) exten => _2XXX,n,Hangup()
[remote]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dlal(IAX2/osaka/${EXTEN})
exten => _1XXX,n,Hangup()
[osaka_lncomlng] include => internal
Использование шаблонов в конфигурационных файлах
С конфигурационными файлами Asterisk связан один очень малоизвестный факт, но он настолько замечательный, что заслуживает отдельного небольшого раздела.
Читать дальше