IP-Телефония. Как ее готовить на CentOS7

Всем Добра!

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

На все эти вопросы один ответ ASTERISK – это собственно программа которая превращает обычный компьютер в СЕРВЕР ip-телефонии. Именно с помощью нее мобильные и обычные операторы достовляют нам голоса и картинки наших близких.

И так задача опишем воображаемый офис:

  • Работает 50 сотрудников. Номера будут 4-х значными, от 1000 до 4000.
  • У нас будут 4 отдела – менеджеры, топ-менеджеры,  технический отдел, руководство и все остальные.
  • Номер секретаря 4000, менеджеры 1000-1999, топ-менеджеры 2000-2999, техподдержка 3000-3999, руководство 4001-4999.
  • Мы не будем использовать  ни одного SIP провайдера для звонков, только внутренняя связь.

Все нововееденя бдем производить на CentOS 7. Для быстрой настройки использую скрипт AISS, очень быстро и удобно. И приступаем к установке.

Все это работать будет на Asterisk+FreePBX.

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

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

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

# nano /etc/sysconfig/selinux

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

# setenforce 0

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше  ставим пакеты Development Tools:

# yum groupinstall core base "Development Tools"

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Подключаем репозиторий со свежей версией MariaDB. Для этого создаем файл /etc/yum.repos.d/MariaDB.repo

# nano /etc/yum.repos.d/MariaDB.repo

Cледующего содержания:

# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем MariaDB.

# yum install MariaDB-server MariaDB-client MariaDB-shared

Запускаем mariadb и добавляем в автозагрузку.

# systemctl start mariadb
# systemctl enable mariadb

Для работы панели FreePBX нужен web сервер с php. Я буду использовать версию php 7.4. это минимальная версия для FreePBX 16

Подключаем репозиторий epel, если еще не сделали это ранее.

# yum install epel-release

Добавляем remi репозиторий:

# rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Активируем репу remi-php74, для этого выполняем команду:

# yum-config-manager --enable remi-php74

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

# yum install wget php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-gettext php-bcmath php-zip php-xml php-imap php-json php-process php-snmp
Далее установим httpd. Он, по идее, должен установиться в качестве зависимости на предыдущем шаге, но на всякий случай проверьте.
# yum install httpd

Теперь нам нужно изменить некоторые параметры httpd – запустить его от пользователя asterisk и включить опцию AllowOverride. В файле /etc/httpd/conf/httpd.conf,  с помощью sed.

# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
# sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf

Httpd запускать пока не надо, так как пользователя asterisk мы еще не создали. Сделаем это после установки asterisk.

Изменим параметр php, который отвечает за максимальный размер загружаемого файла. Дефолтное значение слишком низкое для freepbx. Для этого в /etc/php.ini устанавливаем параметр.

# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini

С веб сервером закончили. Продолжаем подготовку к установке FreePBX на CentOS.

Для работы Freepbx требуется сервер NodeJS. Установим его на Centos 7. Подключаем репозиторий NodeJS с помощью скрипта автоматизации от разработчика и произведем его установку.

# curl -sL https://rpm.nodesource.com/setup_14.x | bash -
# yum install -y nodejs

Обновляем кэш yum.

# yum clean all && sudo yum makecache fast

Устанавливаем зависимости для следующих шагов, компитятор языка С++ и сборщик пакетов.

# yum install gcc-c++ make

Установка Asterisk. Скачиваем архив последней версии Asterisk с официального сайта.

# cd ~ && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz

Распаковываем исходники.

# tar zxvf asterisk-*.tar.gz

Переходим в директорию с исходниками.

# cd asterisk*

Выполняем скрипт для установки пакетов с зависимостями для asterisk.

# contrib/scripts/install_prereq install

Запускаем скрипт для скачивания исходников для работы с mp3.

# contrib/scripts/get_mp3_source.sh

Настраиваем конфигурацию:

# ./configure --with-pjproject-bundled --with-jansson-bundled --with-crypto --with-ssl=ssl --with-srtp

Запускаем меню для выбора параметров:

make menuselect

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

# make && make install && make config && make samples && ldconfig

Настроим запуск астериск от системного пользователя asterisk. Для этого редактируем скрипт запуска /usr/sbin/safe_asterisk, установив параметр ASTARGS=”-U asterisk”.

# sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g' /usr/sbin/safe_asterisk

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

# useradd -m asterisk
# chown 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/lib/asterisk

Запускаем Asterisk.

systemctl start asterisk

Проверьте сразу, что он запустился.

# systemctl status asterisk

Консоль выдаст:

● asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/rc.d/init.d/asterisk; bad; vendor preset: disabled)
Active: active (running) since Чт 2022-06-16 09:20:58 MSK; 3s ago
Docs: man:systemd-sysv-generator(8)
Process: 19269 ExecStop=/etc/rc.d/init.d/asterisk stop (code=exited, status=0/SUCCESS)
Process: 19296 ExecStart=/etc/rc.d/init.d/asterisk start (code=exited, status=0/SUCCESS)
Main PID: 19325 (asterisk)
CGroup: /system.slice/asterisk.service
├─19323 /bin/sh /usr/sbin/safe_asterisk
└─19325 /usr/sbin/asterisk -f -U asterisk -vvvg -c

июн 16 09:20:58 tel.sefdar.ru systemd[1]: Starting LSB: Asterisk PBX...
июн 16 09:20:58 tel.sefdar.ru asterisk[19296]: Starting asterisk:
июн 16 09:20:58 tel.sefdar.ru systemd[1]: Can't open PID file /var/run/asterisk/asterisk.pid (yet?) after start: No such file or directory
июн 16 09:20:58 tel.sefdar.ru systemd[1]: asterisk.service: Supervising process 19325 which is not our child. We'll most likely not notice when it exits.
июн 16 09:20:58 tel.sefdar.ru systemd[1]: Started LSB: Asterisk PBX.

Если будет ошибка вроде:

radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory

Тогда нужно отредактировать конфигурационные файлы:

# sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf

После этого перезапустите asterisk, ошибок быть не должно. Скачиваем последнюю версию Freepbx с сайта разработчика. на момент написания статьи v.16

# cd ~ && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz

Распаковываем исходники.

# tar xvfz freepbx-*.tgz

Переходим в каталог freepbx и запускаем скрипт проверки запуска asterisk.

# cd freepbx && ./start_asterisk start

Если не получили ошибок, то запускаем установку непосредственно FreePBX.

# ./install -n

Оставить ответ

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


Срок проверки reCAPTCHA истек. Перезагрузите страницу.