Ip телефония asterisk с нуля. Ip телефония с нуля. Установка AsteriskNOW

Настройка c нуля FreePBX – современного полнофункционального веб-интерфейса для управления VoIP телефонией Asterisk – не представляет сложности даже для рядового пользователя. Достаточно следовать пошаговой инструкции, которая приведена в нашей статье.

Зачем нужен Web-интерфейс FreePBX?

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

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

Установка графического интерфейса

Вот пошаговая инструкция:

1. Скачайте дистрибутив FreePBX 13 Distro. Существует несколько версий продукта: для разной разрядности операционной системы. Выбор 32 или 64-битной версии зависит от вашего программного обеспечения. Новичкам лучше не экспериментировать и обойти beta-версии Asterisk PBX стороной.

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

3. После записи загрузите машину с этого диска. Для этого измените параметры загрузки системы. Порядок действий зависит от конкретной версии BIOS. Обычно всю необходимую информацию можно найти в документации к своему компьютеру. Если все сделано правильно, то появится меню установки программы.

4. Выберите версию сервиса Asterisk PBX и режим, в котором будут работать жесткие диски. Доступны следующие варианты:

  • Full install – автоматически удалит всю информацию с жестких дисков и создаст единый RAID-массив. Такой режим повышает надежность работы системы и уменьшает вероятность отказов.
  • Full install NO RAID – установка системы без автоматического создания RAID.
  • Full install Advanced – установит систему и позволит выполнить ручное разделение диска.
  • HA Install – для дисков емкостью более 250 ГБ.

5. Выбрав нужный режим, переходим к настройкам Сети. Если вы используете DHCP-сервер (динамические IP-адреса), а в большинстве случаев это именно так, то просто нажмите ОК. При статическом IP укажите настройки для вашей Сети.

  • После этого остается выбрать часовой пояс и установить пароль для пользователя с особыми правами и полным доступом – root.
  • Ждем, пока система установит и обновит файлы Asterisk FreePBX. Перезагружаем компьютер, переходим в консольный режим и авторизуемся как пользователь с правами root.
  • Также в интерфейс можно зайти с другого компьютера, используя любой браузер. Для этого просто введите IP-адрес машины, где произведена установка FreePBX.
  • Тут придется еще раз задать логин и пароль. Важно помнить, что в целях безопасности они должны отличаться от пароля пользователя с правами root.

Установка FreePBX завершена. Теперь можно перейти непосредственно к настройке телефонии.

Как попасть в Web-интерфейс FreePBX?

Адрес веб-интерфейса тот же, что и адрес компьютера с установленным FreePBX. Чтобы его узнать, выполните команду ifconfig в консоли компьютера, на котором установлен веб-интерфейс. Так вы увидите настройки всех сетевых интерфейсов машины. Просто введите нужный IP-адрес в строке браузера и нажмите enter.

Описание Web-интерфейса FreePBX

Главная страница включает 3 основных раздела:

  • FreePBX Adminisration – позволяет управлять системой c правами администратора.
  • User Control Panel – настройки пользователя (детализация вызовов, сервисных кодов, доступ к голосовой почте).
  • Get Support – техническая поддержка и обновление FreePBX.
  • Для доступа к первым двум разделам придется ввести логин и пароль, которые вы задали при установке. Есть возможность настройки FreePBX на русском языке. Для этого нажмите кнопку Language справа в верхнем углу окна и выберите нужный язык.

    Краткий обзор имеющихся модулей: управление модулями

    В этом разделе можно управлять модулями FreePBX. То есть предусмотрена возможность установки новых, обновление и удаление имеющихся, а также отключение работающих модулей. Новые доступны в 4 источниках:

    • Basic – фундамент системы. Обновлением и обслуживанием его разработчики озабочены сильнее всего.
    • Extended – модули из этого источника пользуются меньшим приоритетом, чем из предыдущего.
    • Unsupported – разработчики FreePBX не несут ответственности за его работоспособность. Так как модули отсюда разрабатывают сторонние программисты.
    • Commercial – коммерческие модули или поддержка.

    Есть возможность использовать в качестве источника и ваш ПК. Для этого предусмотрена кнопка Uploud modules. А чтобы установить или обновить модуль, следуйте пошаговой инструкции:

    1. Выберите подходящий источник.

    2. Воспользуйтесь функцией Check Online.

    3. После обновления списка доступных модулей напротив каждого из них появится один их следующих комментариев:

    • not installed – не установлен;
    • online upgrade available – можно обновить;
    • enabled and ap to date – модуль включен и обновлен до последней версии.

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

    Внутренние номера

    Этот раздел позволяет создать внутренние номера FreePBX. Сначала выберите технологию для подключения. Оптимальный вариант – использовать протокол SIP. Для новичков при создании внутреннего номера достаточно задать 3 настройки:

    • User Extension – сам номер. Запрещается указывать следующие: 600-699 (зарезервирован для групп вызовов) и 70-79 (зарезервирован для парковки вызовов).
    • Display Name – имя, под которым номер отображается в списке номеров. Это имя на экране телефона увидит абонент, принимающий звонок.
    • Secret – пароль FreePBX для внутреннего номера (будет сгенерирован автоматически).

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

    Группы вызова

    Функция позволяет объединить внутренние номера в группу. Набрав единственный номер, можно одновременно позвонить хоть на все внутренние номера из этой группы. Это очень удобно, когда нужно постоянно связываться сразу с несколькими абонентами. По умолчанию используется номер 600-699. Это функция работает по следующему принципу:

  • Вы добавляете в группу определенное количество внутренних номеров.
  • После этого совершаете звонок на номер 6ХХ.
  • Звонок проходит на внутренние номера в этой группе по схеме, которую вы выбрали.
  • Доступно несколько схем распределения вызовов:

    • ringall – звонок идет одновременно на все номера группы;
    • hunt – звонок распределяется в случайном порядке по доступным номерам;
    • memoryhunt – звонок идет последовательно на первый номер, потом на первый и второй и так далее;
    • firstunavailable – звонок идет по первому доступному номеру;
    • firstnotonphone – звонок идет по первому номеру, у которого не снята трубка;
    • *-prim – звонок помечается как не отвеченный, если первый номер занят.

    Продвинутые пользователи могут вволю поиграться с настройками – тут их 18 штук. Напротив каждой опции есть знак вопроса, нажатие на который расскажет, за что отвечает та или иная функция.

    Транки

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

  • Trunk name – наименование транка.
  • Outbound CallerID – CallerID для исходящих звонков.
  • CID Options – CallerID для входящих звонков.
  • Maximum Channels – установление максимального количества каналов связи.
  • Asterisk Trunk Dial Options – дополнительные настройки вызова.
  • Continue if Busy – возможность позвонить через другой транк в случае ошибки.
  • Disable Trunk – отключение транка.
  • Dialed Number Manipulation Rules – правила, по которым формируется номер при исходящем вызове.
  • Outgoing Settings – настройки исходящих вызовов.
  • Incoming Settings – настройки входящих вызовов.
  • PEER Details and USER Details – указание настроек, полученных от провайдера.
  • Registration – задание строки регистрации для входящей связи.
  • Входящая маршрутизация

    Используется для создания маршрутов входящих вызовов. Справа здесь находятся уже созданные маршруты. Настраивают их по аналогии с другими пунктами меню.

    Исходящая маршрутизация

    Используется для создания маршрутов исходящих вызовов. Модуль позволяет задать правила набора номера и его модификацию перед отправкой оператору. Воспользоваться этими маршрутами может каждый пользователь.

    Custom Context

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

    Follow Me

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

    IVR – голосовое меню

    Это система по управлению голосовыми сообщениями. С подобной системой сталкивался каждый, когда для доступа к соответствующему пункту меню приятный голос просил нажать ту или иную цифру. Автоответчик формирует у клиента благоприятное первое впечатление. Это электронный секретарь, который вежливо классифицирует вопрос пользователя и только затем соединяет его с нужным специалистом. Подобная тактика позволяет избавиться от так раздражающих клиентов фраз: «Вы попали не в тот отдел, позвоните по такому-то номеру».

    Очереди

    Опция представляет собой аналог «групп вызовов». Но при этом она дает широкие дополнительные возможности.

    Пошаговая инструкция по настройке интерфейса FreePBX

    Чтобы подробно изучить все модули, придется ознакомиться с официальным руководством по работе с системой. Скачать его можно на официальном сайте Asterisk. Однако ниже приведена простая пошаговая инструкция по настройке FreePBX с нуля, которая позволит использовать базовые опции и приступить к работе:

    • Нажимаем меню Admin, переходим на вкладку System Admin и активируем FreePBX. Активация необходима для того, чтобы получить доступ к платным модулям и поддержке. Если процедура проведена верно, то при повторном переходе на вкладку System Admin вы увидите меню, представленное на фото.
    • Настраиваем сеть так, как показано на изображении. Это не сложно.

    • Переходим на вкладку DNS. На первой строке вводим 127.0.0.1, на нижней – публичный DNS от Google 8.8.8.8, остальные параметры оставляем без изменений.

    • Нажимаем Submit – сохраняем настройки.
    • Переходим на вкладку Time Zone. Выбираем часовой пояс. Нажимаем Submit и сохраняем настройки.
    • На вкладке Storage вводим e-mail, куда будут приходить отчеты о системных ошибках, связанных с жестким диском. Также система предупредит, когда доступное дисковое пространство подойдет к концу.
    • Выбираем пункт меню Settings, вкладка Asterisk SIP Settings и переходим к настройкам этого модуля. На первой вкладке все оставляем по умолчанию, кроме пункта Local Networks. Заполняем его так, как показано на скриншоте. Первое поле – адрес Сети, второе – маска.

    • После этого нажимаем Submit, ждем обновления настроек и нажимает кнопку Apply Config в правом верхнем углу. Далее таким же образом будет необходимо подтверждать все действия.
    • Следующий этап – создание и настройка внутреннего номера. Для этого выбираем меню Applications и переходим к модулю Extension. Когда модуль прогрузится, нажимает Quick Create Extension и заполняем поля, следуя пошаговой инструкции на экране. Вы можете видеть на фото первый шаг.

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

    • После того как номер создан, переходим к настройке. Для этого нажмите значок с карандашом. Проверяем правильность всех настроек.
    • Регистрируем софтфон. Для этого скачиваем и устанавливаем на компьютер нужное приложение. Мы рассмотрим процесс на примере бесплатного софтфона MicroSIP. Запускаем программу и вводим необходимые параметры, как показано на фото.

    • Нажимаем кнопку «Сохранить». Если все сделано верно, статус в софтфоне должен измениться на онлайн.
    • Теперь переходим к настройке SIP транка – номера, с которого можно звонить на внешние телефоны. Для этого переходим в меню Connectivity и выбираем пункт Trunks.
    • Чтобы создать новый транк, нажимаем Add Trunk. Выбираем SIP Trunk и вводим настройки, которые можно получить у провайдера.
    • В поле Peer Details на вкладке SIP Settings вводим данные, как на скриншоте.

    • Переходим на вкладку Incoming. Здесь в поле Register String вводим нужные данные, как указано на изображении.

    • Нажимаем Submit и применяем настройки.
    • Настраиваем исходящую маршрутизацию. Для этого переходим в меню Connectivity и выбираем пункт Outbound Routes. Далее нажимаем кнопку Add Outbound Routes и вводим нужные данные.


    • Теперь записываем звуковой файл с приветствием от имени вашей компании. Его будут слышать абоненты, которые позвонят вам. Для записи можно использовать стандартные средства Windows.
    • Далее переходим в меню Admin и выбираем пункт System Recordings. Вводим нужные настройки и загружаем звуковой файл с приветствием.
    • Теперь создаем голосовое меню. Для этого переходим в меню Applications и выбираем пункт IVR. Нажимаем кнопку Add IVR и заполняем нужные данные.
    • Сохраняем и применяем изменения.
    • Создаем входящий маршрут. Для этого переходим в меню Connectivity и выбираем пункт Inbound Routes. Далее нажимаем кнопку Add Inbound Routes и заполняем необходимые поля. Остается сохранить и применить изменения.

    Минимальная настройка FreePBX с нуля завершена. Теперь можно совершать исходящие звонки и принимать входящие вызовы. Вами был создан внутренний и зарегистрирован внешний номер. А также настроено приветствие для входящих вызовов.

    Графический интерфейс администратора IP – АТС Asterisk – FreePBX, насчитывает огромное количество опций настройки, вариантов маршрутизации, подключения различного оборудования, начиная от телефонных аппаратов и заканчивая шлюзами. В статье мы опишем базовую настройку тринадцатой версии FreePBX сразу после .

    Пошаговое видео

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

    Чтобы подключиться к графическому интерфейсу FreePBX, нужно ввести IP – адрес Asterisk, который вы указали на этапе установки. Если вы забыли, какой IP – адрес указали, то подключите монитор и клавиатуру к вашему серверу, а затем введите данные для пользователя root, как показано ниже:



    При подключении, вам будет указан IP – адрес вашего сервера. Если версия вашего дистрибутива отличается, и вы не увидели аналогичного вывода, укажите следующую команду:

    # ifconfig

    Вывод команды позволит вам увидеть все доступные интерфейсы и их IP – адреса.

    Активация и пароль администратора

    Подключившись к FreePBX 13 через интернет – браузер вам будет сразу предложено создать учетную запись администратора указав логин, пароль и адрес электронной почты администратора системы. После успешного создания, выберите на главной страницу пункт FreePBX Administration и укажите созданные параметры:



    Сразу после подключение, перейдите во вкладку Admin → System Admin и нажмите кнопку Activation




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


    Настройки SIP

    Модуль SIP Settings это графическая визуализация настроек в файле /etc/asterisk/sip_nat.conf. Здесь, с помощью графического интерфейса можно настроить важнейшие параметры, такие как настройки NAT, внешний IP – адрес и настройки кодеков. Чтобы перейти к настройке нажмите на вкладку Settings , а далее Asterisk Sip Settings .



    Allow Anonymous inbound SIP Calls
    Данная опция позволяет разрешить, или запретить входящие звонки с неизвестных номеров. Мы советуем запрещать данный вид звонков, так как потенциально, разрешенные анонимные звонки могут стать лазейкой для злоумышленников.

    Local Networks
    Введите локальные (находящиеся внутри вашей сети) адреса подсетей, которым Asterisk будет доверять. Например, 192.168.2.0/255.255.255.0

    RTP Ranges
    Укажите диапазон RTP портов. Рекомендуем все оставлять по умолчанию.

    Strict RTP
    Когда между двумя устройствами устанавливается RTP поток, то назначаются адреса источника и назначения. При включенной данной опции, все пакеты приходящие с другого IP – адреса буду отброшены. Мы рекомендуем не выключать данную опцию.

    Codecs
    Галочкой отметьте нужные кодеки.

    Положение кодеков указывает их приоритет. Например, на скриншоте ниже приоритет отдан g.711 u-law, затем g.711 a-law, gsm и так далее. Более подробно про телефонные вы можете прочитать в наших прошлых статях.
    Настройка NAT в FreePBX

    В большинстве случаев, если администратор обнаруживает проблему односторонней слышимости, или то, что звонки обрываются спустя несколько секунд разговора – проблема в NAT. Вот что нужно сделать, чтобы избавиться от этой проблемы: в настройка модуля Asterisk SIP Settings , переходим во вкладку Chan SIP Settings и отмечаем следующее:

    NAT - yes
    IP Configuration - Static IP
    Override External IP - введите ваш внешний IP - адрес

    Reinvite Behavior - No
    Обязательно укажите в настройках Local Networks в предыдущей вкладке вашу локальную подсеть. Помимо этого, пробросьте на вашем маршрутизаторе порт 5060 и диапазон портов из параметра RTP Ranges , по умолчанию равный 10000-20000

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

    Есть три важных пункта данной настройки:

  • Настроить статический IP – адрес для сервера
  • Настроить DNS
  • Настроить временную зону
  • Перейдем к настройке IP. Для этого, перейдите во вкладку Admin → System Admin → Network Settings

    Здесь мы настраиваем следующие опции:

    • Network Interface - сетевой интерфейс, то есть конкретная сетевая карта (NIC)
    • IP Assignment - выберите Static чтобы настроить статический IP - адрес
    • Static IP - введите IP – адрес сервера
    • Netmask - маска сети
    • Gateway - шлюз по умолчанию
    • Start Automatically - старт при загрузке сервера



    Настроим уведомления нашего сервера Asterisk, при таких сбоях, как например малое дисковое пространство или сбой в работе RAID массива:



    Производим настройку следующих опций:

    • From Address - адрес электронной почты, который АТС будет указывать как адрес отправителя при формировании письма
    • Storage Notifications - почта для уведомлений о проблемах с хранением данных (сбой RAID или нехватка места на дисках)
    • Intrusion Detection Notifications IP - почта для уведомлений о вторжениях или попытках взлома сервера

    Конфигурация системы безопасности

    В Asterisk встроена система обнаружения вторжений – Fail2Ban. Для настройки системы перейдите во вкладку Admin → System Admin → Intrusion Detection



    Система гибкая, и, порой реагирует когда не нужно:) Поэтому, советуем заранее вносить в Whitelist перечень нужных IP – адресов, таких как IP SIP – прокси, адреса шлюзов, например FXS. Порой, бывает так, что в бан попадает IP – адрес FXS шлюза, к которому подключены все офисные аналоговые телефоны.

    • Status - мы рекомендуем всегда контролировать состояние Fail2Ban, чтобы статус был running
    • Intrusion Detection - в данном пункте можно остановить и перезапустить службу.
    • Ban Time - время в секундах, которое IP – адрес будет находиться в статусе блокировки
    • Max Retry - количество попыток подключения к АТС, которое пользователь может осуществить в течение Find Time.
    • Find Time - время, в течение которого у пользователя есть Max Retry попыток подключения к системе.
    • E-mail: - адрес электронной почты, на которую будут отправляться уведомления о внесении нового IP – адреса в бан.
    • Whitelist - список заранее внесенных IP – адресов, которым доверяет администратор.

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

    Для настройки телефонных аппаратов и создания внутренних номеров перейдите во вкладку Applications → Extensions . Процесс создания внутренних номеров (Extension) мы описали в статье по ссылке ниже:

    Настройка SIP - транка

    Подключение к провайдеру является важнейшим этапом в настройке вашего сервера IP - АТС Asterisk. Именно настройки провайдера, позволят нашим пользователям совершать исходящие, и принимать входящие вызовы. Для настройки SIP – транка перейдите во вкладку Connectivity → Trunks . Процесс создания SIP - транка подробно расписан в статье по ссылке ниже:

    Настройка маршрутизации

    После того, как мы настроили внутренние номера и SIP – транки для подключения к провайдеру, нам необходимо настроить маршрутизацию вызова. В рамках данной настройки, мы будем учить наш сервер Asterisk как обрабатывать входящий и исходящие вызовы. Connectivity Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

    Что нужно сделать перед установкой Обратитесь к разделу , если Вам необходимо инсталлировать АТС, которая должна справляться с большой нагрузкой, и Вы не уверены потянет ли ее Ваше программное и аппаратное обеспечение.Операционные системы: сервер Asterisk прекрасно работает на Linux системах, также была проделана большая работа участниками проекта по портированию сервера Asterisk на BSD платформу, включая FreeBSD, OpenBSD и Mac OS X. Однако, драйвер zaptel и драйверы ISDN каналов могут не поддерживаться на этих платформах. Обратитесь к разделу Операционные системы для сервера Asterisk, чтобы получить, специфичной для каждой операционной системы, информацию.В качестве альтернативы, Вы можете использовать методы, описанные на нижеприведенных страницах: Asterisk Install CDROM Asterisk Bootable CDROMИнструкция по быстрой установкеПрочтите раздел 10-минутный обзор сервера Asterisk, если Вы хотите узнать, что же может делать сервер Asterisk. В противном случае, этот раздел можно пропустить.Прочтите раздел Пошаговая инструкция по инсталляции Asterisk, где найдете информацию, начиная с настройки линукса, до первого телефонного вызова червез Ваш Asterisk. http://www.automated.it/guidetoasterisk.htm http://asterisk.net.au/ Руководство по инсталляции сервера Asterisk от гуру этого дела Требования к системе Вам не нужно ни какое специфичное оборудование для инсталляции и запуска сервера Asterisk. Необходимости в звуковой карте нет.Вам необходимо установить следующие программные пакеты перед компиляцией Asterisk: Исходники ядра (kernel sources)Заголовочные.h файлы для Вашего ядра (kernel headers)bison (необходим для обработки выражений в файле )Пакеты: openssl и openssl-dev или libssl-devlibnewt: необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у Вас не будет приложения astman, которая является отдельной программой.Вам более не нужно устанавливать пакеты "readline" и "readline-devel" для Asterisk. Сервер поставляется со своей реализацией пакета "readline", который называется "editline".Если Вы планируете использовать дополнения для работы с базой mysql, установите пакеты для mysql, mysql_devel & mysql serverЕсли Вы планируете использовать интерфейсные карты от Digium, то Вам необходимо будет установить модуль ядра для поддержки драйвера устройства Zaptel, перед тем, как Вы сможете использовать их в Asterisk. Однако, может вы хочется сначала скачать и установить Asterisk - протестировать работу SIP и IAX телефонов - и уже после этого добавить поддержку для ваших карт Digium. Инсталляция Посмотрите раздел "Операционные системы на которых работает сервер Asterisk", чтобы получить дополнительные инструкции, которые зависят от используемой операционной системы.Как получить сервер Asterisk Asterisk таймер : нужен для конференции MeetMe и для IAX2 транков.Подготовка утилит сторонних разработчиков Обратите внимание на секцию утилиты сторонних разработчиков на основной странице посвященной , на предмет получения информации о следующих приложениях:
    Музыка ожидания (music-on-hold): использование mpg123voicemail: для него требуется sendmail, для отправки уведомлений по Email.call detail recording: Сервер Asterisk может записывать эту информацию в CSV файлы, в базу данных PostgreSQL или в SQLite. Обратите внимание на пакет дополнений asterisk_addons из SVN .odbc: для хранения и получения данных из других баз данных (отличных от MySQL).кодек speex: требуется установка дополнительных библиотек.Синтезатор речи: FestivalРаспознавание речи: интеграция с приложением Sphinx.

    Настройке Asterisk посвящены сайты, форумы и целые порталы типа voip-info.org. Но всегда есть люди, для которых эта тема – дремучий лес, а запустить продукт надо «вчера». Ещё полтора месяца назад я про Asterisk знал только то что он есть. Данный труд призван лишь несколько облегчить жизнь тем, кто окажется в такой же ситуации после меня. В нём могут быть ошибки любой степени «чайниковости». Если вы гуру настройки Asterisk – укажите на ошибку, я поправлю, потомки будут вам благодарны.

    Сначала было слово

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

    Затем было дело

    В общем, на бумаге всё было красиво и легко. Дело встало только за развёртыванием и настройкой Asterisk.
    Сначала были закуплены два простеньких сервера. Core i7-930, 12GB памяти и по 12ТБ на SATA-дисках. На эти серверы был установлен бесплатный Xen Server и развёрнуты виртуальные серверы и рабочие станции для удалённых сотрудников.
    В качестве внешнего хранилища используется QNAP-овский NAS, который достался в наследство.
    Терабайтные локальные хранилища нужны только для хранения медиа-банка, который довольно велик. Сами серверы все вместе весят меньше 3-х терабайт.
    Одним из серверов стал Asterisk на замену старичку Panasonic TDE-200. Т.к. компании необходима дешёвая связь, прямые номера в разных странах, и бесплатные переговоры между сотрудниками, то альтернативы ему за 12 шекелей в общем-то нет.

    День первый: Make World

    Настраивать Asterisk было решено на родной для Citrix Xen операционной системе CentOS. Тот же , только сбоку. Оговорюсь сразу: я всю жизнь админил Windows, а *nix-ами только “игрался” в виртуалках, не считая пары веб-серверов на железе. Поэтому, данное развёртывание Asterisk в Citrix Xen отдаёт некоторой наивностью с точки зрения умудрённых опытом людей.
    В общем, я пошел по проверенному пути: открывается на ноуте подробная how-to инструкция для чайников из официальных мануалов и выполняется на сервере буквально и безинициативно. Играть в героев-наладчиков можно будет позже, когда всё будет настроено и работать в состоянии “по умолчанию” и будет сделан первый full backup.

    День второй: yum install asterisk -y

    Не то чтобы я был очень удивлён, но, тем не менее, я пошёл к знакомому связисту за советом по настройке Asterisk, когда обнаружил, что живых астерисков аж три практически самостоятельных форка: 1.4, 1,6 и 1.8. У каждого из них свои тараканы и примочки. Т.к. я не обольщался надеждой одолеть астериск с наскоку, то решил поставить версию 1.4, как у друга, дабы иметь максимально возможную совместимость конфигов. Хотя, впоследствии, пришлось подниматься до 1.6 из-за отсутствия поддержки TCP в 1.4, когда возникла такая потребность.
    Для этого к CentOS был прилажен digium-овский репозиторий и Asterisk ставился из него.
    Установка прошла вполне ожидаемо, без сучка и задоринки. В основном, использовался толковый пошаговый roadmap с voip-info .
    Сразу же были поправлены iptables, чтобы разрешить трафик по SIP-портам.
    Не сразу же, но будущим поколениям рекомендую установить и настроить немедленно пакет по имени fail2ban . Совершенно не лишняя программа на сервере, выставленном в интернет. У меня через день после установки весь Тайвань в drop ушел, судя по iptables.

    День третий: ТЗ на функционал АТС

    Начинаем самое интересное – планирование. Перед любым процессом настройки надо записать и структурировать все пожелания заказчика и обязательно подписать соглашение, чтобы избежать в дальнейшем конфликтов вида “нет, я говорил совсем другое”. В моём случае заказчик - это компания, в которой я работаю, но это ничего не меняет. Пишем техническое задание на функционал, обсуждаем его с ответственными людьми, утрясаем разногласия и подписываем финальный вариант и приступаем к настройке Asterisk.
    ТЗ на конфигурацию получилось такое:

    • Нумерация телефонов четырёхзначная.
    • Первая цифра номера - признак страны расположения офиса.
    • Нумерация в каждом отделе начинается с первой цифры очередной сотни.
    • Каждый отдел является отдельной звонковой группой.
    • Если вызываемый абонент любым образом недоступен для вызова, то звонок перекидывается на всю группу.
    • Логика обслуживания входящих вызовов:
    • Поднять трубку.
    • Проиграть приветствие.
    • Проиграть рекламу про текущие акции.
    • Проиграть варианты вызова различных отделов или предложить набрать номер абонента.
    • Начиная с пункта 2 ожидать ввода каких-либо команд.
    • После окончания п.4 ждать ввода команд ещё 10 секунд.
    • В случае отсутствия команд снова проиграть варианты вызова.
    • Если абонент всё-равно тупит, то перекинуть звонок на секретаря.
    • Пользователям, которым необходим такой сервис, прикрутить голосовую почту. В этом случае, если пользователь любым образом недоступен для вызова, перекинуть звонок на голосовую почту.
    • По умолчанию, разрешены вызовы только на Россию и Италию - страны, где в основном работает наша компания. Остальные направления открываются по мере надобности самыми узкими масками, т.к. все мы помним страшные истории про “кубинских телефонистов” и не хотим, чтобы в один прекрасный день у нас АТС внезапно во все свои 50 каналов начала звонить в Сьерра-Леоне по 14 долларов в минуту для каждого канала.

    На первый взгляд задание простое и настройка Asterisk не займет много времени, а на практике на его согласование ушло довольно много крови. Особенно, на согласование запрета всех направлений, кроме явно разрешенных. С этим клиенту пришлось согласиться только перед лицом неизбежной, в противном случае, необходимости конфигурации VPN на каждом подключающемся к АТС устройстве. Просто я стараюсь придерживаться максимально простых и понятных конфигураций, а клиенту всегда кажется, что добавить какой-то функционал к системе - это “всего-лишь пару кнопок нажать”.

    День четвёртый: nano sip.conf

    Начинается самое интересное: процесс настройки Asterisk.
    Чтобы не затягивать и без того длинную статью, отягощая её подробным описанием мук начальной конфигурации и последующего тюнинга, я просто покажу текущие мои конфиги с комментариями что к чему.


    context=default ;контекст по умолчанию
    allowguest=no ;никаких гостей, мы никого не ждём
    allowoverlap=no ;Этот параметр определяет разрешаем мы или нет передачу вызова с дополнительными цифрами. Мы – не разрешаем.
    alwaysauthreject=yes ;Этот параметр означает, что все ошибки для внешнего клиента выглядят одинаково – ошибка авторизации. Призван осложнять взлом АТС.
    useragent=Orgue de Barbaris ;Это – как мы представляемся у других. Я назвался по имени первого патефона, чтобы облегчить техподдержке провайдеров поиск диалогов с моей АТС, т.к. периодически приходится с ними общаться.
    defaultexpiry=360 ;Интервал обязательной перерегистрации клиентов.
    callevents=yes ;Это на будущее, чтобы клиент мог поиграть в управление music on hold
    limitonpeer=yes ;Считаем исходящие и входящие вызовы пиров вместе.
    tcpenable=yes ;Разрешаем TCP протокол для SIP.
    rtptimeout=60 ;Сколько времени клиент может не откликаться, прежде чем будет кикнут из системы.
    language=ru ;Язык системы. Используется для голосового меню.
    bindport=5060 ;Порт по умолчанию. Можно изменить для усложнения вычисления и взлома АТС, но решение спорное.
    bindaddr=0.0.0.0 ;у меня стоят нули, т.к. АТС имеет два интерфейса и на обоих висят клиенты.
    srvlookup=yes
    tos_sip=cs3 ; http://www.voip-info.org/wiki/view/Asterisk+sip+tos
    tos_audio=efdisallow=all ;сначала запрещаем все кодеки
    allow=alaw ;затем, разрешаем только те, что хотим использовать. Порядок значения не имеет.
    allow=g729
    allow=g723
    allow=ulaw

    canreinvite=no ;Этот параметр запрещает клиентам общаться напрямую. Общение происходит только через сервер. У меня это сделано так потому что мобильные клиенты используют платные клиенты с протоколом g.729а, а стационарные сидят на бесплатных клиентах без оного. Поэтому, я предпочёл напрячь сервер транскодингом alawg.729a на лету в пользу качества связи для мобильных клиентов. Тем более что Core i7-930 вообще не замечает этой нагрузки.

    Asterisk, установка которого будет рассмотрена в данном материале, представляет собой программное обеспечение для организации так называемой офисной телефонной станции или IP-АТС (англ. Private Branch eXchange, PBX). Оно объединяет все телефоны в офисе в одну информационную сеть, на базе которой работают разнообразные службы голосовой связи. Asterisk работает на Linux, BSD, OS X и на Windows с использованием эмулятора.

    Asterisk может осуществлять передачу голоса по четырем различным протоколам VoIP и взаимодействовать практически со всеми стандартизованными телефонными аппаратами (включая мобильные) при помощи относительно недорогого оборудования. Asterisk реализует различные возможности голосовой почты (voicemail), включая телефонный справочник, конференц-связь, интерактивный голосовой ответ и очереди вызовов.

    В данном материале мы рассмотрим процесс установки Asterisk на ОС Linux, в частности на популярных дистрибутивах CentOS и Debian, а также базовые процедуры настройки сервера голосовой почты.

    Установка сервера Asterisk из исходников

    Для начала рассмотрим алгоритм инсталляции сервера IP-телефонии, который доступен абсолютно на любом дистрибутиве Linux, а именно сборку и установку программного обеспечения из исходного кода. Данный метод позволяет выполнить установку Asterisk с нуля.

    Перед установкой сервера IP-телефонии в системе должен быть обеспечен ряд условий. Asterisk должен устанавливаться на систему, работающую на ядре версии не ниже 2.6, при этом в системе должны присутствовать файлы заголовков, чтобы программа успешно скомпилировалась. Asterisk написан на языке C, поэтому для сборки в системе должен быть установлен компилятор gcc с сопутствующими библиотеками, такими как termcap и openssl. Для сборки дополнений Asterisk также требуются предустановленные библиотеки и клиент mysql, а также соответствующие им файлы заголовков.

    Когда система подготовлена для установки, вам будет необходимо перейти в раздел Download на официальном сайте и загрузить с него следующие архивы:

  • asterisk.
  • asterisk-sounds.
  • asterisk-addons.
  • zaptel.
  • libpri.
  • Файлы необходимо скопировать на сервер, который будет осуществлять функции офисной АТС. Разместите их в папке /usr/src/.

    После этого запустите на Перейдите в каталог с архивами и распакуйте каждый из них командой:

    tar-xzftar.gz

    Архивы будут распакованы в папки с именами, совпадающими с названиями архивов. Последовательно перейдите в каждую из папок командой:

    cd

    И выполните в каждой папке нижеуказанные команды.

    1. Подготовка к сборке:

    2. Сборка:

    3. Установка:

    Если вышеприведенные команды завершатся с успешным результатом, вы соберете и установите Asterisk на своем сервере.

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

    В связи с этим, рассмотрим процедуры инсталляции Asterisk на двух популярных платформах для создания офисных АТС: CentOS и Debian GNU/Linux.

    Установка Asterisk на CentOS

    В рамках данного примера мы будем устанавливать Asterisk 13. Мы выполним установку Asterisk на CentOS 7.

    Предполагается, что инсталляция будет выполняться в текстовом консольном режиме от имени суперпользователя (root).

    Для начала необходимо установить все необходимые пререквизиты. Убедитесь, что в системе присутствуют все пакеты, указанные ниже. Их достаточно много:

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

    Следующим шагом должно стать отключение SELinux. Система безопасности Security-Enhanced Linux в CentOS включена по умолчанию и очень часто препятствует нормальному функционированию Asterisk. Поэтому для успешной настройки и работы сервера ее необходимо отключить.

    Проверим статус активности системы SELinux следующей командой:

    Если система сообщает, что SELinux включен, выполним процедуру отключения. Для этого необходимо внести изменения в конфигурационный файл в папке /etc/selinux, установив соответствующий флаг.

    sed -i "s/\(^SELINUX=\).*/\SELINUX=DISABLED/" config

    timedatectl set-timezone (например, America/Los_Angeles)

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

    ​timedatectl status

    После этого потребуется перезагрузить систему, чтобы активировать изменения. Для этого используйте команду reboot .

    Теперь непосредственно перейдем к установке Asterisk.

    Фактически, установка Asterisk на CentOS сводится к той же самой сборке из исходников, с которой мы познакомились в предыдущем разделе. Здесь же мы рассмотрим процесс сборки с учетом особенностей конкретного дистрибутива Linux, а именно CentOS 7.

    Для начала загрузим и установим сам сервер IP-телефонии.

    Скачаем из раздела Downloads на официальном сайте продукта архив с Asterisk 13 и сохраним его в папку /usr/src. Распакуем архив командой:

    tar zxvf

    Перейдем в папку с распакованным архивом и выполним команды, приведенные ниже.

    ./configure --libdir=/usr/lib64 --with-pjproject-bundled

    Данная последовательность команд позволит подготовить исходники к сборке.

    make menuselect.makeopts

    После настройки опций компиляции выполните следующую последовательность действий:

    1. Создайте отдельную учетную запись пользователя для сервера IP-телефонии.

    adduser asterisk -s /sbin/nologin -c "Asterisk User"

    2. Соберите и установите сервер.

    make && make install

    3. Задайте права доступа к Asterisk для вновь созданного пользователя.

    chown -R asterisk. /var/lib/asterisk

    В результате базовый сервер Asterisk будет собран и установлен.

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

    FreePBX

    FreePBX - это полнофункциональный графический Web-интерфейс, предназначенный для настройки и управления офисной АТС. Установка Asterisk с FreePBX осуществляется в нижеприведенной последовательности.

    Запустим базу данных:

    systemctl start mariadb

    Скачаем с сайта GitHub в папку /usr/src исходный код FreePBX:

    git clone -b release/13.0 https://github.com/FreePBX/framework.git freepbx

    ./start_asterisk start

    И ряд команд для настройки FreePBX:

    DAHDI

    DAHDI - это драйвер, обеспечивающий взаимодействие Asterisk с различным телефонным оборудованием. Он отвечает за работу плат интерфейсов телефонии, устанавливаемых непосредственно в сервер, на котором работает Asterisk. Процедура установки DAHDI описана ниже.

    Скачайте в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:

    PJSIP

    PJSIP - это библиотека, написанная на С, которая отвечает за поддержку различных протоколов IP-телефонии. С версии Asterisk 13.8 включительно библиотека PJSIP может устанавливаться отдельно. Впрочем, если Asterisk компилируется с флагом --with-pjproject-bundled (что мы и сделали в предыдущем разделе), библиотека PJSIP будет установлена непосредственно при компиляции сервера.

    Для того, чтобы установить PJSIP отдельно, требуется произвести следующую процедуру.

    Скачайте с сайта pjsip.org в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:

    Пост-инсталляционные процедуры

    По завершению установки Asterisk необходимо выполнить ряд дополнительных действий. Данные процедуры являются обязательными.

    1. Установить защиту для сервера базы данных:

    mysql_secure_installation

    Для выполнения процедуры просто ответьте Y на все вопросы.

    2. Изменить настройки веб-сервера:

    3. Открыть доступ к службам и портам, необходимым для работы Asterisk:

    firewall-cmd --permanent --zone=public --add-service={http,https} --add-port=5060-5061/tcp --add-port=5060-5061/udp --add-port=10000-20000/udp

    4. Настроить автозагрузку базы данных:

    systemctl enable mariadb

    5. Настроить загрузку веб-сервера при запуске системы:

    systemctl enable httpd

    6. Настроить автозапуск FreePBX при загрузке системы:

    nano /etc/systemd/system/freepbx.service

    systemctl enable freepbx

    7. Настроить соединение с базой данных через ODBC. Если установлен устаревший модуль cdr_mysql.so, этот пункт опционален, но все же рекомендуется:

    nano /etc/odbc.ini

    Для того, чтобы проверить связь по ODBC, используйте следующую команду:

    isql -v asteriskcdrdb

    8. Перезагрузите систему, чтобы применить сделанные изменения:

    Установка Asterisk 13 на Debian

    В данном разделе мы рассмотрим процедуру установки на другой популярной платформе - Debian. Хорошая новость для пользователей: она относительно проста, несмотря на то, что также включает в себя сборку из исходников. В качестве примера мы выполним установку Asterisk на Debian 8.

    Установка производится от имени суперпользователя (root). Откройте терминал, получите соответствующие права, после чего можно приступить к инсталляции.

    Сначала загрузите Asterisk 13 с официального сайт и распакуйте загруженный архив. Перейдите в папку с распакованными исходниками.

    Теперь установим необходимые зависимости. Самая важная - компилятор gcc - в Debian уже есть. Поэтому просто загрузим оставшиеся:

    После того, как все зависимости загружены и установлены, выполните в папке с распакованным архивом Asterisk следующую команду:

    Команда должна завершиться без ошибок. Если в результате возникнет сообщение об отсутствии некоторых зависимостей, установите их.

    Перед компиляцией Asterisk есть возможность включить или отключить отдельные модули:

    Будет открыто консольное приложение со списком модулей. Перемещаясь клавишами вниз и вверх по списку, вы можете включать и отключать их. Некоторые дополнительные модули требуют установки зависимостей. Это можно сделать при помощи apt-get.

    Теперь приступим к компиляции Asterisk. Введите в консоли уже знакомые команды:

    1. Сборка исходников:

    2. Установка в системные каталоги:

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

    На этом завершается установка. Asterisk успешно проинсталлирован на ваше сервер. Следующая команда вызовет консоль управления Asterisk:

    asterisk -vvvvvvgc

    Настройка Asterisk

    Теперь рассмотрим базовые процедуры настройки сервера телефонии Asterisk. Они принципиально одинаковы для всех дистрибутивов Linux.

    Для начала нужно добавить следующий текст в файл sip.conf:

    Тем самым мы создадим пять учетных записей, которые могут использоваться любым клиентом SIP (Cisco SIP Phone, xlite, ATA и тому подобные). Все пользователи будут зарегистрированы в Asterisk. Если данная конфигурация не работает, попробуйте отключить сетевой экран до завершения настройки программного обеспечения.

    Создание первого номерного плана

    Номерной план (диалплан) предоставляет собой формализованное описание процессов обработки телефонных звонков. Диалплан в деталях указывает системе, что нужно делать с исходящими и входящими звонками. Например, Asterisk может переадресовывать их, отвечать на них при помощи автоответчика и так далее.

    Откройте файл extension.conf в папке /etc/asterisk и добавьте в него строку:

    exten=> _XXXX,1,Dial(SIP/${EXTEN})

    Теперь все сконфигурированные клиенты SIP смогут принимать и отправлять звонки. Благодаря простоте настройки диалплана, Asterisk и является одной из самых дружелюбных платформ IP-телефонии. Не так уж и много навыков требуется, чтобы поднять офисную АТС.

    Создание первого транка SIP

    Asterisk может выполнять исходящие и входящие вызовы. Для исходящих вызовов нам требуется провайдер, который будет перенаправлять вызовы в нашу систему, а также публичный IP-адрес.

    Для этого нужно настроить SIP-транк - канал виртуальной связи между клиентским оборудованием и телефонным оператором. Если в роли оборудования клиента будет выступать наш сервер с Asterisk, настройка транка позволит подключить к нему любое количество городских телефонных номеров по протоколу SIP

    Для создания транка добавьте следующий код в файл sip.conf:

    После этого нужно будет внести в extension.conf еще одну строку:

    exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

    Это позволит установить связь с провайдером для осуществления исходящих вызовов.

    Заключение

    Настройка полноценной офисной АТС на базе Asterisk, установка которого была рассмотрена в данной статье, включает в себя гораздо больше процедур, чем описано выше. Подробная информация о сервере телефонии и его возможности представлена к официальной документации по Asterisk.