exten => s,n,Wait(1)

exten => s,n,Playback(tt-weasels)

exten => s,n,Hangup()

[incoming_calls]

exten => _X.,1.NoOp()

exten => _X.,n,Dial(SIP/1000)

[outgoing_calls] exten => _X.,1,NoOp()

exten => X.,n,Dial(SIP/мой поставщик сервисов/${EXTEN})

[internal]

exten => 1000,1,Verbose(1|Extension 1000)

exten => 1000,n,Dial(SIP/1000,30)

exten => 1000,n,Hangup()

exten => 500,1,Verbose(1|Echo test application)

exten => 500,n,Echo()

exten => 500,n,Hangup()

[phones]

include => internal include => outgoing_calls

Соединение двух серверов Asterisk по протоколу SIP

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

Конфигурация локального межсетевого экрана

Если ip-таблицы используются на одном компьютере с сервером Asterisk, с помощью следующих команд можно открыть порт 5060 для обмена сигналами по протоколу SIP и порты от 10000 до 20000 для RTP- трафика. Также диапазон RTP-портов можно сузить в файле rtp.conf, находящемся в папке /etc/asterisk. Замечательная книга по межсетевым экранам для ip-таблиц - «Linux Firewalls» (издательство Novell Press) Стива Суэринга (Steve Suehring) и Роберта Циглера (Robert Ziegler).

# iptables -I RH-Firewall-1-INPUT -p udp --dport 5060 -j ACCEPT

# iptables -I RH-Firewall-1-INPUT -p udp --dport 10000:20000 -j ACCEPT

# service iptables save

Помните, что это откроет порты 5060 и от 10000 до 20000 для всего UDP-трафика из любого источника.

Наша топология будет состоять из SIP-телефона (Элис (Alice)), зарегистрированного в Asterisk A (Торонто (Toronto)), и SIP-телефона (Боб (Bob)), зарегистрированного в Asterisk B (Осака (Osaka)). К концу данного раздела вы сможете с помощью пары серверов Asterisk производить звонки от Элис к Бобу (и наоборот) - рис. 4.5. Это типовой сценарий, когда имеется два физических местоположения, например ком-

Рис. 4.5. Топология объединения каналов SIP

пания с несколькими офисами, и требуется обеспечить единую логическую топологию расширения.

Прежде всего давайте сконфигурируем серверы Asterisk.

Конфигурация серверов Asterisk

У нас есть пара серверов Asterisk, назовем их Торонто и Осака, и мы собираемся зарегистрировать их друг на друге. В этом сценарии будем использовать самый элементарный файл sip.conf. Как и в случае с рассматриваемой ранее в данной главе конфигурацией SIP-телефона, это не лучший способ, но он работает.

Вот конфигурация сервера Торонто:

[general]

register => toronto:[email protected]/osaka

[osaka]

type=friend

secret=welcome

context=osaka_incoming

host=dynamic

disallow=all

allow=ulaw

И конфигурация сервера Осака:

[general]

register => osaka:[email protected]/toronto

[toronto]

type=friend

secret=welcome

context=toronto_incoming

host=dynamic

disallow=all

allow=ulaw

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

Вторая строка файла указывает серверу Asterisk зарегистрироваться на другом сервере. Таким образом мы сообщаем удаленному серверу

Asterisk, куда направлять вызовы, когда он пожелает обратиться к нашему локальному серверу Asterisk. Помните, мы предупреждали о небольших странностях в конфигурации? Видите в конце строки регистрации слэш и имя удаленного сервера Asterisk? Так удаленный сервер Asterisk получает информацию о том, какое краткое имя использовать при вызове. Если не добавить этого, при попытке дальнего конца сделать вызов в окне командной строки Asterisk появится следующее сообщение:

[Apr 22 18:52:32] WARNING[23631]: chan_sip.c:8117 check_auth: username

mismatch, have <toronto>, digest has <s>

Таким образом, добавляя слэш и имя, мы сообщаем противоположному концу, что должно быть указано в качестве краткого имени пользователя в поле Proxy Authorization (Авторизация прокси) SIP-сообщения INVITE.

Весь остальной файл занимает блок авторизации, используемый для управления входящими и исходящими вызовами другого сервера Asterisk. Сервер Торонто использует блок авторизации [osaka], и сервер Осака использует блок [toronto]. Определен тип friend, что позволяет принимать и направлять вызовы к другому серверу Asterisk. Параметр secret (секрет) - это пароль, который должна использовать другая система при аутентификации. Параметр context (контекст) указывает, в какой части диалплана (extensions.conf) обрабатываются входящие вызовы. Для параметра host задано значение dynamic (динамический), это указывает серверу Asterisk на то, что противоположный конец сообщит свой IP-адрес, на который следует направлять адресованные ему звонки, при регистрации. Наконец, с помощью параметров disallow (запретить) и allow (разрешить) можно определять, какие кодеки будут использоваться при общении с противоположным концом. После сохранения файла и перезагрузки SIP-канала на обоих серверах Asterisk (выполнение команды sip reload из консоли Asterisk) в окне командной строки должно быть выведено примерно следующее сообщение, что свидетельствует об успешной регистрации удаленного сервера:

*CLI> -- Saved useragent 'Asterisk PBX' for peer toronto (Для равноправного участника сети торонто сохранен агент пользователя 'офисная АТС Asterisk') После выполнения команды sip show peers статус хоста Unspecified (Не определен) должен быть замен IP-адресом удаленного сервера: *CLI> sip show peers

Name/username Host Dyn Nat ACL Port Status

toronto/osaka 192.168.2.202 D 5060 Unmonitored

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату