Установка freepbx ubuntu. Установка FreePBX13 Asterisk13 на Centos7.

Установку Asterisk 12 будем проводить на ОС Ubuntu 14.04 "Trusty Tahr" LTS, установленную на Oracle VM VirtualBox.

1) Заходим в терминал Ubuntu и обновим системные пакеты.

sudo apt-get update
sudo apt-get upgrade

2) Перезагрузим систему

sudo reboot

3) Синхронизируем время, для этого установим сервер NTP

sudo apt-get install ntp

4) Установим зависимости, которые будут необходимы для корректной работы Asterisk

sudo apt-get install build-essential linux-headers-` uname -r` openssh-server mysql-server mysql-client libgnutls28 bison flex curl sox libncurses5-dev libssl-dev libmysqld-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool git g++ subversion uuid-dev vim-nox php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd

В процессе установки нужно будет ввести пароль для root пользователя MYSQL

5) Перезагружаем систему

sudo reboot

6) Создадим папку, куда будем скачивать дистрибутивы Asterisk, DAHDI и LibPRI

sudo mkdir -p /usr/src/asterisk-12
cd /usr/src/asterisk-12

7) Скачиваем исходники Asterisk 12.5 (на момент написания инструкции последняя актуальная версия), DAHDI (пакет, ранее называвшийся zaptel, который осуществляет обработку аналоговых и цифровых интерфейсов), libPRI (библиотека, предназначенная для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface))8) Распаковываем скаченные исходники

sudo tar xvfz dahdi-linux-complete-2.10.0+2.10.0. tar .gz
sudo tar xvfz libpri-1.4.15. tar .gz
sudo tar xvfz asterisk-12.5.0. tar .gz

9) Для начала компилируем DAHDI

cd /usr/src/asterisk-12/dahdi-linux-complete-2.10.0+2.10.0
sudo make all
sudo make install
sudo make config
cd /usr/src/asterisk-12/libpri-1.4.15
sudo make
sudo make install

11) Начнем установку Asterisk 12. Необходимые модули устанавливаем командой make menuselect.

cd
./configure

При установке может вылететь ошибка

configure: error: *** JSON support not found (this typically means the libjansson development package is missing)

Для этого делаем следующее

cd /usr/src/
sudo wget http://www.digip.org/jansson/releases/jansson-2.6. tar .gz
sudo tar xvfz jansson-2.6. tar .gz
cd jansson*
sudo ./configure --prefix=/usr/
sudo make clean
sudo make
make install
ldconfig
cd /usr/src/asterisk-12/asterisk-12.5.0
sudo ./configure
sudo make menuselect



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

В разделе Add-ons выбираем модули format_mp3(понадобиться чтобы делать голосовое меню не в gsm формате, а в mp3) и все опции относящиеся к MySQL . Они понадобятся в случае подключения FreePBX .

Не забудьте загрузите модуль meetme .

Во вкладке Core Sound Packages – выберите необходимые форматы звуковых пакетов.



В Music On Hold File Packages включаем все модули.

В Extras Sound Packages включаем первые 4 модуля содержащие EN

После настройки нажмите F12 для сохранения данных и выхода в окно консоли.Далее вводим команду:

sudo make

Во время выполнения функции make у меня вылезла ошибка.



Для её устранения, вводим требуемую команду.

sudo contrib/scripts/get_mp3_source.sh

Запускаем опять команду make

sudo make
sudo make install
sudo make samples
sudo make config

12) Если необходимо обезопасить систему, можем задать пользователя для управления Asterisk. Создаем пользователя, его каталог и пароль. Далее даем ему права для работы с Asterisk.

sudo adduser asterisk
sudo mkdir /home/username
sudo passwd username
sudo chown -R asterisk. /var/run/asterisk
sudo chown -R asterisk. /etc/asterisk
sudo chown -R asterisk. /var/{lib,log,spool}/asterisk
sudo chown -R asterisk. /usr/lib/asterisk

13) Перезагружаем сервер

sudo reboot

14) Заходим под пользователем asterisk

su asterisk

15) Проверяем работоспособность Asterisk. Вводим команду

rasterisk

И попадаем в консоль управления Asterisk.16) Сделаем некоторую настройку для MySQL. Заходим в MySQL.

mysql -uusername -ppassword -hlocalhost

Здесь сокращения:-h host-u user-p passwordПробел после них отсутствуетИли mysql –u username -p16.1) После ввода пароля мы окажемся в консоле mysql. Создадим пользователя asterisk с localhost и паролем "password".

create user "asterisk" @ "localhost" identified by "password" ;

Пользователь создан. Для проверки посмотрим список пользователей:

select user,host,password from mysql.user;

16.2) Создадим базу данных asteriskcdrdb, asterisk.

create database asterisk;
create database asteriskcdrdb;
GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY "password" ;
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY "password" ;
flush privileges;

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

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

В этой статье мы рассмотрим как выполняется установка Asterisk 13 на Ubuntu 16.04. Самой новой версии программы нет в официальных репозиториях, так как используется она рядовыми пользователями на так часто, поэтому нам придется собрать ее из исходников.

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

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

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

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion

cd /usr/src
$ wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

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

tar zxvf asterisk-13-current.tar.gz


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

git clone git://github.com/asterisk/pjproject pjproject
$ cd pjproject
$ ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS="-O2 -DNDEBUG"
$ make dep make && make install
$ ldconfig
$ ldconfig -p|grep pj

Наконец теперь мы готовы выполнить сборку и установку Asterisk на Ubuntu 16.04:

cd .. contrib/scripts/get_mp3_source.sh
$ contrib/scripts/install_prereq install

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

./configure && make menuselect && make && make install

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

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

make config ldconfig

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

service asterisk start

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


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

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

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

groupadd asterisk
$ useradd -d /var/lib/asterisk -g asterisk asterisk

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

sed -i "s/#AST_USER="asterisk"/AST_USER="asterisk"/g" /etc/default/asterisk
$ sed -i "s/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g" /etc/default/asterisk

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

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

Также укажем правильные настройки пользователя для полей runuser и rungroup в файле asterisk.conf:

sed -i "s/;runuser = asterisk/runuser = asterisk/g" /etc/asterisk/asterisk.conf

$ sed -i "s/;rungroup = asterisk/rungroup = asterisk/g" /etc/asterisk/asterisk.conf

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

sudo service asterisk start

Затем проверяем:

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

Выводы

Вот и все. Установка Asterisk 13 на Ubuntu 16.04 завершена. Теперь вы можете перейти к дальнейшей настройке сети для совершения звонков между вашими абонентами прямо через интернет. В качестве клиентского программного обеспечения можно использовать любую программу, поддерживающую нужные протоколы, например Jitsi или Linphone.

В этой статье Вы найдёте полностью работоспособную инструкцию для установки и запуска собственной АТС на базе современного сервера IP телефонии Asterisk 13, а также системы управления им через веб-интерфейс FreePBX 13.

Почему FreePBX?

Многие недолюбливают FreePBX ссылаясь на его дырявость, кривую русификацию и местами непонятный интерфейс. Хочу сразу сказать, что в последней версии продукта исправлены многие ошибки, улучшено визуальное оформление и удобство навигации, даже перевод интерфейса выполнен на значительно новом качественном уровне. Не стоит забывать, что FreePBX позволит поднять сервер телефонии за считанные часы практически любому специалисту в том числе и с начальным уровнем знаний. В конфигурации по умолчанию вы получите широчайшие возможности, этих возможностей из «коробки» хватит для решения задач даже для крупных компаний. Конечно если Вам по каким-либо причинам не хватает возможностей веб-интерфейса, и нужно реализовать какую-то уникальную (не стандартную) фишку, скорее всего Вы обнаружите ряд проблем, связанных с использованием FreePBX, это различные костыли и затрудненность дебага. В таком случае Вам стоит сразу начинать разбираться в чистом Asterisk, не пугайтесь консоли! Вы получите огромное количество знаний, а главное глубокое понимание принципов работы сервера.

Чем отличается данная статья от официального мануала, или множества других статей на просторах интернета:

  • В данной статье Вы найдете описание (кто и зачем) устанавливаемых пакетов и библиотек;
  • Рассмотрены многие аспекты безопасности и защиты Вашего сервера телефонии;
  • Установка FreePBX выполняется в соответствии высокому уровню безопасности;
  • Мои старания сделать материал доступным и интересным даже для новичка;
  • Полностью работоспособная инструкция по установке FreePBX 13.

Если Вас устраивают возможности, предложенные в последней версии FreePBX 13, то давайте приступим к установке и настройке Вашего сервера IP телефонии. Установка связки Asterisk 13 + FreePBX 13 будет происходить на подготовленный и настроенный сервер на базе CentOS Linux 7 . Для удобства восприятия и визуального структурирования статья будет разбита на несколько частей.

Все команды в этой статье выполняются от имени пользователя root!

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

Настройка хостовой машины Подготовка окружения

Выключение SELinux

Sed -i "s/\(^SELINUX=\).*/\SELINUX=disabled/" /etc/sysconfig/selinux sed -i "s/\(^SELINUX=\).*/\SELINUX=disabled/" /etc/selinux/config

Зависимости

Yum install -y kernel-devel kernel-headers yum install -y e2fsprogs-devel keyutils-libs-devel krb5-devel libogg \ libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear \ php php-gd php-mysql php-pdo php-mbstring ncurses-devel \ mysql-connector-odbc unixODBC unixODBC-devel \ audiofile-devel libogg-devel openssl-devel zlib-devel \ perl-DateManip sox git wget net-tools psmisc yum install -y gcc gcc-c++ make gnutls-devel \ libxml2-devel ncurses-devel subversion doxygen \ texinfo curl-devel net-snmp-devel neon-devel \ uuid-devel libuuid-devel sqlite-devel sqlite \ speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel

Выполните полное обновление системы:

Yum -y update

Перезагрузите компьютер:

После перезагрузки проверьте статус SELinux командой «sestatus», Вы должны увидеть следующий вывод:

SELinux status: disabled

Установим и настроим MariaDB

Выполните:

Yum -y install mariadb-server mariadb mariadb-devel

Запустим и включим автозагрузку при старте системы:

Systemctl start mariadb.service systemctl enable mariadb.service

Приступим к конфигурированию MariaDB, в инструкции на официальном сайте предложено не задавать пароль для подключения пользователя root, это связано с выполнением скрипта установки FreePBX командой «./install –n», при этом подключение к базе происходит от имени пользователя root без пароля. Начинающий пользователь может пропустить в процессе настройки несколько очень важных параметров (не будет задан пароль для подключения пользователя root, останется разрешено удаленное подключение для пользователя root), что создаст серьезную уязвимость! Мы отступим от официальной инструкции и выполним установку и настройку с высоким уровнем безопасности.
Запустите интерактивный конфигуратор:

Mysql_secure_installation

Рассмотрим подробно параметры настройки:

Enter current password for root (enter for none) оставляем поле пустым нажимаем Enter Set root password Y New password: Задаем пароль Re-enter new password: Подтверждаем Remove anonymous users Y Disallow root login remotely Y Remove test database and access to it Y Reload privilege tables now? Y All done! If you"ve completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

Компиляция необходимых пакетов и библиотек для Asterisk

PearDB
(библиотека классов PHP с открытым исходным кодом)

Pear uninstall db pear install db-1.7.14

SRTP
(Безопасный протокол передачи данных в реальном времени (или SRTP) определяет профиль RTP (транспортный протокол в реальном времени) и предназначен для шифрования, установления подлинности сообщения, целостности, защиту от замены данных RTP в однонаправленных и multicast передачах медиа и приложениях)

Cd /usr/src && wget http://srtp.sourceforge.net/historical/srtp-1.4.2.tgz tar zxvf srtp-1.4.2.tgz && cd srtp && autoconf && ./configure CFLAGS=-fPIC --prefix=/usr && make && make runtest && make install

Pjproject
(open source библиотека для разработки VoIP приложений на различных платформах)

Cd /usr/src && git clone git://github.com/asterisk/pjproject pjproject cd pjproject/ && ./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared --disable-sound --disable-resample && make dep && make && make install && ldconfig

libjansson
(библиотека на С для кодирования и декодирования JSON данных)

Cd /usr/src && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz tar zvxf jansson-2.5.tar.gz && cd jansson-2.5 && ./configure --prefix=/usr/ && make clean && make && make install && ldconfig

Lame
(свободное приложение для кодирования аудио в формат MP3)

Cd /usr/src && wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz tar zxvf lame-3.98.4.tar.gz && cd lame-3.98.4 && ./configure && make && make install

DAHDI
(DAHDI - драйверы для плат производства Digium)

Cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz tar xvfz dahdi-linux-complete-current.tar.gz && cd dahdi-linux-complete-* && make all && make install && make config

LibPRI
(libpri - библиотека, для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface))

Cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz tar xvfz libpri-1.6.0.tar.gz && cd /usr/src/libpri-1.6.0 && make && make install

SpanDSP
(открытая библиотека и набор программ для реализации функции передачи и приема факсов)

Cd /usr/src && wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz tar zxvf spandsp-0.0.6.tar.gz && cd spandsp-0.0.6 && ./configure && make && make install && ln -s /usr/local/lib/libspandsp.so.2 /usr/lib64/libspandsp.so.2

Установка Asterisk 13

BUG
В некоторых версиях Asterisk может произойти сбой при отсутствии ari.conf
https://issues.asterisk.org/jira/browse/ASTERISK-27026
Выполните в терминале "mkdir -p /etc/asterisk && touch /etc/asterisk/ari.conf" после компиляции Asterisk

Выполните:

Cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz tar xvfz asterisk-13-current.tar.gz && cd asterisk-13.* && contrib/scripts/install_prereq install && ./configure --libdir=/usr/lib64 && contrib/scripts/get_mp3_source.sh make menuselect

После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль "format_mp3". Из личных обращений посетителей было выявлено, что не у всех отрабатывает модуль confbridge (необходим для организации конференций), meetme является его более функциональным аналогом. Рекомендую Вам дополнительно и его включить.

---> Add-ons (See README-addons.txt) --- extended --- XXX chan_mobile [*] chan_ooh323 [*] format_mp3 [*] res_config_mysql --- deprecated --- [*] app_mysql [*] app_saycountpl [*] cdr_mysql ---> Applications --- Extended --- [*] app_meetme ---> Core Sound Packages [*] CORE-SOUNDS-RU-WAV [*] CORE-SOUNDS-RU-ULAW [*] CORE-SOUNDS-RU-ALAW [*] CORE-SOUNDS-RU-GSM [*] CORE-SOUNDS-RU-G729 [*] CORE-SOUNDS-RU-G722 [*] CORE-SOUNDS-RU-SLN16 [*] CORE-SOUNDS-RU-SIREN7 [*] CORE-SOUNDS-RU-SIREN14 ---> Extras Sound Packages [*] EXTRA-SOUNDS-EN-WAV [*] EXTRA-SOUNDS-EN-ULAW [*] EXTRA-SOUNDS-EN-ALAW [*] EXTRA-SOUNDS-EN-GSM Press X to save and exit

Внимание! В некоторых версиях Asterisk может произойти сбой при отсутствии ari.conf

Выполните в терминале:

Mkdir -p /etc/asterisk && touch /etc/asterisk/ari.conf

Выполните установку Asterisk:

Make && make install && make config && ldconfig asterisk off sed -i "s/ASTARGS=""/ASTARGS="-U asterisk"/g" /usr/sbin/safe_asterisk

Подготовка к установке FreePBX

Создайте пользователя Asterisk и задайте права пользователя.

Adduser asterisk -M -c "Asterisk User"

Зададим права на каталоги:

Chown asterisk. /var/run/asterisk && chown -R asterisk. /etc/asterisk && chown -R asterisk. /var/{lib,log,spool}/asterisk && chown -R asterisk. /usr/lib64/asterisk && chown -R asterisk. /var/www/

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

Dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18

Настроим PHP

Cp /etc/php.ini /etc/php.ini_orig && sed -ie "s/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g" /etc/php.ini

Настроим Apache

Sed -i "s/\(^upload_max_filesize = \).*/\120M/" /etc/php.ini && cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig && sed -i "s/^\(User\|Group\).*/\1 asterisk/" /etc/httpd/conf/httpd.conf && sed -i "s/AllowOverride None/AllowOverride All/" /etc/httpd/conf/httpd.conf && systemctl restart httpd && systemctl enable httpd

Подготовка базы данных Asterisk в MaryaDB.

Mysql -u root -p CREATE DATABASE `asterisk` CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `asteriskcdrdb` CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY "PASS"; GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY "PASS"; flush privileges;

* Где PASS сгенерированный сложный пароль.

Установка FreePBX 13

Выполните:

Pear install Console_Getopt cd /usr/src && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz && tar zxvf freepbx-13.0-latest.tgz && cd freepbx

Запустим Asterisk и установим FreePBX.

./start_asterisk start && ./install

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

Fwconsole reload && fwconsole ma refreshsignatures && fwconsole chown ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3 fwconsole restart

Firewalld & IPTables

Firewalld

В Centos7 вместо IPTables используется Firewalld.

Выполните для установки:

Yum -y install firewalld

Запустите:

Systemctl start firewalld

Включите автозагрузку:

Systemctl enable firewalld

Проверим:

Systemctl status firewalld

Посмотрим, что разрешено по умолчанию:

Вывод команды:

Public target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:

На постоянной основе разрешен ssh, а также клиент dhcp v6. Я не использую на сервере ip v6, поэтому уберу соответствующее правило:

Firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

Добавим необходимые правила для работы нашего АТС сервера:

Firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-port=4569/udp firewall-cmd --permanent --zone=public --add-port=5038/tcp firewall-cmd --permanent --zone=public --add-port=5060-5061/tcp firewall-cmd --permanent --zone=public --add-port=5060-5061/udp firewall-cmd --permanent --zone=public --add-port=10000-20000/udp

Перезагрузим правила:

Firewall-cmd --reload

Проверим:

Firewall-cmd --permanent --list-all

Вывод команды:

Public target: default icmp-block-inversion: no interfaces: sources: services: http ssh ports: 5060-5061/udp 4569/udp 10000-20000/udp 5060-5061/tcp 5038/tcp protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:

Все необходимые настройки выполнены.

IPTables

Для использования IPTables на Вашем сервере, выполните следующие шаги.

Выключим Firewalld службу:

Systemctl mask firewalld

Остановим Firewalld Service:

Systemctl stop firewalld

Установим iptables.

Yum -y install iptables-services

Включим IPtables при загрузке системы:

Systemctl enable iptables iptables -P INPUT ACCEPT && iptables -F && service iptables save && iptables -A INPUT -i lo -j ACCEPT && iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT && iptables -A INPUT -p tcp --dport 22 -j ACCEPT && iptables -A INPUT -p tcp --dport 80 -j ACCEPT && iptables -P INPUT DROP && iptables -P FORWARD DROP && iptables -P OUTPUT ACCEPT && iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT && iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT && iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT && iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT && service iptables save

Проверим:

Iptables -L

Вы должны получить следующий вывод:

Iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT udp -- anywhere anywhere udp dpt:sip ACCEPT udp -- anywhere anywhere udp dpt:sip-tls ACCEPT tcp -- anywhere anywhere tcp dpt:sip ACCEPT tcp -- anywhere anywhere tcp dpt:sip-tls ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp ACCEPT udp -- anywhere anywhere udp dpt:iax ACCEPT tcp -- anywhere anywhere tcp dpt:5038 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Быстрый старт

Подключимся к FreePBX

Http://IP-адрес/admin

Первым делом, вам будет предложено задать имя пользователя и пароль FreePBX.

Укажите необходимые данные и нажмите "Create Account":


Войдите в систему. Для этого кликните "FreePBX Administration", ведите логин/пароль и нажмите "Continue":


Обратите внимание на ошибку: "No Conference Room App". У меня установка всегда проходит гладко и данной пролемы я не встречал (скриншотом любезно поделился оди из посетителей сайта). Для решения данной проблемы необходимо сменить приложение для Conference Room с app_confbridge на app_meetme. Возможно данная проблема связана со спецификой используемого "железа".

Перейдите в раздел "Settings" -> "Advanced Settings"


Установите русский язык для интерфеса FreePBX по умолчанию, для этого укажите ru_RU


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


Проверьте правильность параметра "Timezone" для PHP:


Переключите приложение для "Conference Room" на app_meetm, нажмите "Submit"


Нажмите по кнопке "Применить изменения"


Перейдя в "Dashboard" мы видим отсутствие критических проблем, интерфейс на родном языке и кнопку выбора языка:


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

Повышение безопасности сервера

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

SSH (актуально для облаков, VPS/VDS хостинга. SSH порт выставлен в интернет)

• Смена стандартного порта;

• Запрет авторизации root через SSH;

• Авторизация по ключу;

• Запрет авторизации по паролю;

• Разрешение доступа по SSH только определенным пользователям.

Сетевой экран и проброс портов

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

1. Удаленный филиал. Самым правильным решением станет организация IPSec (VPN) туннеля между офисами, создание необходимых правил и маршрутов. В таком случае Вы не подвергните Ваш сервер вторжениям из внешней сети, а связь между офисами будет надежно защищена;

2. Удаленный сотрудник. Единственным верным решением, я считаю, использование VPN. Все остальные варианты являются не надежными и требуют проброса портов из внешней сети (интернет) на Ваш сервер телефонии;

3. Без VPN. По личным, религиозным или другим не известным мне причинам VPN не используется и не будет использоваться. Рассмотрим варианты: «Условия А». Сотрудник имеет статичный IP, все становится немного радужнее. Можно организовать проброс портов только для определенных адресов (клиентов). Данный метод все равно требует дополнительной защиты и не является надежным. Вы просто ограничиваете источник угроз до определенного диапазона (разрешенные IP адреса). «Условия Б». На моей практике «условия А» встречаются редко (почти никогда). Обычно внешние пользователи - это целый «зоопарк» устройств и провайдеров. В данном случае (без использования VPN) придется выставлять сервер телефонии портами наружу (в интернет).

Итак, проброс портов:

1. Определитесь с набором необходимых портов. Например, если Вы не используете протокол IAX/IAX2 (протокол Asterisk), то и прокидывать порт не нужно. Опционально - можно ограничить диапазон портов RTP (по умолчанию 10000-20000) из расчета 4 порта на сессию. Исходите из необходимого минимума.

3. Уделите внимание настройке FreePBX: используйте SSL/TLS для SIP, а также SRTP для шифрования голоса, запретите входящие анонимные SIP звонки, запретите SIP вызовы без аутентификации, измените пароли по умолчанию, используйте сложные пароли на всех уровнях системы;

4. Используйте Fail2Ban для блокировки подозрительных соединений. Например, Fail2ban блокирует соединение по IP адресу при неправильном вводе пароля более 4 раз (все параметры и условия настраиваются без особых проблем).
Рекомендую Вам выполнить данные пункты даже если проброс портов выполнен для определенных клиентов, использующих статичные белые IP адреса (условия А).

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

Платформа телефонии

Asterisk - это самая популярная система телефонии во всем мире. Популярна она благодаря бесконечному количеству функций. Усиливает интерес к этой платформе телефонии её бесплатность.

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

Если Вы читаете эту статью, значит Вы уже знаете самый главный недостаток Asterisk. Я имею в виду тот факт, что Asterisk не рассчитан на работу под Windows. Ну совершенно никак. Asterisk работает только под Linux и ему подобных операционных системах на подобии FreeBSD.

Платформа IT инфраструктуры

Обстановка в подавляющем большинстве компаний нашей с вами родины сложилась следующим образом: Везде Windows. На компьютерах Windows. На серверах Windows. Ноутбуки продаются с предустановленной Windows. Современные недорогие планшеты и те - на Windows. Все полезные и необходимые программы для бизнеса написаны для работы в Windows.

Хорошо это или плохо? Речь сейчас не об этом.

Нужно работать. Выполнять поставленные задачи. Бизнес должен развиваться и зарабатывать деньги. А в крестовый поход против Microsoft мы сегодня не пойдем.

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

Давайте наметим план:

  1. Нам нужна система телефонии Asterisk,
  2. Мы хотим настраивать Asterisk с помощью графического интерфейса с помощью мыши,
  3. Нам нужно раздать пользователям (Директору, секретарю, начальникам отделов) программу для работы со статистикой. В ней должны быть все надписи на Русском языке. И там они должны легко искать звонки по номеру, сотруднику, и строить графики по уровню телефонного обслуживания.

Пункты первый и второй. Устанавливаем Asterisk с графическим интерфейсом настройки на Windows:

Что мы делаем:

  1. Качаем бесплатную программу VirtualBox по этой ссылке ,
  2. Качаем готовый образ Asterisk для VirtualBox по этой ссылке .

После загрузки:

  1. Инсталлируем VirtualBox. Всё время жмем далее;
  1. В окне программы VirtualBox нажимаем «Файл» > «Импорт конфигураций». Указываем путь до образа Asterisk, который Вы только что скачали;
  2. После импорта следует запустить виртуальную машину и приступать к настройке телефонии в офисе.

Результат установки:

Вы получили систему телефонии Asterisk с WEB интерфейсом FreePBX (Elastix). Данный образ Asterisk работает под любой версией Windows.

Логины и пароли для готового образа Elastix:

Web: admin / helloasterisk

SSH: root / helloasterisk

MySQL: root / helloasterisk

Видео по установке:

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

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

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

Я приведу видео обзор одной из бесплатных функций HelloAsterisk:

Что нужно для установки программы:

  1. Зайти на сайт: ссылка
  2. Зарегистрироваться,
  3. Скачать программу на странице загрузки ссылка ,
  4. Следовать инструкциям по установке и настройке программы. Инструкции приведены на официальном сайте HelloAsterisk ссылка .

Резюме:

Выводы, конечно же, делать Вам. Я лишь могу высказать свое мнение.

Лично для себя я в очередной раз отметил, что на сегодняшний день Asterisk живет в тесном соседстве с Windows. Соседство это за 10 лет моих наблюдений не изменилось. Так давайте же получать максимум отдачи от всего ПО, которое нас окружает!

Если у Вас по каким-то причинам не хватает времени разобраться во всем этом хозяйстве, то команда БОЛЬШЕ ЧЕМ АТС всегда готова помочь Вам в этом.

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

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

yum update
reboot

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

mkdir -p /usr/src/asterisk
cd /usr/src/asterisk

Далее загружаем с официального сайта Asterisk текущие пакеты в исходных кодах. Это можно сделать простым способом. В браузере открываем сайт www.asterisk.org, переходим в раздел Download, находим ссылки на требуемые пакеты и правой кнопкой копируем адрес ссылки в буфер обмена. Далее, в консоли сервера используем команду wget и ссылку, ведущую на сайт:

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.0.0.tar.gz

Аналогичным образом выкачиваем все требуемые пакеты:

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

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

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

chkconfig dahdi on
service dahdi start

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

You do not appear to have the sources for the 2.6.32-220.el6.i686 kernel installed.
make: *** Error 1
make: Leaving directory `/usr/src/asterisk/dahdi-linux-complete-2.6.1+2.6.1/linux"
make: *** Error 2

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

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

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

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

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

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


Управление:

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

make
make install

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

make samples
make config

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

Chkconfig asterisk on

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

asterisk -vc
stop now

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


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

service asterisk start
asterisk -rvvvv

2. Работа с DAHDi

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

lspci -v

Компилируем нужный пакет для нашей карты, Парабел, например, тут http://parabel.ru/d/dahdi_2.6.0%2B2.6.0-parabel_2.6.0.tar.bz2

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

в /etc/dahdi/system.conf

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

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 // Указывается тип эхоподавителя и тайм-слоты, на которых он будет задействован.

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

span = ,,,< framing>,[,crc4]
где
span_num - номер порта E1 (от 1 до максимального номера порта в плате)
timing - использовать ли порт как источник синхронизации
0 - порт адаптера ведущий по E1
1 и более - порт ведомый по E1 и является одним из источников
синхронизации адаптера. Чем больше число, тем меньше приоритет порта.
LBO - параметр не используется, ставить 0.
Framing - тип телефонной сигнализации, ставить ccs или cas.
Coding - кодирование в линии, может принимать значения ami или hdb3
Crc4 - разрешить проверку и генерацию crc4 (не обязательный параметр)

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

service dahdi stop
service dahdi status

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

service asterisk stop

service asterisk start

запускаем DAHDI:

Service dahdi start

Проверка:

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
# 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.

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

Dahdi_tool

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

Dahdi_scan

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

Dahdi_cfg -v

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

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

====================
В Астериск CLI

Dahdi restart
dahdi show channels — проверяем что каналы поднялись
dahdi show channel 1

3. Установка Asterisk из YUM

Помимо компиляции Asterisk вручную, можно воспользоваться менеджером пакетов YUM, который является штатной утилитой RedHat-based дистрибутивов.

Установку Asterisk мы будем производить из самых « аутентичных» источников — репозитория Asterisk.Org.

Краткая инструкция по работе с данным репозиторием находится здесь: http://www.asterisk.org/downloads/yum

Вам требуется создать новый файл с названием «centos -asterisk.repo» в директории the» /etc/yum.repos.d». В него вы вносите следующую конфигурацию:


name=CentOS-$releasever — Asterisk — Tested
baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0


name=CentOS-$releasever — Asterisk — Current
baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

Сохраняете данный файл и создаете новый: «centos -digium.repo». Вносите в него следующий текст:


name=CentOS-$releasever — Digium — Tested
baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0


name=CentOS-$releasever — Digium — Current
baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

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

yum install asterisk18 asterisk18-configs asterisk18-voicemail dahdi-linux dahdi-tools

Запускаем Asterisk и подключаемся к нему:

service asterisk start
asterisk -rvvv


4. Астериск — конфигурационные файлы.

Главный конфигурационный файл:

asterisk.conf : Сервер Asterisk берет из этого файла информацию о том, где какие файлы находятся в системе, включая директорию, где лежат все остальные файлы конфигурации. По умолчанию, Asterisk ищет файл asterisk.conf в директории /etc/asterisk, но Вы можете, с помощью параметров запуска Asterisk, задать другое расположение и имя этого файла.

Файлы конфигурации каналов Asterisk:

iax.conf : Файл с конфигурацией канала IAX2
sip.conf : Файл с конфигурацией канала SIP
chan_dahdi.conf : Файл с конфигурацией каналов DAHDi

Файлы конфигурации Диалплана (Плана набора):

extensions.conf : Конфигурация плана набора
extensions.ael : План набора в новом формате AEL (Asterisk Extensions Language)
features.conf : Конфигурация Парковки вызовов, перевода вызова, перехвата и прочих сервисных функций Asterisk.

Файлы конфигурации специфичные для некоторых команд плана набора:

alarmreceiver.conf : Конфигурация для команды AlarmReceiver
dundi.conf : Конфигурация, используемая командой DUNDiLookup
festival.conf : Конфигурация, используемая командой Festival
indications.conf : Определение тонов для команды Playtones
meetme.conf : Файл с конфигурацией конференций для команды MeetMe
musiconhold.conf : для команды MusicOnHold
queues.conf : Определение очередей звонков и их параметров для команды Queue
voicemail.conf : Конфигурация голосовых почтовых ящиков для команды VoiceMail

Конфигурационные файлы не попадающие в какую-либо категорию:

amd.conf : (Появился, начиная с версии 1.4.0) Параметры приложения для определения автоответчиков.
alsa.conf
cdr_odbc.conf
cdr_pgsql.conf
codecs.conf
features.conf : Конфигурация парковки вызовов и других возможностей
followme.conf : (Появился, начиная с версии 1.4.0) Параметры для трансфера вызовов системы findme/followme.
func_odbc.conf : (Появился, начиная с версии 1.4.0) В этом файле определяются параметры доступа к sql базам данных.
http.conf : (Появился, начиная с версии 1.4.0) Конфигурация встроенного мини http сервера в asterisk.
logger.conf : Настройка логирования в Астериск
manager.conf : Конфигурация для Asterisk manager API
modules.conf : Конфигурация загрузки модулей Asterisk
odbc.conf : Конфигурация UnixODBC? драйверов для Asterisk
res_snmp.conf : (Появился, начиная с версии 1.4.0) Включение поддержки snmp в asterisk и определение статусов агентов full/sub.
rtp.conf : Конфигурация протокола передачи media информации RTP, порты и настройки
say.conf : (Появился, начиная с версии 1.4.0) Определения правил произношения цифр, дат и т.д. Для различных языков.
sla.conf : (Появился, начиная с версии 1.4.0) Конфигурация Shared Line Appearance.
smdi.conf : (Появился, начиная с версии 1.4.0) Конфигурация обмена сообщениями SMDI.
udptl.conf : Появился, начиная с версии 1.4.0) конфигурация для транспорта T38 udptl.

Основная фишка во всех файлах конфигурации

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

5. Установка кодека g729 (и g723)

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

cli> core show translation

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

cli>!cd /usr/lib/asterisk/modules/

»!» в CLI означает, что команду нужно выполнить в консоли LINUX
на сайте http://asterisk.hosting.lv/ выбираем версию нашего астериск, платформу (i386 или x86_64) и тип использованного компилятора (IPP или GCC4).

Например, для Сentos 32 бита, на платформе intel, подойдет:

cli>!wget http://asterisk.hosting.lv/bin/codec_g729-ast18-gcc4-glibc-pentium4.so

затем загружаем модуль в астериск

Cli>module load codec_g729-ast18-gcc4-glibc-pentium4.so

проверяем

Cli> core show translation

Если мы ошиблись в выборе нужного кодека, скорее всего астериск « упадет»

Запускаем астериск и видим на каком этапе он вываливается

Asterisk -vvvvvvvvvvvvvvvvvvvc

Удаляем модуль и перезапускаем астериск.

Без удаления можно обойтись так: в файле modules.conf добавить строчку

Noload ≥ codec_g729-ast18-gcc4-glibc-pentium4.so

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

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

6. Подключение SIP клиента.

Теперь необходимо настроить со стороны Asterisk-а SIP-аккаунт для внутреннего абонента.

Структура sip.conf:


;глобальные значения переменных канала SIP
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=default
;……
register ≥ user:pass@host/callerid

Создаем номер для абонента, узказывая для него опции подключения.


deny=0.0.0.0/0.0.0.0 //указание сетей, из которых запрещено подключение
permit=0.0.0.0/0.0.0.0 //указание сетей, из которых разрешено подключение
type=friend //указываем тип абонента.
secret=asdff34tgg //задаем пароль на подключение
qualify=yes // Активируем KeepAlive
port=5060 // Задаем порт, на котором будет работать абонентское устройство (используется, если не работает функция регистрации абонентского устройства)
pickupgroup=1 // Задаем принадлежность к группе перехвата
nat=yes // Указываем, будет ли устройство находиться за NAT-ом по отношению к серверу Asterisk
mailbox=100@device // Указываем номер и контекст ящика голосовой почты
host=dynamic // Задаем IP абонетского устройства или сообщаем с опцией dynamic, что для местоопределения будет использоваться механизм регистрации
dtmfmode=rfc2833 // Тип передачи DTMF-сигналов
disallow=all // Сначала запрещаем все кодеки
allow=ulaw // Тут указываем допустимые кодеки, перечисляя их построчно сверху вниз в порядке приоритета
allow=gy29
dial=SIP/100 // Задаем команду Dial, которая будет использоваться для вызова данного абонента
context=from-internal // Указываем принадлежность абонента определенному контексту.
canreinvite=no // Указываем возможность использования механизма CanReinvite. Не рекомендуется для устройств, которые могут быть отделены от сервера NAT-ом
callgroup=1 // Указываем группу набора
callerid=Alexey <100> // Задаем CallerID — имя и номер, которые будут высвечиваться у других абонентов, а также в CDR.
call-limit=2 // Задаем максимальное количество линий, которые одновременно могут использоваться абонентом. Рекомендуется задавать не более 2-3-х одновременных линий.

Сохраняем и делаем в cli

Sip reload

Проверяем

Sip show peers
100/100 (Unspecified ) D N A 5060 UNKNOWN

Теперь настраиваем софтфон или SIP телефон. Простая и понятная инструкция по настройке софтфона X-Lite для Asterisk . Указываем реквизиты из sip.conf
user
pass
ip-proxy — IP нашего Астериск
Когда телефон подключится, мы должны увидеть

Sip show peers

100/100 192.168.0.10 D N A 5060 OK (111 ms)
1 sip peers

Настройки для конкретного SIP peer

Sip show peer 100

Необходимо создать второй аккаунт для коллеги, чтобы пускать звонки и тестировать корректность настройки Asterisk.
Сделать действия аналогичные, создать второй номер и сообщить реквизиты для SIP клиента коллеге.

7. Полезные команды CLI Asterisk

sip show peers
sip show peer 100
sip show settings
sip reload
sip set debug on
rtp set debug on
core show translation
dahdi show channels
core show application Dial
core show application CALLERID
core reload
dialplan reload
dialplan show context
dialplan show 100@context

8. Простой диалплан. Файл extensions.conf

Файл Extensions.conf описывает логику работы Asterisk, а именно, обработку входящих вызовов, маршрутизацию исходящих вызовов, обработку звонков и событий по разнообразным правилам. В Asterisk это называется ДиалПланом (DialPlan ). Как говорят разработчики, диалплан — это сердце Asterisk.

За работу диалплана отвечает файл extensions.conf. Файл поделен на контексты, в каждом из которых прописана логика работы. Логика работы формируется с помощью приложений. Приложения — это функции Asterisk, запускаемые с параметрами. Последовательность выполнения приложений — построчная.

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

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

  • звонка на внутренний номер 999, который выполняет какую-либо функцию
  • звонка другому внутреннему абоненту, номер которого начинается с цифры «1 » и состоящий из трех цифр
  • звонок на внешние телефонные линии через SIP-оператора


;тестовый звонок на номер 999, с возможность донабрать 2,3,5
exten ≥ 999,1,Answer ()
exten ≥ 999,n,Background (hello -world)
exten ≥ 999,n,Hangup ()
exten ≥ 2,1,Playback (digits /2)
exten ≥ 3,1,Playback (digits /3)
exten ≥ 5,1,Playback (digits /5)

;звонок на внутреннего абонента 1XX подключенного по технологии SIP

Exten ≥ _1XX,1,Dial (SIP/${EXTEN},60)

;звонок на московский номер через транк провайдера, который подключен к Asterisk по технологии SIP

Exten ≥ _495ZXXXXXX,1,Dial (SIP/provider/8${EXTEN},60)

В продолжение темы:
Linux

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

Новые статьи
/
Популярные