- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
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, при запуске будет получено сообщение о такой ошибке:

