Asterisk эхо тест

На этой странице описаны некоторые базовые тесты вызовов для новой работы SIP в Asterisk.

Конфигурация для тестов

Конфигурация для этих тестов будет сделана из базового шаблона. Некоторые тесты потребуют добавления конфигурации в шаблон. При необходимости это будет указано в тесте.

Тесты входящего вызова

Тесты входящих вызовов включают вызов, инициированный с конечной точки «Алиса» на Asterisk.

Номинальный путь

Все тесты номинального пути будут выполняться несколько раз. Каждая итерация теста подробно описана в таблице ниже.

Воспроизведение файлов

Условия прохождения: Убедитесь, что звук правильно доходит до Алисы Убедитесь, что Asterisk отправляет Алисе BYE

Тест 2

Все нештатные тесты нужно будет запускать несколько раз. Подробная информация о каждой итерации приведена ниже:

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

Неизвестный источник

Условия прохождения: Убедитесь, что Asterisk отправляет 403 Кэрол

Ошибка аутентификации

Этот тест требует нескольких итераций. Различия в каждой итерации подробно описаны в таблице ниже

.

Условия прохождения: Убедитесь, что Asterisk отклоняет все INVITE с учетными данными с ошибкой 401.

Неизвестный пункт назначения

Условия прохождения: Убедитесь, что Asterisk отправляет 404 Алисе

Несовместимые кодеки

Условия прохождения: Убедитесь, что Asterisk отправляет 488 Алисе

Проверка исходящих вызовов

Все эти тесты описывают вызовы от Asterisk к конечной точке «bob».

Номинальные испытания

Условия прохождения: Убедитесь, что аудио передается от Asterisk к Бобу. Убедитесь, что Asterisk отправляет BYE Бобу после завершения воспроизведения

Процедура: Удалить Боба из сети. Инициируйте звонок от Asterisk Бобу.

Условия прохождения: убедитесь, что Asterisk корректно завершает созданный сеанс после истечения времени таймера B (по умолчанию 32 секунды)

Боб не отвечает

Процедура: Инициировать звонок от Asterisk Бобу. Боб звонит, но никогда не берет трубку.

Условия прохождения: Убедитесь, что Asterisk отменяет исходящий вызов по истечении времени ожидания набора.

Боб занят

Процедура: Инициируйте вызов от Asterisk Бобу. Боб отвечает занятым ответом.

Условия прохождения: Убедитесь, что Asterisk получает 486 от Боба и подтверждает его. Убедитесь, что это приводит к уничтожению исходящего сеанса.

Вызов отменен

Процедура: Инициировать звонок от Asterisk Бобу. Завершите исходящий вызов до того, как Боб ответит.

Условия прохождения: Убедитесь, что Asterisk отправляет Бобу ОТМЕНУ. Убедитесь, что это приводит к уничтожению исходящего сеанса.

Боб несовместим

Процедура: Инициировать звонок от Asterisk Бобу. Боб отвечает на звонок, но с кодеками, несовместимыми с тем, что мы предлагаем.

Условия прохождения: Убедитесь, что Asterisk немедленно отправляет BYE после подтверждения 200 OK от Боба.

Тесты двухсторонних звонков

Процедура: Алиса звонит Бобу через Asterisk. Боб отвечает на звонок. Алиса и Боб обмениваются звуками. Алиса вешает трубку через 5 секунд.

Читайте также:  Код ОКВЭД - 63.11 - Деятельность по обработке данных, предоставление услуг по размещению информации и связанная с этим деятельность

Условия прохождения: Убедитесь, что Алиса слышит звук Боба, а Боб слышит звук Алисы. Убедитесь, что Asterisk отправляет 200 OK на BYE Алисы Убедитесь, что Asterisk отправляет BYE Бобу

Боб вешает трубку

Процедура: Алиса звонит Бобу через Asterisk. Боб отвечает на звонок. Алиса и Боб обмениваются звуками. Боб кладет трубку через 5 секунд.

Условия прохождения: Убедитесь, что Алиса слышит звук Боба, а Боб слышит звук Алисы. Убедитесь, что Asterisk отправляет 200 OK на BYE Боба Убедитесь, что Asterisk отправляет BYE Алисе

Номинальные испытания, инициированные Asterisk

Процедура: Asterisk инициирует вызов Алисы и направляет принятый вызов Бобу. Боб отвечает на вызов. Алиса и Боб обмениваются звуками. Алиса вешает трубку через 5 секунд.

Процедура: Asterisk инициирует вызов Алисы и направляет принятый вызов Бобу. Боб отвечает на вызов. Алиса и Боб обмениваются звуками. Боб вешает трубку через 5 секунд.

Нестандартные тесты, инициированные Алисой

Процедура: Удалить Боба из сети. Alice places a call to Asterisk to Bob

Pass Conditions: Ensure that Asterisk tears down the outgoing session properly after timer B expires (32 seconds by default) Ensure that Asterisk sends an error response to Alice

Procedure: Alice places a call to Asterisk to Bob Bob rings but never answers the phone.

Pass Conditions: Ensure that Asterisk cancels the outgoing call to Bob after the Dial timeout is reached. Ensure that Asterisk sends an error response to Alice

Procedure: Alice places a call to Asterisk to Bob Bob responds with a busy response.

Pass Conditions: Ensure that Asterisk receives the 486 from Bob and ACKs it. Ensure that Asterisk sends an error response (preferably a 486) to Alice.

Procedure: Alice places a call to Asterisk to Bob. Alice hangs up the outbound call before Bob answers.

Pass Conditions: Ensure that Asterisk sends a CANCEL to Bob. Ensure that Asterisk sends a 200 OK to Alice’s CANCEL and a 487 to Alice’s INVITE

Procedure: Alice places a call to Asterisk to Bob. Bob answers the call but with codecs that are incompatible with what we offered.

Pass Conditions: Ensure that Asterisk sends an immediate BYE after ACKing the 200 OK from Bob. Ensure that Asterisk sends a BYE to Alice.

Off-nominal tests, Asterisk-initiated

Procedure: Remove Bob from the network. Asterisk originates a call to Alice and directs the answered call to Bob

Pass Conditions: Ensure that Asterisk tears down Bob’s session properly after timer B expires (32 seconds by default) Ensure that Asterisk sends a BYE to Alice

Procedure: Asterisk originates a call to Alice and directs the answered call to Bob Bob rings but never answers the phone.

Pass Conditions: Ensure that Asterisk cancels the outgoing call to Bob after the Dial timeout is reached. Ensure that Asterisk sends a BYE to Alice

Читайте также:  Легкое восстановление резервной копии Zabbix: полное практическое руководство

Procedure: Asterisk originates a call to Alice and directs the answered call to Bob Bob responds with a busy response.

Pass Conditions: Ensure that Asterisk receives the 486 from Bob and ACKs it. Ensure that Asterisk sends a BYE to Alice

Procedure: Asterisk originates a call to Alice and directs the answered call to Bob Hang up the outbound call before Bob answers.

Pass Conditions: Ensure that Asterisk sends a CANCEL to Bob. Ensure that Asterisk sends a 200 OK to Alice’s BYE

Procedure: Asterisk originates a call to Alice and directs the answered call to Bob. Bob answers the call but with codecs that are incompatible with what we offered.

В прошлой заметке Автоматическая настройка голосового шлюза Cisco ATA 186 я рассказал о том, как можно сбросить настройки шлюза, автоматически настроить его при помощи DHCP- и TFTP-серверов, обновить прошивку и продиагностировать проблемы с помощью сетевого сниффера.

В этой заметке я рассмотрю первичную настройку Asterisk, подключение к системе голосового шлюза Cisco ATA 186 по протоколу SIP и настройку тестовых номеров для проверки связи между телефоном и Asterisk. Хочу сразу предупредить, что не имею опыта работы с Asterisk и поэтому приведённая здесь конфигурация может привести ко взлому телефонной системы, что при наличии подключения к сети телефонного оператора может вылиться в большие счета за международную связь.

Установка и включение

# apt-get install asterisk

Включим запуск asterisk при загрузке системы:

# systemctl enable asterisk.service

# systemctl start asterisk.service

Для подключения к консоли запущенного asterisk можно ввести следующую команду:

# asterisk -r

Подключение SIP-телефона

Для начала переименуем все имеющиеся файлы, настраивающие номерной план, чтобы имеющиеся в них настройки не мешали нам:

# cd /etc/asterisk/
# mv extensions.conf extensions.conf.sample
# mv extensions.lua extensions.lua.sample
# mv extensions.ael extensions.ael.sample

Создадим пустой номерной план в файле /etc/asterisk/extensions.conf:

Контексты globals и general являются специальными. Имена остальных контекстов — произвольные, но они могут состоять только из латинских букв и цифр, знаков подчёркивания и минусов. Пробелы в именах контекстов не допускаются. В контексте phones осуществляется включение всех настроек из контекста internal.

Чтобы новые настройки номерного плана вступили в силу, выполним такие команды:

# asterisk -rx ‘module unload pbx_lua.so’
# asterisk -rx ‘module unload pbx_ael.so’
# asterisk -rx ‘module reload pbx_config.so’
# asterisk -rx ‘dialplan reload’

Теперь переименуем файл /etc/asterisk/sip.conf, чтобы он не мешал нам:

# mv sip.conf sip.conf.sample

Вместо него создадим тестовый файл /etc/asterisk/sip.conf со следующим содержимым:

Реальный пароль я рекомендую сгенерировать, например, при помощи программы pwgen. Если пароль не будет вводиться человеком вручную, можно сгенерировать сразу длинный пароль. Следующая команда выдаст варианты 16-символьных паролей, один из которых можно выбрать:

$ pwgen 16

Для усиления безопасности в разделе general первой указана настройка allowguest=no, запрещающая Asterisk обрабатывать звонки от незарегистрированных в системе SIP-клиентов. По умолчанию Asterisk выдаёт разные ошибки для случая, когда SIP-клиент использовал несуществующее имя пользователя, и для случая, когда SIP-клиент использовал верное имя пользователя, но указал неправильный пароль. Такая настройка по умолчанию облегчает подбор имени пользователя и его пароля взломщику, поэтому второй настройкой alwaysauthreject=yes в разделе general мы задаём выдачу одинакового сообщения об ошибке в обоих случаях.

Читайте также:  Понимание ошибки HTTP 500: причины и решения

Чтобы новые настройки модуля sip вступили в силу, выполним команды:

# asterisk -rx ‘reload chan_sip.so’
# asterisk -rx ‘sip reload’

Настройка пакетного фильтра

Таким образом, чтобы клиенты из сети 169.254.254.0/24 через интерфейс br0 смогли работать с Asterisk, нужно выполнить такую команду:

# iptables -A INPUT -i br0 -s 169.254.254.0/24 -d 169.254.254.1 -p udp -m multiport —dports 5060,10000:20000 -j ACCEPT

Предполагается, что iptables настроен в режиме учёта состояния подключений, для чего где-то в начале правил должна быть настроена команда, которая умеет пропускать однажды разрешённый трафик и ответный трафик:

# iptables -I INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT

После этого можно попробовать посмотреть список зарегистрированных на Asterisk SIP-клиентов:

Настройка тестовых номеров

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

# apt-get install asterisk-moh-opsound-gsm asterisk-moh-opsound-g722 asterisk-moh-opsound-wav

Теперь добавим в контекст internal номерного плана в файле /etc/asterisk/extensions.conf следующую строчку:

Она предписывает воспроизвести музыку абоненту, позвонившему на номер 500. Чтобы новые настройки вступили в силу, перезагрузим номерной план и модуль moh:

# asterisk -rx ‘dialplan reload’
# asterisk -rx ‘moh reload’

Теперь можно попробовать поднять трубку телефона и набрать номер 500. Если в трубке начала воспроизводиться музыка, то тест успешно пройден.

Тестовый номер 501. Эхо-тест

Второй тестовый номер будет воспроизводить фразу о начале эхо-теста, затем повторять с небольшой задержкой всё произнесённое в трубку. Чтобы завершить эхо-тест, можно сразу повесить трубку, а можно нажать клавишу с решёткой. В этом случае будет воспроизведена фраза о завершении эхо-теста, после чего телефонная станция повесит трубку. Для начала установим пакеты, содержащие голосовые файлы на русском языке:

# apt-get install asterisk-core-sounds-ru-gsm asterisk-core-sounds-ru-g722 asterisk-core-sounds-ru-wav

Теперь добавим в файл /etc/asterisk/sip.conf к настройкам SIP-клиента ещё одну строчку, которая задаёт язык абонента:

Добавим в контекст internal номерного плана ещё один тестовый номер:

Осталось перезагрузить модули, настройки которых изменялись:

# asterisk -rx ‘reload chan_sip.so’
# asterisk -rx ‘reload app_playback.so’
# asterisk -rx ‘dialplan reload’
# asterisk -rx ‘sip reload’

Теперь можно попробовать поднять трубку телефона и набрать номер 501. В трубке должна прозвучать фраза о начале эхо-теста. Потом, если всё настроено правильно, в трубке можно будет услышать эхо собственного голоса. Для завершения теста можно нажать решётку или повесить трубку.

На этом пока всё. Буду рад услышать конструктивную критику, замечания и предложения.

Оцените статью
Хостинги