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

Установка Asterisk на Ubuntu Хостинг

Давайте рассмотрим как происходит установка Asterisk на Ubuntu. Последние события об отказе IBM от дальнейшей поддержки Centos подталкивают к выбору другой ОС. Из самых популярных и поддерживаемых это конечно Ubuntu, вот её и возьмем для наших экспериментов. Тестировать буду на самой свежей версии на данный момент Ubuntu 20.04 LTS и Asterisk 18.

Для удобства сразу перейдем в режим root

Установка необходимого ПО

Установим необходимые пакеты для компиляции приложений

apt-get install build-essential git

Далее необходимо установить библиотеку PJSIP

cd /opt/
git clone https://github.com/pjsip/pjproject.git
cd pjproject
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
make dep
make
make install
ldconfig
Открываем порты в брандмауэре

Если у вас активирован брандмауэр необходимо открыть стандартные порты используемые asterisk

ufw allow 5060/udp
ufw allow 5060/tcp
ufw allow 10000:20000/udp
Установка Asterisk
cd /opt
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
tar -xvf asterisk-*.tar.gz
cd asterisk-*/
./contrib/scripts/install_prereq install

По окончанию установки будет сообщение

Установка Asterisk на Ubuntu
install completed

Очистим систему от временных файлов установочного пакета

Добавим возможность использования mp3

./contrib/scripts/get_mp3_source.sh

Конфигурация исходника Asterisk

./configure --libdir=/usr/lib64

После завершения работы команды конфигурации исходника будет изображение как на картинке ниже

Установка Asterisk на Ubuntu
Завершение конфигурации

Приступим к выбору дополнительных параметров Asterisk

В первом пункте меню Add-ons отмечаем * все записи под —Extended—

Установка Asterisk на Ubuntu
Make menu — addons

Переходим в пункт Codec Translators и выбираем все кодеки

Установка Asterisk на Ubuntu
Make menu — Codec Translators

Заходим в Core Sound Packages и выделяем звуковые пакеты с нужным вам языком, в моем случае это русский RU

Установка Asterisk на Ubuntu
Make menu — Core Sound Packages

И последним пунктом заходим в меню Music On Hold File Packages и отмечаем все пункты

Установка Asterisk на Ubuntu
Make menu — Music On Hold File Packages

Нажимаем кнопку Save & Exit

Перейдем к компиляции Asterisk из исходников

По окончанию отработки команды будет сообщение об успешном завершении

Установка Asterisk на Ubuntu
Asterisk Build Complete

Понять что все закончилось хорошо можно по сообщению

Установка Asterisk на Ubuntu
Asterisk Installation Complete

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

Выполним make config

Создаем файл конфигурации

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

Добавляем в него путь к библиотекам Asterisk

Необходимо сохранить файл и выполнить команду

Включим ротацию логов Asterisk

Создаём пользователя asterisk

Для работы Asterisk необходимо создать пользователя и дать ему права

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk

Поменяем владельца папок asterisk на вновь созданного пользователя

chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/lib/asterisk
chown -R asterisk.asterisk /var/log/asterisk
chown -R asterisk.asterisk /var/spool/asterisk
chown -R asterisk.asterisk /usr/lib64/asterisk
Запуск сервиса от пользователя asterisk

Укажем сервису asterisk от какого пользователя запускаться. Откроем на редактирование файл asterisk.conf

nano /etc/asterisk/asterisk.conf

Найдем следующие строки и раскомментируем их

runuser = asterisk
rungroup = asterisk
Установка Asterisk на Ubuntu
runuser-asterisk

Сохраним файл и запустим asterisk

Проверить что сервис запустился можно узнав его статус

systemctl status asterisk
Установка Asterisk на Ubuntu
Asterisk status

Выделенный зеленым цветом статус active говорит о том что сервис запущен.

Добавим сервис asterisk в автозагрузку

systemctl enable asterisk
Проверка работы

Запустим консоль asterisk и удостоверимся что все работает

Установка Asterisk на Ubuntu
pjsip show version

Как видно на картинке выше мы успешно вошли в консоль и выполнили команду pjsip show version сообщающую нам о версии библиотеки PJSIP.

Видео процесса установки asterisk на ubuntu смотрите ниже

https://youtube.com/watch?v=4PoM8cFEikM%3Ffeature%3Doembed

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

Предположим что у нас есть небольшая организация, где работает около 50 сотрудников. Все они используют Asterisk для связи внутри компании и звонков наружу. Все настройки буду проводить на свежей Asterisk 18. В своей предыдущей статье я рассмотрел процесс установки Asterisk 18 на Centos 8. Давайте рассмотрим как происходит настройка Asterisk с нуля.

Учитывая тот факт что библиотека chan_sip не актуальна, будем рассматривать настройку через PJSIP. Старую библиотеку необходимо отключить (если включена) для исключения конфликтов.

Отключение chan_sip

В файле /etc/asterisk/modules.conf необходимо найти и убрать ; перед строкой noload => chan_sip.so

nano /etc/asterisk/modules.conf
Установка Asterisk на Ubuntu
noload chan_sip

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

Структура Asterisk

Настройка Asterisk происходит путем редактирования конфигурационных файлов. Располагаются они в директории /etc/asterisk/ . Перечислю основные файлы которые нам потребуются для начальной настройки.

  • pjsip.conf — файл настройки мультимедийной библиотеки PJSIP. В нем содержатся настройки регистрации, транков, пользователей
  • extensions.conf — в данном файле происходит настройка диалплана. Все параметры обработки вызова, переадресация, мелодии на удержании, настройка автосекретаря и многое другое.
  • asterisk.conf — основной конфигурационный файл, тут указаны пути к используемым папкам, параметры запуска Asterisk и т.д. Подробный разбор параметров данного файла есть тут
  • sip.conf — файл настройки устарелой библиотеки chan_sip. В работе его использовать не будем
  • cdr.conf — основные настройки ведения отчета о звонках Call Detail Record
  • rtp.conf — в данном файле определены настройки касательно протокола RTP (порты, поддержка ICE и т.д.)
  • features.conf — указываются параметры перехвата и парковки вызова, максимальное время набора и переадресации, DTMF коды абонентских функций
  • modules.conf — в данном файле содержится информация о модулях которые необходимо загружать при старте Asterisk, либо отключить их загрузку.
  • musiconhold.conf — настройка параметров конфигурации музыки на удержании
  • iax.conf — используется для настройки соединений по протоколу IAX. Данный протокол как правило используется для объединения между собой двух и более АТС
  • voicemail.conf — детальная настройка параметров голосовой почты
  • logger.conf — указаны детальные параметры журналирования работы Asterisk

Я перечислил лишь основные конфигурационные файлы Asterisk. Но их значительно больше. В повседневной жизни используется только два файла exntensions.conf и pjsip.conf

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

Для более детального вывода данных в консоль можно использовать ключ -v (я обычно использую -vvvvvv). Чем больше букв v указано, тем детальнее будет вывод информации в консоль. Запуск в режиме повышенной детализации:

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

Подключение пользователей

Добавление новых пользователей происходит в файле pjsip.conf. Конфигурационный файл pjsip.conf состоит из секций. Имена секций указываются в квадратных скобках. Название секций может быть произвольным, кроме имен ENDPOINT и AOR которые должны быть одинаковые с заголовком SIP URI.

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

  • ENDPOINT — описывает опции SIP протокола и взаимодействует с модулями AOR, AUTH и TRANSPORT. Раздел ENDPOINT обязательно должен быть связан с одной или несколькими секциями AOR. В секции ENDPOINT указываются основные параметры SIP подключения (телефон, софтфон, транк и т.п.)
  • AOR — расшифровывается как Address of Record. Данная секция указывает как связаться с ENDPOINT. Без AOR секция ENDPOINT не работает. Тут указывается продолжительность регистрации, соответствие голосовой почте, MWI, настройки переодичности SIP сообщений для мониторинга состояния устройства. Получая запрос на регистрацию от устройства первичная обработка идет в AOR. Происходит поиск соответствия SIP заголовку To
  • TRANSPORT — в данной секции описываются настройки транспортного уровня с использованием протоколов UDP, TCP, WebSockets, а также шифрование TLS/SSL. Одну транспортную секцию можно настроить для использования множеством точек ENDPOINT. Либо, если необходимо, создать уникальный транспортный уровень для конкретной точки
  • System — определяются общие системные настройки PJSIP
  • Global — настраиваются глобальные параметры. Возможность включение дебага, изменение строки User Agent, параметр поля max forwards и т.п.
  • AUTH — данная секция используется для аутентификации и содержит настройки для входящих и исходящих регистраций. С этой секцией ассоциируются ENDPOINT и REGISTRATIONS. В случае необходимости разные ENDPOINT и REGISTRATIONS могут использовать общую секцию AUTH
  • REGISTRATION — обычно используется для регистрации транка от провайдера
  • DOMAIN_ALIAS — используется для указания псевдонимов используемых доменов
  • ACL — секция ACL используется для контроля входящих SIP соединений
  • IDENTIFY — указываются IP адреса конечных точек ENDPOINT
  • CONTACT — можно указать короткий контакт вместо SIP URI

В каждой секции есть опция type содержащая назначение секции в общей конфигурации.

Создание первого пользователя

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

nano /etc/asterisk/pjsip.conf

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

[tr-udp]
type=transport
protocol=udp
bind=0.0.0.0
allow_reload=true
[1000]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=tr-udp
auth=auth1000
aors=1000
[auth1000]
type=auth
auth_type=userpass
password=parol
username=1000
[1000]
type=aor
max_contacts=2

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

  • protocol — тип используемого протокола клиента
  • bind — IP адрес клиента. Можно указать конкретный IP чтобы с других адресов никто не мог использовать данную запись. Если необходимо можно задать и порт.
  • allow_reload — разрешить перенастройки транспортного уровня без перезагрузки Asterisk. По умолчанию без указания данного пункта с параметром true после изменения настроек необходимо рестартовать Asterisk
  • type — тип секции. В данном случае ENDPOINT
  • context — контекст диалплана. Данный параметр указывает куда будут направлены звонки приходящие на данный ENDPOINT
  • disallow — указывает какие кодеки необходимо запретить. В данном случае all — все кодеки
  • allow — кодеки разрешенные для использования. Строкой выше мы запретили все кодеки, текущей строкой разрешили только alaw
  • transport — указывает какую конфигурация использовать для траспорта. В нашем случае tr-udp что мы создали выше.
  • auth — объект аутентификации относящийся к данному ENDPOINT. В нашем случае это auth1000 дальше по файлу будет его описание
  • aors — объек AOR для этого ENDPOINT
  • type — тип используемой секции
  • auth_type — тип используемой аутентификации. У меня используется логин и пароль
  • password — пароль от учетной записи
  • username — логин учетной записи
  • type — тип секции
  • max_contacts — максимальное количество контактов которые могут использоваться с данной AOR
Читайте также:  Скачать veyon master на русском

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

И введем команду повторной загрузки настроек из файла pjsip.conf

Установка Asterisk на Ubuntu
pjsip reload

Теперь запустим SIP телефон и настроем учетную запись 1000 на нём. В работе я использую софтфон MicroSIP. Он мне нравится за свою компактность и возможность работы в portable режиме.

Установка Asterisk на Ubuntu
Добавление пользователя 1000
Установка Asterisk на Ubuntu
Microsip user 1000 OnLine

Как видно на изображении выше мы удачно подключились к АТС. Но что делать если нам необходимо добавить не одного, а 50 пользователей? Если писать такой конфиг по каждому пользователю, потом очень сложно будет что-то найти. Для таких случаев есть шаблоны. Разберемся как они работают.

Создание шаблона
;===============Шаблон отдела маркетинга
[marketing-endpoint](!)
type=endpoint
transport=tr-udp
context=from-internal
disallow=all
allow=alaw
[pass-auth](!)
type=auth
auth_type=userpass
[two-contact-aor](!)
type=aor
max_contacts=2

В шаблоне можно указывать все те же параметры что и при обычном создании пользователя. Я привел пример простого шаблона отдела маркетинга с указанием минимального набора настроек. Однако их может быть значительно больше, например: используемые кодеки, необходимость использования NAT, контекст, разрешенную лиюо запрещенную сеть для регистрации абонентов. В общем параметров может быль сколь угодно много, и писать все их для каждого пользователя дело не благодарное. Рассмотрим далее применение шаблона для создания пользователей.

Применение шаблона

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

;===============Добавочный номер 2000
[2000](marketing-endpoint)
auth=auth2000
aors=2000
[auth2000](pass-auth)
password=2000
username=2000
[2000](two-contact-aor)
;===============Добавочный номер 2001
[2001](marketing-endpoint)
auth=auth2001
aors=2001
[auth2001](pass-auth)
password=2001
username=2001
[2001](two-contact-aor)
;===============Добавочный номер 2002
[2002](marketing-endpoint)
auth=auth2002
aors=2002
[auth2002](pass-auth)
password=2002
username=2002
[2002](two-contact-aor)

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

Команда для вывода пользователей зарегистрированных на сервере

Установка Asterisk на Ubuntu
pjsip show aors
Установка Asterisk на Ubuntu
pjsip show auths
Установка Asterisk на Ubuntu
pjsip show endpoints
Маршрутизация вызовов

Однако, на данном этапе мы пока не можем совершать звонки. При попытке набрать любой номер будет ошибка. Для совершения звонков нам необходимо внести изменения в файл extensions.conf — основной рабочий файл. В нем настраивается маршрутизация вызовов Asterisk. В понимании телефонии и Asterisk не исключение это называется DIALPLAN.

Структура файла extensions.conf

Файл имеет две обязательные секции general и globals. Секции также указываются в квадратных кавычках. После двух обязательных секции идут секции вашего диалплана.

  • static — когда установлено значение no или не указано pbx_config перезапишет данный файл когда extensions будет изменен. Все комментарии в этом файле будут потеряны
  • writeprotect — если параметр static имеет значение yes, а параметр writeprotect=no то можно сохранить настройки диалплана через командную строку Asterisk «dialplan save»
  • autofallthrough — в случае когда параметр имеет значение yes и параметры вашего диалплана исчерпали возможности к дальнейшему действию, звонок будет завершен. Это происходит по умолчанию. Если значение будет no или не указано Asterisk будет ожидать действия от пользователя.
  • extenpatternmatchnew — установив параметр в значение true или yes будет использоваться новый алгоритм который будет искать лучшее совпадение паттерна. Увеличение скорости обработки по новому алгоритму повышается с увеличением количества обрабатываемых добавочных номеров. По умолчанию данный параметр отключено. Включайте на свой страх и риск.
  • clearglobalvars — если задан параметр clearglobalvars, глобальные переменные будут очищены и повторно обработаны при перезагрузке диалплана или перезапуска Asterisk. Когда параметр не установлен или имеет значение no глобальные переменные будут сохраняться при перезагрузке и даже при удалении из extensions.conf или одного из включенных в него файлов, будет использоваться предыдущее значение.

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

[globals]
MSK_time=08:00-19:00
MSK_week=mon-sat
RECEPTION=PJSIP/3010

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

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

[from-internal]
exten = 1000,1,Dial(PJSIP/1000)
Процесс вызова

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

Формат записи такой: exten = имя,приоритет,приложение(параметры)

Расширим наш диалплан, добавив дополнительные пункты. И не забудьте, что при изменений файла extensions.conf необходимо чтобы Asterisk перечитал его. Для этого заходим в консоль и вводим команду dialplan reload

[from-internal]
exten = 1000,1,Answer() ; Поднимаем трубку
exten = 1000,2,Playback(demo-congrats)	; Проигрываем приветственное сообщение
exten = 1000,3,Dial(PJSIP/1000)	; Звоним на номер 1000

При звонке на 1000 мы поднимаем трубку, проигрываем приветствие и последним действием будет звонок на добавочный 1000. Можно написать и так:

[from-internal]
exten = 1000,1,Answer()
exten = 1000,n,Playback(demo-congrats)
exten = 1000,n,Dial(PJSIP/1000)

Приоритет можно заменить буквой n но первый приоритет указывать необходимо обязательно. Можно еще немного оптимизировать наш диалплан.

[from-internal]
exten = 1000,1,Answer() same = n,Playback(demo-congrats) same = n,Dial(PJSIP/1000)

Используя same вместо exten можно не писать в каждой строке добавочный 1000. Но как и в случае с n в первой строке указывать exten обязательно.

Системные добавочные номера

  • s — при поступлении вызова в контекст, без указанного добавочного номера используют номер s (от слова start)
  • i — в случае когда абонент набирает не существующий добавочный номер вызов переходит на добавочный номер i
  • t — когда абонент долго не нажимает кнопку после запуска приложения WaitExten() вызов переходит на добавочный номер t. Время ожидания по умолчанию — 10 секунд
  • h — добавочный используемый при завершении вызова, когда уже закрылся медиаканал

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

Шаблоны номеров

Для удобства добавочные номера можно сопоставлять по шаблонам. Все шаблоны в диалплане начинаются со знака нижнего подчеркивания _

  • X — цифра от 0 до 9
  • Z — любая цифра от 1 до 9
  • N — любая цифра от 2 до 9
  • . — любой символ
  • [184-7] – цифры 1,8,4,5,6,7

Шаблон для звонков внутри организации по всем добавочным из 4 цифр будет выглядеть так:

[from-internal]
exten = _XXXX,1,Dial(PJSIP/${EXTEN})
Вложение контекстов

Есть одна особенность, Asterisk сначала сортирует добавочные (exten) и затем ищет первое совпадение. Чтобы при совпадении шаблонов заставить Asterisk звонить по нужному будем использовать вложенные контексты.

[from-internal]
include=long
exten = _XXXX,1,Dial(PJSIP/${EXTEN})
[long]
exten => _X.,1,Dial(PJSIP/${EXTEN}@sipnet)

В контексте from-internal сначала будет обрабатываться шаблон _XXXX затем вложенный контекст include=long

Увидеть в какой последовательности Asterisk обрабатывает диалплан можно введя в консоли команду dialplan show

Установка Asterisk на Ubuntu
dialplan show

Благодаря созданному диалплану все 4-х значные номера будут идти на локальных пользователей. Остальные номера пойдут через внешнего провайдера SIPNET. И чтобы все внешние звонки действительно пошли через SIPNET давайте его настроим в pjsip.conf

Настройка внешнего провайдера

Для проверки входящей и исходящей связи я буду использовать тестовый транк с регистрацией от SIPNET. Я настрою сам транк в файле pjsip.conf и правила маршрутизации звонков в extensions.conf

Открываем файл pjsip.conf

nano /etc/asterisk/pjsip.conf

Добавляем в конец файла регистрацию транка провайдера

[sipnet]
type=registration
transport=tr-udp
outbound_auth=sipnet
server_uri=sip:sipnet.ru
client_uri=sip:0042095477@sipnet.ru
retry_interval=60
[sipnet]
type=auth
auth_type=userpass
password=пароль
username=0042095477
[sipnet]
type=aor
contact=sip:sipnet.ru:5060
[sipnet]
type=endpoint
transport=tr-udp
context=from-sipnet
disallow=all
allow=alaw,ulaw
outbound_auth=sipnet
aors=sipnet
from_user=0042095477
from_domain=sipnet.ru
[sipnet]
type=identify
endpoint=sipnet
match=sipnet.ru

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

После добавления новых данных в файл не забываем зайти в консоль asterisk и перечитать конфиги

Настроим входящую маршрутизацию

Добавляем настройки маршрутизации входящей связи при звонке снаружи на наш номер SIPNET

nano /etc/asterisk/extensions.conf

Вставим следующий текс в конец файла

[from-sipnet]
exten = s,1,Answer() same = n,Wait(5) same = n,Playback(demo-congrats) same = n,Dial(PJSIP/1000&PJSIP/2000)

Я создал контекст from-sipnet указанный ранее при создании ENDPOINT sipnet. При поступлении входящего вызова (s -без доб номера) поднимать трубку, ожидать 5 секунд (Wait) затем проиграть приветственное сообщение. После окончания приветствия звонить одновременно на 2 добавочных 1000 и 2000.

Приветственное сообщение записать самим в формате wav с параметрами 8кГц, 16 Бит, Моно запись скинуть в папку и указать к ней путь, например

Playback(/opt/sound/my_sound)

Можно добавить обработку входящего вызова по времени.

[from-sipnet]
exten = s,1,Answer() same = n,Wait(5) same = n,GotoIfTime(08:00-18:00|mon-fri|*|*?work:outwork) same = n(work),Playback(/opt/work_music) same = n(work),Dial(PJSIP/1000&PJSIP/2000) same = n(outwork),Playback(/opt/outwork_music) same = n,Hangup()

В зависимости от текущего времени и дня недели если вызов совершен во временной промежуток указанный в GotoifTime будет переход на метку work. Все вызовы не попадающие под временной интервал будут отправляться на метку outwork.

На данном этапе мы создали обработку внутренних вызовов, входящих и исходящих внешних (городских) вызовов. В тестовом аккаунте проверить исходящие вызовы можно позвонив по телефону техподдержки 2009991

Считаю настройку для небольшой организации достаточной. Мы разобрали как происходит настройка Asterisk с нуля.

https://youtube.com/watch?v=OIbM-TxDPig%3Ffeature%3Doembed

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

Для начала определимся что такое Asterisk — это бесплатное решение компьютерной телефонии, проще говоря IP АТС. Первая версия ПО была выпущена 23 сентября 2004. Asterisk активно развивается и по сей день. Большое сообщество поклонников не зря выбирают данную АТС. Благодаря не очень сложной настройке, стабильности и большому количеству расширений. Давайте рассмотрим как проходит установка Asterisk 18 на Centos 8.

Настройка системы

Все действия по настройке и установке я произвожу с правами суперпользователя (root). Если у вас возникает ошибка с доступом используйте root или sudo.

Установка времени

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

Читайте также:  Максимизируйте эффективность: форматирование дисков в духе Debian
Установка Asterisk на Ubuntu

В моём случае стоит временная зона America/New_York необходимо заменить ее на Europe/Moscow.

timedatectl set-timezone Europe/Moscow
Установка Asterisk на Ubuntu
Перевод SELINUX в режим Permissive

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

setenforce 0
sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config

Проверить текущий статус SELINUX можно командой

Откроем необходимые порты

Откроем порты в firewalld для подключения клиентов

firewall-cmd --permanent --add-port=5060/{tcp,udp}
firewall-cmd --permanent --add-port=5061/{tcp,udp}
  • 5060 — порт для подключения SIP
  • 5061 — порт для подключения SIP с использованием шифрования TLS

Перечитаем измененный конфиг для применения новых параметров firewalld

Подключение репозитория EPEL
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

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

Установка связанного ПО

Установим набор пакетов Development Tools

dnf groupinstall "Development tools"

Установка пакета jansson

dnf install jansson-devel

Установим пакет libedit

dnf install https://rpmfind.net/linux/fedora/linux/releases/33/Everything/x86_64/os/Packages/l/libedit-3.1-33.20191231cvs.fc33.x86_64.rpm
dnf install https://rpmfind.net/linux/fedora/linux/releases/33/Everything/x86_64/os/Packages/l/libedit-devel-3.1-33.20191231cvs.fc33.x86_64.rpm

Загрузим и установим PJSIP

PJSIP — это новая мультимедийная библиотека для работы с протоколами SIP, RTP, STUN, SDP и т.д. Впоследствии Asterisk откажется от старой библиотеки SIP в пользу PJSIP.

cd /opt/
git clone https://github.com/pjsip/pjproject.git
cd pjproject
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
make dep
make
make install
ldconfig
Установка Asterisk

Скачаем последнюю версию Asterisk с сайта разработчика и распакуем архив

cd /opt
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
tar -xvf asterisk-*.tar.gz
cd asterisk-*/

Запустим установку зависимостей Asterisk

./contrib/scripts/install_prereq install

После успешной установки появится соответствующее сообщение.

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

Очистка временных файлов созданных в процессе установки

Добавляем возможность работы с форматом mp3

./contrib/scripts/get_mp3_source.sh

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

./configure --libdir=/usr/lib64

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

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

Запустим меню выбора дополнительных параметров установки Asterisk

Передвигаемся по меню стрелочками, выбрать или отменить выбор компонента можно клавишей Enter. Разберем какие компоненты помимо стандартных должны быть отмечены.

  • Add-onschan_ooh323, format_mp3, res_config_mysql
  • Codec Translators — отмечаем все кодеки
  • Core Sound Packages — выделяем все звуковые пакеты с русским языком CORE-SOUNDS-RU
  • Music On Hold File Packages — выделяем все пункты в данном меню
Установка Asterisk на Ubuntu
Add-ons
Установка Asterisk на Ubuntu
Codec Translators
Установка Asterisk на Ubuntu
Core Sound Packages
Установка Asterisk на Ubuntu
Music On Hold File Packages

После завершения выбора компонентов нажимаем кнопку Save & Exit

Переходим к установке Asterisk

Результатом успешного выполнения команды make будет текст такого содержания

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

Далее выполним make install

После успешной установки будет сообщение

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

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

Добавим скрипты инициализации в автозагрузку

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

Создание пользователя asterisk

Необходимо создать пользователя под которым Asterisk будет запускаться.

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk

Изменим владельца соответствующих каталогов

chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/lib/asterisk
chown -R asterisk.asterisk /var/log/asterisk
chown -R asterisk.asterisk /var/spool/asterisk
chown -R asterisk.asterisk /usr/lib64/asterisk
Укажем пользователя от которого будет запускаться Asterisk

Редактируем файл /etc/sysconfig/asterisk

nano /etc/sysconfig/asterisk

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

AST_USER="asterisk"
AST_GROUP="asterisk"
Установка Asterisk на Ubuntu
/etc/sysconfig/asterisk

Откроем на редактирование файл /etc/asterisk/asterisk.conf

nano /etc/asterisk/asterisk.conf

Раскомментируем две строки

runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.
Установка Asterisk на Ubuntu
/etc/asterisk/asterisk.conf

Перезагрузим Asterisk для применения внесенных нами изменений

systemctl restart asterisk

Добавим Asterisk в автозагрузку при старте системы

systemctl enable asterisk
Проверяем работу Asterisk

Давайте проверим статус процесса asterisk. Запущен он или нет и есть ли какие-то ошибки

systemctl status asterisk
Установка Asterisk на Ubuntu
systemctl status asterisk

По статусу видно что служба запущена (active). Внизу можно увидеть краткий лог работы программы.

Зайдем в консоль Asterisk и проверим что программа отвечает. Также выполним несколько команд. Зайти в консоль можно командой asterisk -r я обычно использую asterisk -rvvvvvv для полной детализации лога в консоли.

Установка Asterisk на Ubuntu
asterisk -rvvvvvv

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

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

Команда отработала успешно, проверим список всех SIP peers

Эта команда не сработает. В предыдущих версиях Asterisk данная команда сработала бы без вопросов. Дело в том что начиная с 17 версии Asterisk модуль chan_sip отвечающий за работу модуля SIP считается устаревшим и по умолчанию отключен. Попытаемся его загрузить из консоли.

Установка Asterisk на Ubuntu
module load chan_sip.so

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

Установка Asterisk на Ubuntu
sip show peers

Команда отработала успешно. Но, чтобы модуль загружался и после выхода из консоли при старте сервера, необходимо отредактировать файл /etc/asterisk/modules.conf

nano /etc/asterisk/modules.conf

Находим в файле запись noload => chan_sip.so и комментируем её поставив перед ней точку с запятой

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

Я сам постепенно перехожу и всем советую использовать новую библиотеку res_pjsip

В данной статье я рассмотрел как проходит установка Asterisk 18 на Centos 8. В следующей статье планирую рассмотреть процесс первоначальной настройки: подключение пользователей, транков и т.п. Список консольных команд Asterisk также есть на нашем сайте.

Весь процесс установки Asterisk 18 на Centos 8 я записал на видео.

https://youtube.com/watch?v=7XfuR30hs4w%3Ffeature%3Doembed

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

Asterisk — это решение для компьютерной телефонии с открытым исходным кодом, которое поддерживает протоколы VoIP, SIP и PJSIP для операционной системы Linux. Если подключить к компьютеру соответствующее оборудование, то с помощью Asterisk можно создать полноценную станцию ATC. Среди основных возможностей программы можно отметить голосовую почту, конференции, интерактивное голосовое меню и распределение звонков.

В этой статье мы рассмотрим как выполняется установка Asterisk на Ubuntu 20.04. Программу можно установить из официальных репозиториев дистрибутива или же собрать последнюю версию из исходников.

В репозиториях Ubuntu 20.04 на данный момент находится версия 16. Это версия LTS с длительным сроком поддержки. Для установки программы достаточно выполнить команду:

sudo apt install asterisk

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

После завершения установки можно проверить версию программы:

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

Как видите, мы получили версию 16. Это LTS версия, но на данный момент уже доступна версия 17. Чтобы её получить придется собрать программу из исходников.

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

Первым делом вам нужно установить зависимости для работы программы:

sudo apt install gnupg2 software-properties-common git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev

Для распаковки исходников наберите:

tar zxvf asterisk-17-current.tar.gz

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

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

Перед тем как выполнить сборку и установку Asterisk на Ubuntu необходимо установить нужные mp3 модули:

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

Эти команды позволят вам установить некоторые зависимости для проигрывания mp3. Затем установите нужные зависимости для этих модулей:

sudo contrib/scripts/install_prereq install

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

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

Затем надо немного настроить процесс сборки:

Используйте клавиши со стрелками для перемещения по меню. Для выбора какого-либо пункта используйте  Enter. Сначала включите необходимые дополнения на вкладке Add-ons. Например, как на снимке:

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

Затем перейдите в раздел Core Sound Packages и включите там необходимые пакеты, например:

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

Аналогично сделайте в разделе Music on Hold:

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

Когда закончите с настройкой выберите Save & Exit с помощью клавиши Tab:

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

Осталось выполнить сборку программы:

sudo make install

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

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

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

sudo make config

Затем для обновления кэша библиотек выполните такую команду:

Теперь вы можете запустить сервер asterisk и убедится, что все действительно работает:

sudo systemctl start asterisk

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

И смотрим информацию про утилиту через терминал:

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

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

Настройка Asterisk в Ubuntu

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

sudo systemctl stop asterisk

Дальше добавьте группу и пользователя asterisk:

Дальше нам нужно изменить скрипт инициализации так, чтобы программа запускалась от имени нужного пользователя. Откройте файл /etc/default/asterisk и расскоментируйте такие строки:

sudo vi /etc/default/asterisk

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

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

sudo vi /etc/asterisk/asterisk.conf

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

Когда все будет готово запустите ранее остановленную службу или перезагрузите, если не останавливали:

sudo systemctl start asterisk

sudo asterisk -rvvv

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

Если пользователь и группа — asterisk, а значит мы сделали все правильно, настройка Asterisk Ubuntu завершена.

Выводы

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Asterisk – свободный сервер для цифровой телефонии, работающий на базе Linux, FreeBSD, OpenBSD. Использование Asterisk позволяет создать собственную АТС с возможностью гибкой настройки функциональности. Сервер распространяется на условиях двойной лицензии, благодаря которой можно использовать решения как с открытым кодом, так и интегрировать модули с содержанием лицензионного кода.

В этой статье мы рассмотрим как выполняется установка Asterisk Debian 10. В репозиториях Debian как правило, содержится не самая свежая версия Asterisk, так как тысячи людей со всего мира активно развивают проект. Поэтому при установке собственного сервера часто используют компиляцию из исходного кода, что, кроме прочего, позволяет оптимизировать сервер под конкретное окружение Linux или BSD системы, что, в свою очередь, даёт прирост производительности при прочих равных условиях.

Читайте также:  Управление IP-адресами

Шаг 1. Подготовка

Установите необходимые пакеты и выполните обновление ОС Debian 10

sudo apt -y update && sudo apt -y upgrade

sudo apt install -y build-essential linux-headers-`uname -r` openssh-server mariadb-server mariadb-client bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp2-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr debhelper cmake libmariadb-dev odbc-mariadb libodb-mysql-dev

4DSYE+l0AAAAAElFTkSuQmCC

Шаг 2. Загрузка исходников

Создайте в месте хранения исходных кодов /usr/src директорию asterisk, в которую вы в дальнейшем поместите все исходные файлы и перейдите в неё

sudo mkdir /usr/src/asterisk

AQbMLT1ZWmALAAAAAElFTkSuQmCC

Загрузите исходный код Asterisk16 с официального сайта и распакуйте его:

cd /usr/src/asterisk
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
sudo tar xvzf asterisk-16-current.tar.gz
sudo rm asterisk-16-current.tar.gz

Шаг 3. Сборка дополнительных библиотек

Если есть оборудование для прямого подключения к серверу с цифровой АТС платами или каналом Е1, то необходимо установить модуль DAHDI и библиотеку LibPRI. Для установки последовательно введите команды ниже:

sudo tar xvzf libpri-current.tar.gz
sudo rm libpri-current.tar.gz
sudo tar xvzf dahdi-linux-complete-current.tar.gz
sudo rm dahdi-linux-complete-current.tar.gz
cd /usr/src/asterisk/dahdi-linux-com*
sudo make
sudo make install
cd /usr/src/asterisk/libpri*
sudo make
sudo make install
sudo ldconfig

Астериск работает с оригинальной полноценной имплементацией протокола SIP, а также может одновременно для разных каналов использовать PJProject – более современную имплементацию протокола SIP. При этом на этапе подготовки к сборке можно указать ключ —with-pjproject-bundled скрипту для сборки проекта, расположенному по адресу /path/asterisk-source-dir/configure

Шаг 4. Установка PJSIP

Перейдите в каталог сборки проекта:

sudo wget https://github.com/pjsip/pjproject/archive/2.10.tar.gz
sudo tar xvzf 2.10.tar.gz
sudo rm 2.10.tar.gz
cd /usr/src/asterisk/pjproject-*
sudo./configure
sudo make
sudo make dep
sudo make install
sudo ldconfig

wGmPRLupKKEaAAAAABJRU5ErkJggg==

Шаг 5. Подготовка к компиляции Asterisk

Добавьте пользователя asterisk в список Linux пользователей:

84AVxVt5CSzgAAAABJRU5ErkJggg==

Перейдите в каталог с исходным кодом asterisk

QpzYQBnvG8MwyrvqYEU62tiW4qPLrqHBp2G7KJW9mKZss6NLYWjpWyUwrCPlvHmnt7F4TEU62rgxzrSZMwHTURTHbSguQz4JMrmYpgy7VcIwTKejdu0qIsGRFr1JbD6U6VfrICis6mA6nW5TX6jSjllB4x1ImQ16nJzjnKRGa5cWck0V5Roc21VUFHYibxgGFW0pPibVrqVHaKBMPh3rpUaf97RGcAzDwCcG5RmGWnSJZBgGFW2pmELy4WLLgfr+f7dGIlEJhD3NAAAAAElFTkSuQmCC

На момент написания статьи актуальной версией Asterisk 16 является 16.17.9. Сначала необходимо установить оставшиеся зависимости. После выполнения команды:

IErFW2jpvMQAAAABJRU5ErkJggg==

Должен появиться вывод приблизительно такой, как на скриншоте выше. В этой директории содержатся несколько исполняемых файлов asterisk, которые необходимо выполнить

yZ34swbYZHa8CKjximjGduAakWKplwsdb2LThh62D6qgU10Vf0DxLmHNgSZgEUAAAAASUVORK5CYII=

AEik6aWCfoiJkUInAJYwSBiyE30OwKJtcnO0IXIg0YHHHppaKrIk4yH00S73GcNkBsJe7CJLFCZSost8PAXR7OYoy4qCzTFxgfOW2YMpDBwxsP8DQJgCEWpIQMwEKCNNn96huAWJBIIDzpHRPpWR3wcIewohngZQJwMEvvnNUUI0EkgkEARwjoz2AYICCQgPiKcBcC4NkUfiMW+Jiv8Dn1QrNvTmDtMAAAAASUVORK5CYII=

yUO7SGCvqlaAAAAAElFTkSuQmCC

wf4uOh3EWU5WgAAAABJRU5ErkJggg==

В процессе установки зависимостей может потребоваться ввести код страны, для которой устанавливается АТС, временную зону сервера Debian 10. Введите цифры кода без знака «+»

gRRa+DbmTKCt+JXZznZNgt1ys52a82yb1w4C35bqsrYBJ6eEZPc3s50a5xL9H4r0uL2xtsWmAAAAAElFTkSuQmCC

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

8ltHDlOo0Hj2O7A41SjD5oYmGgF7TwAZtaA6FYEQklA56Lsp3R0xEIsgvvAebGll12smwPMLkKY1wLqCgMqfPmNI4tZQRCLoBY4L7b0DEKHEDAPzGsBeP40US9i2zOIRaCvF9Hf3mK7AZAIwDylyOB5AzxQJKAWjdSL6IuFWAR1vwcWz08tsuAiT4CZz4EMuhWBYbHAU6hRPyIspgOxCB58fkIqtLyKCmkATIblUPWBhlpEDCUZqRexTW474f8BYv0aYpZdDUsAAAAASUVORK5CYII=

Шаг 6. Сборка Asterisk из исходного кода

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

/usr/src/asterisk/asterisk-16.17.0/configure --with-pjproject-bundled –with-jansson-bundled

Jansson это ещё один проект, который используется при работе Asterisk. Он позволяет использовать данные JSON, на нем основано много функций гибкого управления АТС и передачи данных во внешние приложения и получения данных из них же.

На следующем этапе создаётся меню, которое позволяет управлять модулями для текущей сборки Asterisk

3Ii0Q6nQ5J4QL8P0fHGJlmS8FYAAAAAElFTkSuQmCC

В этом меню XXX отмечены модули, которые не были найдены в системе.

D1yMF1SW+q1DAAAAAElFTkSuQmCC

Некоторые модули отключены по-умолчанию, но в системе установлены. Если их отметить звёздочкой, то модули будут включены в собираемый проект.

sLgrxFkce4HhzhS3Alkl8iPD3wbex7gk18rfxyVrBnfMDWu4d0sZHGFpODg1vX9ei2KzK5U45Nd11sQM1Jjv+ZztDdrfxwVCrWaP44Nzf8DMimDmGppcB8AAAAASUVORK5CYII=

Особое внимание уделите кодекам, которые будут собраны при сборке проекта. Лучше выделить все доступные, чтобы в дальнейшем не тратить ресурсы сервера на пересборку проекта. После завершения выбора нажмите Save & Exit и последовательно введите команды сборки:

Если после завершения сборки, в директории /lib/systemd/system не появился файл asterisk.service необходимо его туда скопировать командой

sudo cp /usr/src/asterisk/asterisk-16.17.0/contrib/systemd/asterisk.service /lib/systemd/system

Задайте права на исполняемые файлы и создайте необходимые директории

chown asterisk:asterisk /var/run/asterisk

chown -R asterisk:asterisk /etc/asterisk

chown -R asterisk:asterisk /usr/lib/asterisk

Шаг 7. Запуск Asterisk

По завершении включаем автозагрузку Asterisk при запуске ОС Debian 10 и перезапускаем службу сервера

systemctl enable asterisk

systemctl restart asterisk

Шаг 8. Настройка Asterisk

Для подключения к консоли сервера телефонии из терминала наберите команду

vYNmcnWVFlZV7d4VDdEjpjYRtdsveSaLRtF0J7bBuwlICnSss2pIXLExLYoZXPYfL2rDNrrj0JTIltbdWWHvxKSoiFyyru7rr2mMlbrVBjGJh1qtF9oT6Z9x0S1E1tZTR4GdRnlUAF5PZVKBXW+i3L4f+Y5IynUu8rPAAAAAElFTkSuQmCC

Убедиться, что произошло подключение к собранной версии АТС можно с помощью команды консоли Asterisk

core show version

MMlawAAAABJRU5ErkJggg==

rkxEf9KOn0AAAAASUVORK5CYII=

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

При вводе команды make samples при сборке Asterisk создаются типовые файлы настроек, которые возможно редактировать из Терминала или с помощью различных административных панелей управления сервером Asterisk, например такой, как FreePBX. Убедитесь, что исходные настройки были созданы командой

wM541GQaxYaQwAAAABJRU5ErkJggg==

Выводы

Теперь вы знаете как выполняется установка Asterisk 16 на Debian 10. Сборка Asterisk из исходного кода позволяет оптимизировать под выбранное окружение исполняемые файлы сервера. Этот достаточно простой и проработанный процесс позволяет понять каким образом собираются проекты из исходного кода, какие элементы ОС Debian 10 использует собираемый проект.

В дальнейшем на установленный из исходного кода сервер цифровой телефонии Asterisk можно будет развернуть web-интерфейс для оптимизации управлением сервера и добавлением дополнительных функций.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

В данной статье пошагово опишем как выполнить установку Asterisk. Статья предназначена для IT-специалистов, желающих самостоятельно выполнить настройку и установку Asterisk для компании.

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

Если Вас интересует профессиональное внедрение системы IP-телефонии Asterisk «под ключ», то обращайтесь к нашим специалистам по телефону 8 (495) 989-85-33 или 8 (800) 333-75-33. Доверьте свою телефонию профессионалам.

Ручная установка Asterisk

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

Создаем директорию, в которую поместим исходные коды дистрибутива Asterisk.

mkdir -p /usr/src/asterisk
cd /usr/src/asterisk
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.0.0.tar.gz

Аналогичным образом выкачиваем все требуемые пакеты:
1. Asterisk
2. DAHDI
3. LibPRI

Для компиляции исходников потребуется сам компилятор. Устанавливаем его следующей командой (кавычки должны быть те, где на клавиатуре размещена буква «Ё»):

yum -y install make gcc gcc-c++ kernel-headers-`uname -r` kernel-devel-`uname -r` ncurses-devel newt-devel libtiff-devel libxml2-devel sqlite-devel glibc-headers

Распаковываем предварительно скачанные с официального сайта пакеты.

tar -xvf asterisk-current.tar.gz
tar -xvf dahdi-linux-complete-current.tar.gz
tar -xvf libpri-1.4-current.tar.gz

В первую очередь устанавливаем библиотеку LibPRI.

LibPRI — это OpenSource библиотека, предназначенная для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface)и BRI (Basic Rate Interface). Первый (PRI) часто используется в России для работы с операторами по каналам Е1.

cd /usr/src/asterisk/libpri-*
make clean
make
make install

Далее устанавливается драйвера каналов DAHDI.
Драйвера предназначены для взаимодействия Asterisk с платами цифровых интерфейсов: E1, FXO, FXS и пр.

cd /usr/src/asterisk/dahdi-linux-complete*
make all
make install
make config

Далее задаем автоматический запуск службы DAHDI при старте системы:

chkconfig dahdi on
service dahdi start

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

Если на данном этапе у Вас выдалось сообщение следующего характера:

You do not appear to have the sources for the 2.6.32-220.el6.i686 kernel installed.

Это может означать, что не стоят исходные коды для ядра. Вернитесь на этап, где требовалось установить исходные коды ядра.

На этом этапе устанавливаем само телефонное ядро Asterisk.

cd /usr/src/asterisk/asterisk*
. /configure

Если на этом шаге у Вас отобразится такая заставка, значит все идет по плану:

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

На этом этапе можно выбрать модули, которые будут входить в состав сборки. Если требуется работа с MySQL или другими компонентами, их рекомендуется установить заранее.

Система выбора модулей выглядит следующим образом (хотя, она может быть и на черно-белом фоне):

Установка Asterisk на Ubuntu
  • Перемещение — стрелками клавиатуры
  • Выбор — пробелом
  • XXX — модуль не доступен для установки. Необходимо установить недостающие зависимости и повторить все с шага». /configure»
  • F12 — сохраняем и выходим

Далее, оканчиваем установку:

Создаем дефолтные конфиги и образцы.

Добавляем Астериск в автозагрузку

Запускаем Астериск консольно, количеством «v» в опции задавая плотность протоколирования (verbosity). Убеждаемся, что Астериск запускается нормально, после чего останавливаем его.

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

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

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

service asterisk start
asterisk -rvvvv

Работа с DAHDi

После инсталляции карты, проверяем ее в системе

Компилируем нужный пакет для нашей карты, Парабел, например, тут.

комментим все модули, вписываем нужный нам, например, quasarm

Указываем зоновую (региональную) принадлежность.

loadzone=ru
defaultzone=ru

Настраиваем согласование потока между АТС оператора и Asterisk.

span = 1,0,0,CCS,HDB3,CRC4 //Задается источник синхронизации, тип кодирования и необходимость проверки четности
bchan=1-15,17-31 // Задаются тайм-слоты для голоса
dchan=16 //Задаются сигнальные тайм-слоты для данных (0-й — по умолчанию)
echocanceller=mg2,1-15,17-31 // Указывается тип эхоподавителя и тайм-слоты, на которых он будет задействован.

Теперь чуть более подробно по опциям.

Делаем рестарт dahdi

service dahdi stop
service dahdi status

Если не выгрузился, необходимо сначала остановить Asterisk:

dahdi_test
dahdi_test
Opened pseudo dahdi interface, measuring accuracy…
99.999% 99.995% 99.999% 99.999% 99.999% 99.999% 99.999%
--- Results after 7 passes ---
Best: 99.999 — Worst: 99.995 — Average: 99.998506, Difference: 99.998507

Значения не ниже 99,9 — хороший результат. Он означает, что DAHDI-устройство не вынуждено конкурировать с другими процессами за прерывания и время процессора. Значения ниже 99.9 будут приводить к ухудшению качества звука, срыву синхронизации канала E1, скрежету и обрывам голоса.

В случае, если значения ниже 99,9 (да и просто для профилактики), необходимо убедиться, что цифровая карта не делит прерывания с другими драйверами.

cat /proc/interrupts
[pbx.localdomain ~]# cat /proc/interrupts
CPU0 CPU1
0: 1326273128 0 IO-APIC-edge timer
1: 8959 0 IO-APIC-edge i8042
4: 2796129 0 IO-APIC-edge serial
6: 6 0 IO-APIC-edge floppy
7: 2 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc
9: 1 0 IO-APIC-level acpi
14: 50338541 0 IO-APIC-edge ide0
50: 0 0 IO-APIC-level uhci_hcd:usb3
58: 7369 23441503 PCI-MSI ahci
114: 1326250778 0 IO-APIC-level wctdm
146: 28024883 0 PCI-MSI eth0
169: 0 0 IO-APIC-level uhci_hcd:usb5
225: 0 0 IO-APIC-level uhci_hcd:usb4
233: 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2
NMI: 0 0
LOC: 1325416311 1325416314
ERR: 0
MIS: 0

wctdm занимает отдельный irq, это правильно
если с кем-то делит, то это может сказывать на работе карты и качестве голоса.

Чаще всего наблюдается ситуация, когда драйвера USB и DAHDI занимают одно прерывание. Это нежелательная ситуация, и в ней лучше всего либо разнести драйвера по разным прерываниям, либо отключить USB на уровне BIOS.

Тут можно увидеть ошибки в работе карты:

показывать сведения о карте

показывает конфигурационный файл, который используется

затем в /etc/asterisk/chan_dahdi.conf
примерный конфиг:

[trunkgroups]
[channels]
language=ru
context=from-trunk
signalling=pri_cpe
rxwink=300 ; Atlas seems to use long (250ms) winks
;
; Whether or not to do distinctive ring detection on FXO lines
;
;usedistinctiveringdetection=yes
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
echotraining=800
rxgain=0.0
txgain=0.0
group=0
callgroup=1
pickupgroup=1
immediate=no
;busydetect=yes
;busycount=5
faxdetect=no
switchtype=euroisdn ; or qsig
immediate=no
context=from-trunk
resetinterval=100000000
signalling=pri_cpe ; or pri_net
group=0
channel ≥1-15,17-31
dahdi restart
dahdi show channels — проверяем что каналы поднялись
dahdi show channel 1

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