Джим Меггелен - Asterisk™: будущее телефонии Второе издание Страница 32

Тут можно читать бесплатно Джим Меггелен - Asterisk™: будущее телефонии Второе издание. Жанр: Компьютеры и Интернет / Программное обеспечение, год неизвестен. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Джим Меггелен - Asterisk™: будущее телефонии Второе издание

Джим Меггелен - Asterisk™: будущее телефонии Второе издание краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Джим Меггелен - Asterisk™: будущее телефонии Второе издание» бесплатно полную версию:

Джим Меггелен - Asterisk™: будущее телефонии Второе издание читать онлайн бесплатно

Джим Меггелен - Asterisk™: будущее телефонии Второе издание - читать книгу онлайн бесплатно, автор Джим Меггелен

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

# service iptables save

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

Системе понадобится интерфейс синхронизации - или аппаратный, производства Digium, или программный, использующий ядро драйвера ztdummy. Для этого в системе должен быть установлен и запущен драйвер Zaptel. Подробно об установке Zaptel рассказывается в главе 3.

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

Мы будем использовать простую схему из двух серверов Asterisk, зарегистрированных непосредственно друг на друге, и отдельных телефонов, зарегистрированных на каждом из серверов Asterisk. Будем называть серверы Asterisk Торонто и Осака (см. раздел «Соединение двух серверов Asterisk по протоколу SIP»). Телефон Боба будет зарегистрирован и подключен к Торонто, а телефон Элис - к серверу Осака.

Прежде всего создадим новый файл канала (iax.conf). Для этого переименуем текущий файл шаблона в iax.conf.sample и создадим новый пустой файл iax.conf:

# cd /etc/asterisk

# mv iax.conf iax.conf.sample

# touch iax.conf

Далее откроем файл iax.conf и введем следующие настройки для сервера Asterisk Торонто:

[general] autokill=yes

register => toronto:[email protected]

[osaka]

type=friend

host=dynamic

trunk=yes

secret=welcome

context=incoming_osaka

deny=0.0.0.0/0.0.0.0

permit=192.168.1.107/255.255.255.255

Пояснения к параметру autokill=yes приведены в предыдущем разделе, а его назначение - гарантировать, что новые соединения, устанавливаемые с удаленной системой и не получившие подтверждения приема в течение заданного времени (по умолчанию - две секунды), корректно завершаются. Это спасает от возникновения множества подвешенных каналов, просто ожидающих подтверждения приема, которое, возможно, никогда не будет получено.

Строка register используется для указания удаленному серверу Asterisk нашего местоположения, чтобы, когда сервер по адресу 192.168.1.107 будет готов послать нам вызов, он отправлял его на наш IP-адрес (в данном случае наш IP-адрес - 192.168.1.104, его мы увидим в конфигурационном файле iax.conf сервера Осака). Имя пользователя Toronto и пароль welcome посылаются на сервер Осака, который проверяет нашу регистрацию. Если аутентификация пройдена успешно, он записывает в память местоположение нашего сервера Asterisk и будет использовать эту информацию при отправке нам вызовов.

Описание [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:[email protected]

[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 связан один очень малоизвестный факт, но он настолько замечательный, что заслуживает отдельного небольшого раздела.

Скажем, имеется 20 SIP-телефонов, практически идентичных с точки зрения конфигурации. Согласно документации они должны описываться путем задания параметров для каждого телефона в отдельности. Фрагмент подобного файла sip.conf мог бы выглядеть так:

[1000]

type=friend

context=internal

host=dynamic

disallow=all

allow=ulaw

dtmfmode=rfc2833

maibox=1000

secret=AllYourSetsAreBelongToUs

[1001]

type=friend

context=internal

host=dynamic

disallow=all

allow=ulaw

dtmfmode=rfc2833

maibox=1001

secret=AllYourSetsAreBelongToUs

[1002]

type=friend

context=internal

host=dynamic

disallow=all

allow=ulaw

dtmfmode=rfc2833

maibox=1002

secret=AllYourSetsAreBelongToUs

Слишком много ввода текста, копирования и вставки, правда? А что если требуется изменить имя контекста для телефонов. Не очень удобно, не так ли?

Вводим шаблон. Давайте создадим таких же участников сети типа friend, как делали выше, только на этот раз используя шаблон:

[sets](!) ; <== обратите внимание, восклицательный знак ; взят в круглые скобки. Это признак шаблона. type=friend context=internal host=dynamic disallow=all allow=ulaw dtmfmode=rfc2833 secret=AllYourSetsAreBelongToUs

1000] (sets) ; <== обратите внимание, имя шаблона взято

; в круглые скобки. Все настройки этого шаблона ; будут унаследованы.

maibox=1000

1001] (sets) maibox=1001

1002] (sets) maibox=1002

Это одна из самых малоизвестных возможностей создания конфигурационного файла. Очень немногие пользуются этой возможностью, но лишь потому, что мало кто знает о ней. Итак, пришло время перемен. С этого момента мы хотим видеть, что шаблонами пользуются все; и да, мы будем проверять.

Отладка

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

Подключение к консоли

Чтобы подключиться к консоли Asterisk, можно или запустить сервер непосредственно из консоли (в этом случае невозможно будет выйти из консоли, не завершив работу Asterisk), или запустить Asterisk как демон и затем подключиться к удаленной консоли.

Чтобы запустить процесс Asterisk непосредственно из консоли, используйте флаг консоли: # /usr/sbin/asterisk -c

Чтобы подключиться к удаленной консоли, сначала запустите демон, а затем выполните подключение, используя флаг -r:

# /usr/sbin/asterisk

# /usr/sbin/asterisk -r

Если какой-то модуль не загружается или Asterisk не загружается из- за какого-то модуля, запустите Asterisk с флагом -c, чтобы отслеживать статус загружаемых модулей. Например, если при попытке загрузить драйвер канала OSS (который позволяет использовать канал CONSOLE (консоль)) Asterisk не может открыть /dev/dsp, при запуске будет получено сообщение о такой ошибке:

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.