пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Подключив SIP – транк к нашему Asterisk, следующим шагом необходимо настроить маршрутизацию вызова. Как это сделать исходящие и входящие маршруты во FreePBX 13 расскажем в сегодняшней статье:
Маршрутизация вызова является важнейшей задачей в настройке офисной АТС. В настройках входящей маршрутизации, как правило, компании реализуют свои бизнес процессы – направляют вызовы с определенных номеров на IVR, c других номеров на Ring Group (группы вызова), а третьи напрямую на ответственного менеджера. При исходящей маршрутизации, можно учитывать направление вызова, например, если у вас 2 провайдера IP – телефонии, и один из них дает наилучшую цену для звонков в Сибирь, а другой для звонков на Урал.
Пошаговое видео
Исходящие маршруты
Начнем с настройки исходящей маршрутизации во FreePBX 13. Для этого перейдем во вкладку Connectivity → Outbound Routes
Открываем интерфейс настройки на первичной вкладке Route Settings.
Давайте разберемся, что можно здесь настроить:
Route Name - Имя маршрута. Рекомендуем записывать названия по номеру телефона – это позволяет быстрее ориентироваться в настроенных маршрутах.
Route CID - В данном поле можно ввести CallerID для этого маршрута, т.е номер звонящего, который мы будем отправлять в сторону провайдера. Важно отметить, что данный CID является менее приоритетным, чем CID настроенный на SIP – транке и правилах Ring Group, Follow Me.
Override Extension - Yes/No: Если выбрано значение Yes, то настроенный в параметрах экстеншена Outbound CID будет игнорироваться
Route Password - Данная настройка позволяет запрашивать у пользователя пароль, чтобы позвонить через данный маршрут. Это достаточно полезная опция, при звонках зарубеж.
Route Type - Выбрать тип маршрута:
Аварийный (Emergency) или Корпоративный (Intra-Company)
Аварийный (Emergency): Набор экстренных служб и прочих
Корпоративный (Intra-Company): В данном случае будет сохранена информация Caller ID в настройках Extension
Music On Hold - Музыка ожидания на маршруте. Для различных направлений звонка, например, можно делать какое-либо звуковое сообщение на нативном для направления языке.
Time Group - Временная группа. Если отмечено, то этот маршрут будет использоваться только в указанное в настройках Time Group времени.
Route Position - Во FreePBX 13, как и в других версиях используется приоритетность маршрутов в зависимости от его позиции. В данном пункте можно выбрать позицию маршрута относительно других.
Trunk Sequence for Matched Routes - Последовательность SIP – транков для отправления вызова в сторону провайдера. Если первый транк не работает, вызов будет отправлен во второй и так далее.
Optional Destination on Congestion - Если вызов не может состоять по причине неработоспособности SIP – транков, то можно отправить вызов, например, на звуковое сообщение «В настоящее время все линии недоступны. Обратитесь в техническую поддержку»
Отлично, мы разобрались со вкладкой Route Settings, теперь перейдем ко вкладке Dial Patterns, в которой мы будем определять формат набора номера. Вот как выглядит типичная настройка на маршруте:
Давайте разбираться более подробно:
Шаблон набора номера (Dial Pattern) – это уникальный набор цифр, который позволяет отправить вызов в нужный SIP – транк. Если шаблон совпадает, то вызов отправляется через SIP – транк в сторону провайдера.
Шаблон набора номера имеет 4 поля настройки:
Prepend, Prefix, Match Pattern и CallerID.
Формат такой:
(prepend) prefix | [ match pattern / caller ID ]
Шаблон
Описание
X
Любое целое число от 0 до 9
Z
Любое целое число от 1 до 9
N
Любое целое число от 2 до 9
[#####]
Любое целое число в скобка. Например, перечисление – [1.2.7], или диапазон чисел –[1.2.6-9], в который попадают числа 1,2,6,7,8,9
.(точка)
Любой набор символов
Теперь давайте разберемся с полями, которые доступны для заполнения:
Prepend - Данная часть будет добавлена к номеру, перед отправкой в SIP – транк в случае совпадения шаблона.
Prefix - Префикс – это часть шаблона, которая будет удалена
Match Pattern - Набранный номер.
ВАЖНО: Asterisk ищет совпадения сопоставляя поле Prefix и Match Pattern.
CallerID - Данный звонок будет выполнен только в случае, если звонок инициирован с указанного CallerID. В данном поле можно использовать шаблоны. Полезно, если компания имеет несколько офисов с нумерацией виду 1XXX, 2XXX и так далее.
Теперь наш маршрут готов. Мы можем совершать исходящие вызовы. Но как настроить входящую маршрутизацию во FreePBX 13? Перейдем во вкладку Connectivity → Inbound Routes
Входящие маршруты
Самым главным пунктом в настройке входящего маршрута является DID Number. Данный параметр вы получаете от вашего провайдера, и, как правило, он совпадает с самим подключаемым номером. Даем имя нашему входящему маршруту – чтобы не путаться, мы советуем так же дать имя в соответствие с номером. Далее, самое главное – поле Set Destination. Выбираем назначение для нашего звонка. Это может быть как IVR, проверка времени, Ring Group или что - угодно
На этом настройка маршрутизации во FreePBX13 завершена
В сегодняшней статье поговорим о том, как защитить IP-АТС от несанкционированного доступа и дадим несколько простых советов, следуя которым, можно существенно повысить безопасность вашей телефонной станции. Примеры, которые будут приведены в данной статье, относятся к IP-АТС на базе Asterisk, однако многие из них распространяются на все без исключения VoIP-АТС.
Для начала, давайте разберёмся, чем же грозят “дыры” в безопасности и какие последствия грозят бизнесу, если злоумышленник получит доступ к IP-АТС.
Угроза взлома
В отличие от взлома персонального компьютера или почты, взлом АТС – это бесплатные для взломщика звонки, за которые придется заплатить владельцу АТС. Известно немало случаев, когда хакеры тратили колоссальные суммы, проведя на взломанной АТС всего несколько часов.
Как правило, целями злоумышленников становятся IP-АТС, которые доступны из публичной сети. Используя различные SIP-сканнеры и исследуя системные уязвимости, они выбирают места для атаки. Дефолтные (default) пароли, открытые SIP-порты, неправильно управляемый firewall или его отсутствие - всё это может стать причиной несанкционированного доступа.
К счастью, все эти уязвимости можно устранить и причём совершенно бесплатно.
Простые шаги к повышению безопасности
Первое правило, которое необходимо соблюдать – это не афишировать адрес своей IP-АТС и следить за тем, чтобы доступ к сети имели только авторизованные пользователи. Разумеется, это правило распространяется и на физический доступ к серверу, на котором установлена IP-АТС.
Второе и самое очевидное – не использовать дефолтные (default) пароли, которые будет легко подобрать или угадать – “1234”, “admin”, “password”, название компании и так далее.
Одной из самых распространённых ошибок, является создание внутренних номеров (Extension), у которых и номер и пароль совпадают. В sip.conf это выглядит примерно так:
sip.conf
[101]
username=101
secret=101
host=dynamic
Допускать такого, категорически нельзя. Тем более что при создании внутреннего номера через интерфейс FreePBX 13, автоматически генерируется 32-значный надёжный пароль.
При настройке внутренних номеров также следует ограничивать IP-адреса, которые могут быть на них зарегистрированы вплоть до пула адресов локальной подсети. IP-АТС Asterisk имеет встроенные ACL (Access Control List), в настройке sip.conf. При помощи команд permit/deny можно разрешить лишь опредёленное количество IP-адресов для регистрации.
Другой важной мерой по усилению безопасности, является ограничение удалённого доступа к IP-АТС при помощи firewall. Будьте внимательны, так как в данном случае, главное грамотно настроить правила, по которым будет отрабатывать firewall. Убедитесь, что настройка не блокирует порты, которые использует ваша IP-АТС и не позволяет анонимно посылать ICMP запросы из публичной сети. Если вы планируете предоставлять удалённый доступ для авторизованных сотрудников, лучше всего организовать его при помощи VPN сервера (например, Open VPN).
Если это возможно, то желательно использовать NAT (Network Address Translation). При помощи NAT’а, можно присвоить IP-АТС приватный IP-адрес и существенно усложнить доступ к ней из Интернета.
Ещё одним очень важным фактором, является разделение входящих и исходящих маршрутов (Inbound Routes и Outbound Routes). Необходимо, чтобы каждый маршрут принадлежал собственному контексту обработки вызова.
Отключите каналы и сервисы, которые не используются. Например, если вы не используете протокол MGCP или skinny. Отключить эти модули можно в /etc/modules.conf как показано ниже:
noload => chan_mgcp.so
noload => chan_skinny.so
noload => chan_oss.so
Чтобы усложнить работу всевозможным SIP-сканнерам, необходимо в настройках sip.conf выставить следующее условие - alwaysauthreject=yes. Это будет препятствовать получению информации об использующихся внутренних номерах на вашей IP-АТС.
Рекомендуем создавать отдельные маршруты на звонки за рубеж (по сути, международное направление 810). Ставьте ограничения на звонки в таких маршрутах или закрывайте их PIN – кодом, который могут знать только сотрудники вашей организации.
Как видите, защитить IP-АТС от внешних вторжений не так уж трудно, следуя предложенным советам, можно достаточно серьёзно повысить безопасность и надёжность системы.
Если вы хотите убедиться, что ваш сайт работает хорошо вне зависимости от интенсивности трафика, проведите нагрузочное тестирование.
Выражаясь простыми словами, нагрузочное тестирование – это разновидность тестирования производительности. Его используют для того, чтобы определить верхний предел веб-приложения и чтобы проверить, как система справляется с большой нагрузкой.
Если вы хоть раз задавались вопросом
«как этот веб-сайт себя поведет с точки зрения производительности при экстремальной нагрузке, если к нему одновременно будет обращаться слишком много пользователей?»,
тогда эта статья для вас – здесь мы ответим на этот вопрос.
Ниже мы продемонстрируем три различных инструмента, с помощью которых вы сможете провести нагрузочное тестирования.
Но прежде, чем мы приступим, давайте для начала посмотрим, какие данные нам необходимо собрать.
Когда речь заходит о тестировании производительности, стоит понимать, что есть определенные показатели, которые могут описать наше приложение. Вот они:
Время отклика
(Response time) – количество времени между запросом и ответом на него.
Среднее время загрузки
(Average load time) – среднее время отклика.
Максимальное время отклика
(Peak response time)
– самое большое значение времени отклика.
Пропускная способность / запросы в секунду
(Throughput / requests per second (rps)) – количество запросов, обрабатываемых в секунду.
Использование памяти/ЦП
(Memory/CPU utilization) – объем памяти/ЦП, потребляемый главным компьютером.
Частота появления ошибок
(Error rate)
– соотношение типа ошибки/запросы.
Одновременно работающие пользователи
(Concurrent users) – количество активных пользователей/сеансов в приложении.
Процентили (50% и 95%)
(Percentiles) – процент запросов, время выполнения которых лучше некоторого определенного значения.
Loadtest
loadtest
Первый инструмент – это пакет
npm
под названием loadtest.
Для того, чтобы у вас была возможность использовать данный инструмент, вы должны установить на вашем компьютере NodeJS. После этого вам необходимо запустить следующую команду:
npm install -g loadtest
Loadtest – это, определенно, самый простой и самый легкий инструмент для настройки и использования из данного списка. Все, что от вас требуется, это открыть командную строку и запустить:
loadtest [-n requests] [-c concurrency] URL
В демонстрационных целях мы будем использовать мой любимый веб-сайт blank.org. По сути, это пустая страница, которую чаще всего используют именно для тестирований.
Следующая команда отправит максимум 60 запросов от 30 различных одновременно работающих клиентов:
loadtest -n 60 -c 30 https://blank.org
Примечание: количество одновременно работающих пользователей никак не связано с количеством одновременно отправленных запросов.
Параллельно работающие пользователи/параллельные сеансы – это количество пользователей, подключенных к приложению, которые отправляют запросы через равные промежутки времени, но одновременно.
Результат работы предыдущей команды будет таким:
Этот инструмент дает нам информацию о:
процентилях
(50, 90, 95, 99 и 100%);
среднем времени отклика;
частоте появления ошибок.
Мы можем видеть, что для blank.org для 50% наших запросов время отклика 581 мс, а самое большое значение времени отклика составило 649 мс.
Loadmill
Loadmill
Еще один инструмент, который мы можем использовать для нагрузочного тестирования, - это Loadmill. Это бесплатный веб-инструмент. Он также включен в пакет npm (это на случай, если вдруг мы захотим написать код самостоятельно), но для демонстрационных целей мы будем использовать онлайн-инструмент.
Для того, чтобы провести нагрузочное тестирование с помощью Loadmill, все, что нам нужно сделать, это создать запрос в соответствующей панели и указать URL-адрес нашего приложения.
После чего мы должны нажать кнопку «
Run Test
» (Запустить тестирование) и настроить количество параллельных сеансов и продолжительность тестирования.
Вы заметите, что домен
blank.org
отображается красным. Это из-за того, что он считается непроверенным доменом. Не стоит забывать, что я не владею сайтом
blank.org
. По этой причине есть определенное максимальное пороговое значение нагрузки, которую мы можем направить на этот сайт.
Настроив такую конфигурацию, мы увидим, как себя поведет blank.org, когда в течение 2 минут приложением одновременно попытаются воспользоваться 5 пользователей.
В качестве результата мы можем увидеть производительность в динамике:
у всех запросов среднее время отклика составило 55мс;
наибольшая нагрузка была в начале, когда у 95% запросов время отклика было менее 1 059 мс, а у 50% запросов - менее 51 мс.
Это значит, что самое долгий ответ пользователь ожидал более 1 секунды.
Здесь же мы можем видеть
частоту появления ошибок
и пропускную способность в
rps
(запросы в секунду) наших сеансов. Это количество запросов, которые были отправлены нашими одновременно работающими пользователями за 1 секунду.
А теперь можете спросить себя, почему же такое большое расхождение между результатами тестирования с помощью первого инструмента и этого.
Здесь крайне важно обратить внимание на актуальность и точность данных. Вы должны оставаться реалистами и стараться, чтобы ваши тесты как можно точнее отражали реальность.
Когда речь заходит о тестировании производительности, то есть несколько стратегий. Некоторые инструменты и поставщики используют только локальную среду, тогда как другие для каждого параллельно работающего пользователя запускают виртуальные машины.
Loadmill
выделяется среди других служб тем, что для того, чтобы создать нагрузку на тестируемый сервер, он использует реальный веб-трафик. То есть, трафик, который идет на целевой веб-сервер, исходит от
реальных браузеров
.
Пакет
Loadtest
тесно связан с локальным компьютером, на котором запускаются тестирования, и вы можете удаляться от него лишь настолько, насколько позволяет вам ваш ЦП.
Вы уже видели, что я запускал тестирование с помощью
loadtest
на своем компьютере с помощью командной строки. Время отклика было в 10 раз больше, чем при использовании
Loadmill
. Давайте разберемся почему так происходит.
Если мы откроем инструментальные средства разработки на blank.org, то найдем там его IP –
18.217.80.105
. Выполним поиск и увидим, что сервер находится в
Огайо, США
.
Мы знаем, что время отклика – это время, которое прошло с момент отправки запроса и до момента получения ответа. Итак, запрос отправляется на сервер, а затем обратно с сервера к агенту (браузеру).
С помощью первого инструмента мы получили результат в 500мс, так как я отправляю запросы со своего компьютера. Получается, что запросы должны пробежать туда и обратно почти 11 000 миль.
Если мы перейдем ко второму инструменту и взглянем на его панель результатов
PERFORMANCE/COUNTRY
, то мы увидим, что все запросы были отправлены из США. Именно поэтому время отклика существенно меньше.
Не забывайте, что лучше всего моделировать условия, которые были бы максимально приближены к реальным, чтобы данные были как можно более точными.
Перед тем, как мы перейдем к следующему инструменту, я хочу отметить еще кое-что касательно Loadmill: его можно настроить для гораздо более масштабных целей, чем эта.
Мы можем создавать сложные сценарии нагрузочного тестирования с несколькими запросами, которые содержат параметры и данные, в том числе сценарии стандартной аутентификации и уведомлений по электронной почте.
Apache JMeter
Apache JMeter
Последний инструмент в нашем списке – Apache JMeter. Это Java-приложение с открытым исходным кодом, которое предназначено для тестирования производительности. Это приложение необходимо устанавливать, и в настройке он не такой уж простой. Поэтому всю дальнейшую информацию мы поделили на отдельные шаги.
Шаг 1 – Загрузите и установите
Загрузите архив с бинарными файлами на свой компьютер и распакуйте его.
Затем перейдите в папку bin и запустите файл jmeter.bat два раза. Один раз, чтобы настроить инструмент, и второй раз, чтобы его запустить.
Шаг 2 – Добавьте группу потоков (Thread group)
У
Thread Group
есть три самых важных свойства, которые влияют на нагрузочное тестирование:
Количество потоков (пользователей)
(Number of threads (users)): количество параллельных сеансов, которые создаст JMeter.
Период увеличения нагрузки
(Ramp-up period): продолжительность теста.
Счетчик циклов
(Loop count): сколько раз необходимо выполнить тест.
Шаг 3 – Добавьте набор образцов HTTP-запросов
В
шаблоне HTTP-запроса
, под названием раздела HTTP Request, заполните поля
Server Name
(имя сервера),
Protocol
(протокол) и
Path
(путь) для приложения, которое вы хотите протестировать.
Шаг 4 – Добавьте просмотр результатов
В JMeter для вывода результатов тестирования производительности используются компоненты listener. У них есть много разновидностей, но вы можете также добавить какие-то другие с помощью плагинов. В нашем случае мы будем использовать таблицу (Table).
Шаг 5 – Запустите тестирование
Нажмите на зеленый треугольник и запустите тестирование.
Теперь мы можем проанализировать наш тест.
Прежде всего, в правом верхнем углу мы можем видеть, что тест выполнялся в течение 10 секунд. Именно так мы указали в параметрах.
Далее больше всего нас интересуют столбцы
Status
(Статус) и
Latency
(Задержка/время отклика).
Latency
: количество миллисекунд, которое прошло с момент отправки запроса и до момента получения ответа.
Status
: отображает статус запроса, успешно он был выполнен или нет. Он используется для расчета частоты повторения ошибок.
Попутно хочу заметить, что значения практически такие же, как и значения, которые мы получили с помощью нагрузочного тестирования. Это потому, что они работают одинаково.
Остальные показатели
С помощью этих инструментов мы смогли получить информацию практически по всем показателям, которые упоминали в начале.
А если мы хотим получить информацию об использовании памяти/ЦП, нам нужно подключиться к компьютеру, на котором находится наше приложение, и выполнить следующие команды:
$ top
Эта команда продемонстрируем вам как процент загрузки ЦП, так и использование памяти.
или
$ free -h
Эта команда продемонстрирует вам только информацию касательно памяти, но ее вывод более удобный для восприятия.
Заключение
Существует большое количество инструментов, которые можно использовать для тестирования производительности. Очень важно найти тот, который вам будет легко использовать, но при этом он должен показывать как можно более точные данные. И помните, что ваши тесты всегда должны моделировать условия, которые максимально приближены к реальным.
