Asterisk настройка с нуля

Установка и базовая настройка сервера Asterisk на Ubuntu

Обновлено: Опубликовано:

Тематические термины: Asterisk, Linux, Ubuntu

Инструкция позволит быстро познакомиться с сервером Asterisk, выполнив базовые действия по установке и настройке сервера. Нижеописанные действия протестированы на Ubuntu 16.04 и Asterisk 15.

Подготовка сервера

Актуализируем список пакетов:

Синхронизируем время:

ntpdate ru.pool.ntp.org

Установка

Установку можно выполнить с помощью команды apt install asterisk. Но в данной инструкции мы разберем установку путем сборки из исходников. 

Рекомендуется установить Asterisk с DAHDI (драйверы плат интерфейсов телефонии) и LibPRI (библиотека для работы с потоковыми TDM-интерфейсами). Сначала необходимо собрать DAHDI, затем LibPRI и только потом — Asterisk.

Устанавливаем пакеты, необходимые для корректной сборки DAHDI и LibPRI:

apt install make gcc

Сборка DAHDI

Загружаем исходник:

wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

Распаковываем его и переходим в распакованный каталог:

tar -xvf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*

Собираем пакет и устанавливаем его:

Выходим из каталога dahdi:

Сборка LibPRI

Загружаем исходник:

wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

Распаковываем:

tar -xvf libpri-current.tar.gz

Собираем и устанавливаем:

Выходим из каталога libpri:

Установка Asterisk

Переходим по ссылке https://downloads.asterisk.org/pub/telephony/asterisk и копируем ссылку на последнюю версию asterisk. Используя ссылку, скачиваем исходник:

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15-current.tar.gz

* в моем случае, последняя версия была 15.

Распаковываем архив и переходим в папку, появившуюся после распаковки:

tar -xvf asterisk-*.tar.gz

Устанавливаем зависимости:

./contrib/scripts/install_prereq install

./contrib/scripts/install_prereq install-unpackaged

Удаляем мусор:

Устанавливаем библиотеки для работы с mp3:

./contrib/scripts/get_mp3_source.sh

Конфигурируем исходник:

./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var —libdir=/usr/lib64 —with-dahdi —with-pri —with-iconv —with-libcurl —with-speex

* где:

  • —with-dahdi — с драйверами DAHDI.
  • —with-pri — с библиотекой PRI.
  • —with-iconv — с возможностью конвертации кодировок (будет не лишним для поддержки русских символов).
  • —with-libcurl — возможность извлекать данные посредством CURL-запросов (по http).
  • —with-speex — дополнительный VBR-кодек (используется на многих софт-фонах).

** список всех доступных опций можно посмотреть командой ./configure -h.

Мы должны увидеть логотип астериска:

               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.
 

Вызываем оконное меню настройки модулей:

Для большинства случаев, настройки можно оставить по умолчанию. В противном случае рекомендуется изучить опции и выбрать необходимые. После нажимаем Save & Exit.

Затем собираем исходник:

И выполняем установку:

Установим примеры конфигурационных файлов и документацию:

Устанавливаем скрипт инициализации (для автозапуска):

Устанавливаем скрипты для отсекания логов:

Создаем конфигурационный файл для указания дополнительного пути с библиотеками:

vi /etc/ld.so.conf.d/asterisk.conf

Добавляем в него одну строчку:

* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция —libdir).

Применяем настройку:

Настройка и запуск

Открываем конфигурационный файл:

vi /etc/asterisk/asterisk.conf

И редактируем следующее:

runuser = asterisk
rungroup = asterisk
defaultlanguage = ru
documentation_language = ru_RU

Создаем системную учетную запись asterisk:

Задаем права:

chown -R asterisk:asterisk /var/run/asterisk

chown -R asterisk:asterisk /etc/asterisk

chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk

chown -R asterisk:asterisk /usr/lib64/asterisk

chown -R asterisk:asterisk /var/log/asterisk

Проверяем конфигурацию:

Исправляем ошибки и предупреждения. В моем случае были следующие.

Ошибки запуска

No configured users for ARI. ARI предоставляет API для Asterisk REST Interface. В данном примере, отключаем поддержку:

vi /etc/asterisk/ari.conf

Name or service not known. Если появится такая ошибка, система не может разрешить имя компьютера в IP-адрес. Необходимо правильно настроить DNS или прописать имя компьютера в файл /etc/hosts.

No directory URL or host found. Модуль для работы lpad неправильно настроен или не настроен.
PostgreSQL RealTime: Failed to connect database asterisk on 127.0.0.1. Модуль для работы с СУБД PostgreSQL.
Failed to open /dev/dahdi/transcode: No such file or directory. Ошибку можно увидеть, если нет оборудования DAHDI.

Вышеописанные ошибки возникают из-за включенных, но не используемых модулей. Отключаем:

vi /etc/asterisk/modules.conf

noload => res_config_ldap.so
noload => res_config_pgsql.so
noload => codec_dahdi.so

Предупреждения при запуске

  • Unable to find a valid server address or name.
  • Process_dahdi: Ignoring any changes to …
  • CEL pgsql config file missing global section.
  • Cel_tds module had config problems; declining load.

Отключаем следующие модули: 

noload => res_phoneprov.so
noload => app_dahdiras.so
noload => chan_dahdi.so
noload => res_pjsip_phoneprov_provider.so
noload => cel_pgsql.so
noload => cel_tds.so

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

ls -la /usr/lib64/asterisk/modules/

Разрешаем сервис asterisk и запускаем его:

systemctl enable asterisk

Заведение первых номеров

Для первой настройки достаточно завести 2 номера с возможностью подключения по SIP.

Создаем правило обработки вызова (контекст). Открываем следующий файл:

vi /etc/asterisk/extensions.conf

И добавляем в него следующее:

[outcaling]
exten => _XXXX,1,Dial(SIP/${EXTEN},,m)

* создаем контекст с именем outcaling для четырехзначных номеров (XXXX) с вызовом по SIP по внутреннему номеру.

Открываем следующие конфигурационный файл:

vi /etc/asterisk/sip.conf

И добавляем в него два внутренних номера (extensions):

[1001]
type=friend
regexten=1001
secret=1234
context=outcaling
host=dynamic
callerid="1001" <1001>
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no
 

[1002]
type=friend
regexten=1002
secret=1234
context=outcaling
host=dynamic
callerid="1002" <1002>
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no

* где:

  • [1001], [1002] — имена для обозначения номеров.
  • type — типы проверки номеров.

    Могут быть peer, user или friend. Peer — вызовы сопоставляются с IP-адресами и номерами портов. User — проверка username. Friend — включает возможности peer и user (проверка username и IP-адреса источника) и лучше всего подходит для телефонов и телефонных программ.

  • regexten — добавочный номер. Если не задан, используется имя.
  • secret — пароль для аутентификации.
  • context — контекст или группа правил.
  • host — IP-адрес или имя клиента. Для автоматической регистрации используем dynamic.
  • callerid — идентификатор пользователя при звонке.
  • disallow — запрещает кодеки (задается перед параметром allow).
  • allow — разрешает кодеки. alaw и ulaw — алгоритмы для кодеков g711.
  • language — код используемого языка.
  • callgroup — задает группу устройства (для возможности перехвата).
  • pickupgroup — задает перечень групп, которые можно перехватывать.
  • qualify — включает или отключает периодическую проверку подключенного клиента.
  • canreinvite — включает или отключает прохождение голосового RTP трафика через Asterisk.

    Устанавливать, только если клиент поддерживает функцию SIP re-invites.

  • call-limit — ограничение количества одновременных вызовов.
  • nat — устанавливается в yes, если клиент находиться за NAT.

Перезапускаем asterisk:

systemctl restart asterisk

Проверка

Все, что происходит в Asterisk можно посмотреть в лог-файле командой:

tail -f /var/log/asterisk/messages

Для теста настроенного сервера можно воспользоваться IP-телефоном или софт-фоном на компьютере или телефоне. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу X-Lite, для Android — Zoiper.

Настраиваем первый клиент для подключения с логином и паролем 1001 / 1234, второй — 1002 / 1234. Пробуем позвонить.

# Телефония# Серверы

Была ли полезна вам эта инструкция?

Да            Нет

tma » Вт авг 26, 2008 11:30 pm

edo1 писал(а):

tma писал(а):

anest писал(а):А модуль ztdummy требует поддержки usb…

это уже несколько лет, как устарело — usb оставлен просто как одна из альтернатив.
лень проверять, но мне кажется на ядрах 2.6 usb уже не поддерживается как timing source.

Знаю, поэтому я не просто так написал в самом первом сообщении:

Версия ядра виртуальной машины: 2.4.32 (переход на ветку 2.6.x невозможен по некоторым причинам).

Правда подробностей (откуда он берет таймер) в 2.6 я не знаю — не копал и не читал именно из-за того, что переход на 2.6 пока невозможен.

tma
Специалист
 
Сообщения: 896
Зарегистрирован: Чт мар 24, 2005 12:57 pm
Откуда: TELECOMTECHNOLOGY LIMITED

В этой статье будет описан процесс установки полнофункционального веб-интерфейса управления для IP PBX ASterisk. Для этого вам необходим установленный и настроенный сервер. Если у вас его еще нет, или не можете настроить самостоятельно, воспользуйтесь статьей Сервер телефонии Asterisk. FreePBX есть нескольких версий, будем ставить последний релиз. На момент правки статьи, это версия 12. Берем с официальной страницы проекта. По сравнению с предыдущими версиями, установка несколько сократилась.

Поставим необходимые библиотеки.

sudoapt-getinstall libxml2 libxml2-dev libtiff5 libtiff5-dev lame apache2 mysql-server mysql-client php5 php-pear php-db php5-mysql php5-gd openssl php5-curl libssl-dev linux-source perlbison libncurses5-dev libaudiofile-dev curl sox libcpan-mini-perl

Хотелось бы, чтоб народ маленько включал голову при использовании данной статьи. На момент написания статьи актуальный релиз Ubuntu Server был 12.04, соответственно, копипаст работал. На данный момент, в связи с выходом 14.04 некоторые пакеты в репозиториях поменялись на свежие. К примеру, libtiff4 на libtiff5. Просьба быть внимательными.

Начнем установку. Заходим в каталог freepbx. Для начала, необходимо создать и заполнить базы данных для FreePBX.

mysqladmin -u root -p create asterisk mysqladmin -u root -p create asteriskcdrdb mysql -u root -p-e"GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘asterpass’;" mysql -u root -p-e"GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY ‘asterpass’;" mysql -u root -p-e"flush privileges;"

Пароль рекомендуется указывать свой!

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

sudoapt-getinstall phpmyadmin

Зайдя в phpmyadmin и обнаружив отсутствие нужных привилегий на базы для пользователя asteriskuser, можно отредактировать их и так.

Изменим пользователя, под которым запускается апач.

sudonano/etc/apache2/envvars

Правим переменные APACHE_RUN_USER и APACHE_RUN_GROUP.

export APACHE_RUN_USER=asterisk

export APACHE_RUN_GROUP=asterisk

sudo service apache2 restart

После этого, если апач был запущен от родного пользователя www-data, вы можете получить сообщение об ошибке запуска апача.

… waiting /var/lock/apache2 already exists but is not a directory owned by asterisk.

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

ps aux|grep apache

На выходе должно быть что-то подобное

asterisk 8403 0.0 0.3 37976 4052 ? S 13:12 0:00 /usr/sbin/apache2 -k start

Подправим лимиты в /etc/php5/apache2/php.ini

sudo service apache2 restart

Установка FreePBX сводится всего к одной команде.

sudo ./install_amp —installdb—username=asteriskuser —password=asterpass

Иногда возникает ошибка при установке (замечено на 13.0 версии)

«Reading /etc/asterisk/asterisk.conf…Error! Unable to read /etc/asterisk/asterisk.conf or it was missing a directories section»

Решение: Удаление файла /etc/asterisk/asterisk.conf

Кстати, замечено, что не рекомендуется ставить FreePBX в каталог, отличный от корневого. Иначе потом будет некорректная ссылка на UCP. Несколько неудобно, но не смертельно.

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

sudo amportal chownsudo amportal a ma installall sudo amportal a reload sudo amportal a ma refreshsignatures sudo amportal chown

Осталось сделать последний штрих.

sudoln-s/var/lib/asterisk/moh /var/lib/asterisk/mohmp3 sudo amportal restart

Вот теперь уже можно заходить в панель управления Asterisk. К примеру, если вы установили его в каталог по умолчанию, то заходим в него по ссылке http://ip_address/admin/. Получаем приглашение ввести имя пользователя, пароль и e-mail для админского аккаунта. После заполнения всех полей, жмем кнопку внизу и попадаем на dashboard нашей АТС. Сверху светится оранжевая надпись, советующая нам перезагрузить сервер для применения изменений. Следуем совету. Вроде бы все, но… Идем в меню Settings → Advanced Settings. Исправляем параметры Show Language setting и Use wget For Module Admin, устанавливая их в True. Первый заставляет FreePBX показывать кнопку смены языка, а второй указывает использовать метод wget для скачивания новых модулей, иначе почему-то не качались обновления. Настало время сходить и обновить все модули.

Чтобы начать использовать русский язык в панели управления, вначале нужно в Advanced Settings, в разделе Behavior, установить параметр Show Language setting в True, после чего нажать Apply Settings. После перехода на панель статуса, в строке меню появится кнопка выбора языка. Затем необходимо отредактировать файл /etc/locale.alias. Ищем строку russian ru_RU.-8859-5 и правим ее.

После чего перегенерируем локаль и перезапускаем апач.

sudo locale-gen ru_RU sudo service apache2 restart

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

После всех плясок с бубном в предыдущих разделах, появляется одна «жуткая» ошибка.

.htaccess files are disable on this webserver.

Please enable them

В принципе, ничего страшного, если не выставлять боевой сервер в интернет, но давайте исправим, чтоб устрашающий красный свет в глаза не лез. Открываем /etc/apache2/apache2.conf

sudonano/etc/apache2/apache2.conf

Ищем там строчку /var/www и приводим к указанному виду.

Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all Require all granted

sudo service apache2 restart

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

Для получения обновлений нужно, чтоб в Module Admin были включены основной репозиторий, можно включить и расширенный репозиторий. В первую очередь обновляем модуль FreePBX Localization Updates, хотя это вас не спасет, потому, что локализация выполнена все равно не полностью.

Для полноценной работы с АТС считаю необходимым наличие следующих модулей:

  1. Announcements, для создания приветствий;

  2. Call Forward, переадресация звонков;

  3. Call Waiting, ожидание звонка, или вторая линия для абонента;

  4. Conferences, для создания телефонных конференций;

  5. IVR, для создания голосовых меню;

  6. Ring Groups, для объединения внутренних абонентов в группы;

  7. Time Conditions, для создания правил по времени;

  8. Asterisk Info, для получения дополнительной информации при работе станции;

  9. CDR Reports, для получения информации о звонках;

  10. Asterisk IAX Settings, для расширенных настроек протокола IAX2;

  11. Asterisk SIP Settings, для расширенных настроек протокола SIP;

Из Unsupported репозитория рекомендуется поставить еще модуль Custom Context, для создания контекстов.

Необходимо отметить, что кнопка Apply Config после установки модулей появляется только после перехода в другую часть интерфейса, к примеру на dashboard.

Теперь вы будете иметь на своем сервере полноценную рабочую телефонную станцию. Если нужен функционал FOP, лучше поставить другую операторскую панель. Есть проект MonAst, легкая панель, использующая технологии ajax. В общем, на вкус и цвет каждый сам себе злобный буратино. В общих чертах описание процесса установки и настройки FreePBX окончено. В последней версии этой панели управления значительно переработан функционал панели статуса Asterisk, добавлена работа с WebRTC в UCP. Радует, что разработка этого продукта не стоит на месте, развивается функционал. Некоторые модули приходилось ставить отдельно, например будильник, а теперь они есть уже в репозиториях панели управления. Теперь и мы можем пользоваться современным продуктом хорошего качества. По сравнению с версией 2.8 отмечается значительное увеличения количества модулей различного назначения. Есть и коммерческие модули и бесплатные. Для использования коммерческих модулей необходимо установить Zend Guard от Zend_Technologies, что в рамках данной статьи не рассматривается. Однако, предполагать, что Asterisk вкупе с FreePBX как-то ограничен в функциональности без коммерческих модулей, будет неверно. Эта связка сама по себе достаточно законченный продукт. Есть и недочеты, конечно, куда без них. Пользоваться можно и довольно успешно.

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

Ссылки

Почти все задаются вопросом — с чего начать? Предложим три сценария, любой из которых может оказаться приемлемым:

Скачать и установить

Выбрать и купить

Asterisk из пакетов:

Предполагается, что уже есть компьютер для этой цели, и навыки инсталляции и/или компиляции.

Готовый дистрибутив: Готовый дистрибутив — это обычно ISO файл, который после скачивания лучше записать на CD, и, таким образом, получить загружаемый дистрибутивный диск. Как правило он включает в себя ОС (Mandriva Linux, CentOS), собственно сам Asterisk, набор вэб приложений для удобного администрирования системы, интерфейса пользователя, необходимые сопутствующие сервисы, и многое другое.

В состав многих дистрибутивов входит удобный инструмент управления Астериск, например — FreePBX.

Для он-лайн отображения состояния текущих соединений часто используется Flash Operator Panel (FOP)

Обработка статистики звонков в удобной графической форме. Выбраный день разложен в почасовом графике.

Напряжённый час — 3347 звонков,  разложен поминутно. Длина полоски соответствует длине разговора.

Почти все задаются вопросом — с чего начать? Предложим три сценария, любой из которых может оказаться приемлемым:

Скачать и установить

Выбрать и купить

Asterisk из пакетов:

Предполагается, что уже есть компьютер для этой цели, и навыки инсталляции и/или компиляции.

Готовый дистрибутив: Готовый дистрибутив — это обычно ISO файл, который после скачивания лучше записать на CD, и, таким образом, получить загружаемый дистрибутивный диск. Как правило он включает в себя ОС (Mandriva Linux, CentOS), собственно сам Asterisk, набор вэб приложений для удобного администрирования системы, интерфейса пользователя, необходимые сопутствующие сервисы, и многое другое.

В состав многих дистрибутивов входит удобный инструмент управления Астериск, например — FreePBX.

Для он-лайн отображения состояния текущих соединений часто используется Flash Operator Panel (FOP)

Обработка статистики звонков в удобной графической форме. Выбраный день разложен в почасовом графике.

Напряжённый час — 3347 звонков,  разложен поминутно. Длина полоски соответствует длине разговора.

Рейтинг статьи: 2.283/5 (290 голосов).

В связи с тем, что не все функции VoIP нормально реализованы на CME решии попробовать Asterisk. Остановились на Elstix 2.4, заодно решили запихнуть это все в на виртуальный сервер VMWare.

Спонсор этой страницы:

Где скачать Asterisk Elastix.

Зашел на сайт elastix.org.
Я выбрал версию 2.4 32 bit и через некоторое время стал счастливым обладателем 700 метроаого ISO-шника с коробочной инсталяций.

Подготовка виртульной машины в VMWare

Создал виртуальную машину с 1 гигом оперативки, сетевой картой E1000, Hard Disk тип IDE, CD-Rom и USB контроллером.

p.s. тип адаптера VMXNET определится линуксом только после установки VMWare Tools
Hard Disck SCSI у меня линуксом не определился.

Установка Elastix в VMWare

Далее запустил машину, подключил скаченный ранее образ в меню CD/DVD Drive1 / Connect to ISO image on local disk… и запустил инсталяцию.

Не буду сильно описывать, как бегут строчки,
Выбрал разбиение диска по умолчанию,
Придумал пароль на ROOT, пароль на SQL и паротль на Web.
Ответил на вопрос по настройке сетевой карты, задав ей статический адрес 192.168.1.100 и прочие параметры.

Установка VMWare tools на Elastix

Отключил инсталяционный образ CD/DVD Drive1 / Disconnect from ….

Выбрал пункт меню VM /Guest / Install/Update VMware Tools.

Далее зашел в консоль виртуальной машины, (имя пользователя root, пароль тот, который задал ранее)

создал точку, куда будет смонтирован cdrom

mkdir /mnt/cdrom

попробовал смонтировать

mount /dev/cdrom /mnt/cdrom

после выдачи ошибки, посмотрел на список устройств

ls /dev/cd*

и монтировал из существующих.

mount /dev/cdrw /mnt/cdrom

далее посмотрел, какой у меня пакет VMWare Tools

ls /mnt/cdrom

и распаковал его в tmp

cd /tmp
tar zxf /mnt/cdrom/VMwareTools-8.6.5-

зашел в распакованную папку и выполнил установку

cd vmware-tools-distrib
./vmware-install.pl

после чего размонтировал cdrom и перегрузил виртуальную машину.

umount /dev/cdrw
shutdown -r now

в принципе после монтирования cdrom можно было запустить mc и все выполнить в нем…

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

VoIPAsteriskVMWare

Пожалуйста, оцените и ВЫ эту статью:

Комментариев нет. Снаньте первым!


Добавить комментарий

Закрыть меню