Установка asterisk12 + freepbx 12 на centos 6.5 64-bit

Подготовка системы

Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки centos 7. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

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

# mcedit /etc/sysconfig/selinux

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

# setenforce 0

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

Дальше обновляем систему и ставим пакеты Development Tools:

# yum update
# yum groupinstall core base "Development Tools"

Установка DAHDI, libPRI и Asterisk

  1. # cd dahdi-linux-complete-2.11.1+2.11.1
    # make all
    # make install
    # make config
    # cp tools/dahdi.init /etc/init.d/dahdi 
    
    
  2. # cd ../libpri-1.6.0
    # make
    # make install
    
  3. # cd ../asterisk-16.5.1
    # ./configure --prefix=/usr --exec-prefix=/usr --with-crypto --with-dahdi --with-iconv -with-libcurl --with-gmime --with-iksemel --with-mysqlclient --disable-xmldoc --with-pri --with-spandsp --with-ldap --with-libcurl --with-popt --with-resample --with-speex --with-unixodbc --with-jansson-bundled
    # make menuselect # ./contrib/scripts/get_mp3_source.sh # make # make install # make samples
  4. # ln -s /usr/lib/libpri.so.1.4 /usr/lib64/libpri.so.1.4
    # cat contrib/init.d/rc.redhat.asterisk | sed 's/__ASTERISK_SBIN_DIR__/\/usr\/sbin/' > /etc/init.d/asterisk
    # chmod 755 /etc/rc.d/init.d/asterisk
    # systemctl enable asterisk.service
    
  5. # groupadd asterisk 
    # useradd -c "asterisk PBX" -d /var/lib/asterisk -s /sbin/nologin -g asterisk asterisk
  6. # systemctl enable dahdi
    # cat /etc/dahdi/system.conf.sample > /etc/dahdi/system.conf
    # systemctl start dahdi
    # chown -R asterisk:asterisk /var/{lib,log,spool,run}/asterisk /etc/asterisk
    # systemctl start asterisk
    
  7. Включаем fail2ban:
    # vi /etc/fail2ban/jail.local
    # cat /etc/fail2ban/jail.local
    
    enabled = true
    
     
    enabled = true
    filter = asterisk
    logpath  = /var/log/asterisk/messages tail
    bantime = 86400
    
    # cd /etc/fail2ban/filter.d/
    # mv asterisk.conf asterisk.conf.orig
    # wget http://www.adminhelp.pro/wp-content/uploads/fail2ban/asterisk.conf
    # systemctl enable fail2ban.service
    # systemctl restart fail2ban.service
    

Устанавливаем Jansson и pjsip

YAML

# cd ~
# git clone https://github.com/akheron/jansson.git
# cd jansson
# autoreconf -i
# ./configure —prefix=/usr/
# make && make install

1
2
3
4
5
6

# cd ~
# git clone https://github.com/akheron/jansson.git
# cd jansson
# autoreconf -i
# ./configure —prefix=/usr/
# make && make install

YAML

# cd ~
# 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

1
2
3
4
5
6

# cd ~
# 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

FreePBX12

 
 wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-12.0-latest.tgz
 
 tar zxvf freepbx-*.tgz
cd /usr/src/freepbx

/etc/init.d/mysqld start

mysqladmin create asterisk
mysqladmin create asteriskcdrdb
mysql asterisk < SQL/newinstall.sql
mysql asteriskcdrdb < SQL/cdr_mysql_table.sql

mysql
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'SOMEPASSWORD';
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'SOMEPASSWORD';
flush privileges;
\q

mysqladmin -u root password 'SOMEPASSWORD'
 
cd /usr/src/freepbx
./start_asterisk start

#php53
nano +946 /etc/php.ini
     date.timezone = "Europe/Moscow"
pear uninstall db
pear install db-1.7.14
yum  install php-posix
 ./install_amp --username=asteriskuser --password=SOMEPASSWORD
 

PHP warning

PHP warning

 PHP Warning:  mkdir(): File exists in /usr/src/freepbx/libfreepbx.install.php on line 199

Запустите установку ещё раз

amportal a ma refreshsignatures
amportal a ma  upgradeall
amportal reload
amportal chown

или

/usr/local/sbin/amportal  ...
 echo "/usr/local/sbin/amportal start" >> /etc/rc.local

Установка DAHDI, libPRI и Asterisk

  1. # cd dahdi-linux-complete-2.11.1+2.11.1
    # make all
    # make install
    # make config
    # cp tools/dahdi.init /etc/init.d/dahdi 
    
    
  2. # cd ../libpri-1.6.0
    # make
    # make install
    
  3. # cd ../asterisk-14.4.0
    # ./configure --prefix=/usr --exec-prefix=/usr --with-crypto --with-dahdi --with-iconv -with-libcurl --with-gmime --with-iksemel --with-mysqlclient --disable-xmldoc --with-pri --with-spandsp --with-ldap --with-libcurl --with-popt --with-resample --with-speex --with-unixodbc
    # make menuselect
    # ./contrib/scripts/get_mp3_source.sh
    # make
    # make install
    # make samples
    
  4. # ln -s /usr/lib/libasteriskssl.so.1 /usr/lib64/libasteriskssl.so.1
    # ln -s /usr/lib/libasteriskssl.so.1 /usr/lib64/libasteriskssl.so
    # ln -s /usr/lib/libpri.so.1.4 /usr/lib64/libpri.so.1.4
    # cat contrib/init.d/rc.redhat.asterisk | sed 's/__ASTERISK_SBIN_DIR__/\/usr\/sbin/' > /etc/init.d/asterisk
    # chmod 755 /etc/rc.d/init.d/asterisk
    # systemctl enable asterisk.service
    
  5. # groupadd asterisk 
    # useradd -c "asterisk PBX" -d /var/lib/asterisk -s /sbin/nologin -g asterisk asterisk
  6. # systemctl enable dahdi
    # cat /etc/dahdi/system.conf.sample > /etc/dahdi/system.conf
    # systemctl start dahdi
    # chown -R asterisk:asterisk /var/{lib,log,spool,run}/asterisk /etc/asterisk
    # systemctl start asterisk
    

Установка GUI для Asterisk

1. Загрузка и настройка

Загрузите исходные файлы последней версии, используя svn. (yum install subversion)

root@centos-7 ~# cd /usr/src
root@centos-7 ~# svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0 asterisk-gui
root@centos-7 ~# cd asterisk-gui
root@centos-7 ~# ./configure
root@centos-7 ~# make
root@centos-7 ~# make install

Сделайте резервную копию файлов конфигурации. Для этого достаточно скопировать /etc/asterisk под другими именем:

root@centos-7 ~# cp -r /etc/asterisk /etc/asterisk.backup

Два файла измените вручную:

root@centos-7 ~# nano /etc/asterisk/manager.conf

Включите следующие настройки

enabled = yes
webenabled = yes

Теперь добавим нового пользователя в manager.conf:

administrator
secret = mypassword
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config

Теперь обновим конфиг http

root@centos-7 ~# nano /etc/asterisk/http.conf
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport = 8088
prefix = gui
enablestatic = yes

bindaddr 0.0.0.0 означает, что вы можете получить доступ из любого места. Если вам требуется доступ только с локального компьютера, то тогда используйте адрес 127.0.0.1.

Проверьте конфигурацию Asterisk-GUI, выполнив из каталога /usr/src/asterisk-gui команду

root@centos-7 asterisk-gui#make checkconfig

2. Запуск asterisk-gui

Чтобы загрузить asterisk-gui, необходимо перезапустить Asterisk. Перезапустить сервер Asterisk можно из с консоли CLI, выполнив команду reload

Теперь вы можете использовать asterisk-gui через указанные адреса:

http://yoururl:8088/static/config/index.html

http://yoururl:8088/httpstatus  (для проверки состояния)

Источник two-it.ru

Установка FreePBX

  1. в /etc/hosts добавить:
     pbx.example.com
  2. в конфиг /etc/httpd/conf.d/ssl.conf добавить в секцию <VirtualHost _default_:443>:
    DocumentRoot "/var/www/html"
    ServerName pbx.example.com:443
    
    <Directory "/var/www/html">
    Order allow,deny
    Allow from 
    </Directory>
  3. # systemctl enable httpd
    # systemctl start httpd
    
  4. В /etc/firewalld/zones/public.xml добавить:
    <service name="https"/>
    

    в секцию так же как и ssh

     # systemctl restart firewalld
  5. # systemctl enable mariadb
    # systemctl start mariadb
    # /usr/bin/mysql_secure_installation
    

    Установить пароль root для MySQL

  6. # cd /root
    # wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
    # tar -zxf freepbx-13.0-latest.tgz -C /usr/src 
    # cd /usr/src/freepbx
  7. Отредактировать /etc/php.ini:
    # vi /etc/php.ini (или /etc/php4/apache2/php.ini)
    upload_max_filesize=20M
    
  8. # mysqladmin create asteriskcdrdb -p
    # mysql -p asteriskcdrdb < installlib/SQL/cdr.sql
    # mysqladmin create asterisk -p
    # mysql -p asterisk < installlib/SQL/asterisk.sql 
    # mysql -p 
    mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '';
    mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '';
    mysql> flush privileges;
    
  9. Отредактировать:
    # vi /etc/httpd/conf/httpd.conf (или /etc/apache2/apache2.conf):
    User asterisk
    Group asterisk
    
  10. # chown asterisk /var/lib/php/session
  11. # rm -rf /var/www/html
  12. # ./install
  13. Заменить в базе asterisk в таблице freepbx_settings пароль для астериск манагера:
    # mysql -p
    mysql> UPDATE `asterisk`.`freepbx_settings` SET `value` = '' WHERE `freepbx_settings`.`keyword` = 'AMPMGRPASS';
  14. # systemctl restart httpd
  15. Войти в freepbx и завершить установку
  16. В /etc/firewalld положить файл direct.xml :
    <?xml version="1.0" encoding="utf-8"?>
     <direct>
     <rule ipv="ipv4" table="filter" chain="INPUT" priority="0">-m udp -p udp -d /32 --dport 5060 -m hashlimit --hashlimit 10/m --hashlimit-burst 10 --hashlimit-mode srcip,dstip,dstport --hashlimit-htable-expire 180 --hashlimit-name SIP -j ACCEPT</rule>
     <rule ipv="ipv4" table="filter" chain="INPUT" priority="1">-m multiport -m udp -p udp -d /32 --dports 10000:20000 -j ACCEPT</rule>
     </direct>
              
    
    # systemctl restart firewalld
  17. cat /etc/odbc.ini:
    Description=MySQL connection to 'asteriskcdrdb' database
    driver=MySQL
    server=localhost
    database=asteriskcdrdb
    UserName=asteriskuser
    Password=
    Port=3306
    Socket=/var/lib/mysql/mysql.sock
    option=3
    Charset=utf-8
    
  18. Включаем fail2ban:
    # vi /etc/fail2ban/jail.local
    # cat /etc/fail2ban/jail.local
    
    enabled = true
    
     
    enabled = true
    filter = asterisk
    logpath  = /var/log/asterisk/messages tail
    bantime = 86400
    
    # cd /etc/fail2ban/filter.d/ 
    # mv asterisk.conf asterisk.conf.orig 
    # wget http://www.adminhelp.pro/wp-content/uploads/fail2ban/asterisk.conf 
    # systemctl enable fail2ban.service 
    # systemctl restart fail2ban.service
    
    

Asterisk

1. Install asterisk prerequisites if not already present

yum install wget curl bison perl perl-CPAN openssl-devel kernel-devel audiofile-devel sox svn gcc-c++ make ncurses-devel libxml2-devel mysql-devel sqlite-devel libuuid-devel jansson-devel

If you will use odbc with asterisk you will also need

yum install unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel

And the relevant connector for your database, for example mysql

yum install mysql-connector-odbc

2. Change to a suitable location for storing the downloaded software, for example:

cd /usr/local/src/

3. Download latest version of asterisk (at time of writing this was 10)

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-12-current.tar.gz

4. Extract the source directory

tar -xvzf asterisk-12-current.tar.gz

5. Change into the source directory (customize the command to the version that was downloaded)

cd asterisk-12.8.2

6. Get source for fomat_mp3 (not part of downloaded asterisk tar file)

contrib/scripts/get_mp3_source.sh

7. Configure. Centos 7 uses a different libdir from the default one in asterisk configure script. If you don’t specify this then you will have to link the lib64 library (ln -s /usr/lib/libasteriskssl.so.1 /usr/lib64/libasteriskssl.so.1) for asterisk to run.

./configure --libdir=/usr/lib64

8. Start compilation of the Asterisk interactive menu for selection of the components to build:

make menuselect

Under Add-ons choose:

<pre>format_mp3
app_mysql
cdr_mysql

Under Core Sound Packages and Extra Sound Packages choose any relevant packages. It is a good idea to install not just gsm but also other codecs, since it reduces cpu needs for transcoding and (depending on codec) can give better quality.

When exiting menuselect, when prompted, press S to save changes.

9. Compile and install asterisk

make
make install

10. Change directory owner and group

chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /var/log/asterisk
chown -R asterisk:asterisk /var/lib/asterisk
chown -R asterisk:asterisk /var/spool/asterisk
chown -R asterisk:asterisk /etc/asterisk

Видео

В завершение видео со всем процессом установки:

Watch this video on YouTube

Онлайн курс «DevOps практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Подготовка системы

Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки centos 7. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

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

# mcedit /etc/sysconfig/selinux

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

# setenforce 0

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

Дальше обновляем систему:

# yum update
# yum groupinstall core base "Development Tools"

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

# yum install lynx mariadb-server mariadb php php-mysql php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git php-process crontabs cronie cronie-anacron wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear

Устанавливаем компонент pear:

# pear install Console_Getopt

Теперь надо настроить iptabes. Подробно вопрос настройки firewall я рассмотрел отдельно. Там можно узнать все нюансы. Здесь же я прото скажу, что для начала нам нужно открыть 80-й порт, чтобы мы смогли работать с веб интерфейсом:

iptables -A INPUT -p tcp -m tcp --dport 80 -j 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 4569 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Для работы freepbx необходима mariadb. Это популярный форк mysql, который по-умолчанию предлагается в качестве mysql сервера в CentOS 7. Оба эти сервера имеют полную совместимость и могут в любой момент заменять друг друга. Запустим базу и добавим в автозагрузку:

# systemctl enable mariadb.service
# systemctl start mariadb

При первоначальной конфигурации mariadb рекомендуется запустить скрипт mysql_secure_installation. Сделаем это:

# /usr/bin/mysql_secure_installation

Подробнее о работе этого скрипта и вообще настройке mariadb можно прочитать в материале на тему web-сервера на centos 7.

Важное замечание. На этапе настройки mariadb не указывайте пароль root

Он должен быть пустым. Если его задать, то стандартная установка freepbx закончится ошибкой и сообщением: Error! Invalid Database Permissions. The error was: SQLSTATE Access denied for user ‘root’@’localhost’ (using password: NO)

Мы же двигаемся дальше. Для работы freepbx необходим веб сервер. В этом качестве у нас будет выступать httpd. Запускаем его:

# systemctl start httpd

И добавляем в автозагрузку:

# systemctl enable httpd

Теперь добавим пользователя, под которым будет работать астериск:

# adduser asterisk -M -c "User for voip"

Дополнительные материалы по Zabbix

Онлайн курсы по Mikrotik

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

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

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.
Рекомендую полезные материалы по Zabbix:
Настройки системы
  • Установка 4.0
  • Обновление 3.0 -> 3.2
  • Обновление 3.4 -> 4.0
  • Установка Zabbix Proxy
  • Работа на NGINX

Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу.

Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0.

Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями.

Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах.

Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm.

Мониторинг служб и сервисов
 
  • Температура процессора
  • Nginx и php-fpm
  • Mysql репликация
  • Службы Linux
  • Рейд mdadm
  • Транки Asterisk
  • Synology

Мониторинг температуры процессора с помощью zabbix на Windows сервере с использованием пользовательских скриптов.

Настройка полноценного мониторинга web сервера nginx и php-fpm в zabbix с помощью скриптов и пользовательских параметров.

Мониторинг репликации mysql с помощью Zabbix. Подробный разбор методики и тестирование работы.

Описание настройки мониторинга tcp служб с помощью zabbix и его инструмента простых проверок (simple checks)

Настройка мониторинга рейда mdadm с помощью zabbix. Подробное пояснение принципа работы и пошаговая инструкция.

Подробное описание мониторинга регистраций транков (trunk) в asterisk с помощью сервера мониторинга zabbix.

Подробная инструкция со скриншотами по настройке мониторинга по snmp дискового хранилища synology с помощью сервера мониторинга zabbix.

Мониторинг различных значений
  • Мониторинг сайта
  • Мониторинг бэкапов
  • Размер бэкапа
  • Делегирование домена
  • Значения из текстового файла
  • Мониторинг логов

Настройка мониторинга web сайта в zabbix. Параметры для наблюдения — доступность сайта, время отклика, скорость доступа к сайту.

Один из способов мониторинга бэкапов с помощью zabbix через проверку даты последнего изменения файла из архивной копии с помощью vfs.file.time.

Подробное описание настройки мониторинга размера бэкапов в Zabbix с помощью внешних скриптов.

Пример настройки мониторинга за временем делегирования домена с помощью Zabbix и внешнего скрипта. Все скрипты и готовый шаблон представлены.

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

Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога.

Базовая настройка и запуск

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

vi /etc/asterisk/asterisk.conf

Снимаем комментарии и редактируем следующие пункты:

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

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

useradd asterisk -m

Задаем права на следующие каталоги:

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

chown -R asterisk:asterisk /etc/asterisk

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

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

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

и проверяем настройки:

asterisk -c

Если программа запустится, мы увидим Asterisk Ready:

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

Теперь можно запустить астериск как службу:

systemctl enable asterisk

systemctl start asterisk

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

Создадим наш первый диалплан (правило обработки звонков):

vi /etc/asterisk/extensions.conf

Допишем в него следующее: 

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

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

Теперь создадим два внутренних номера:

vi /etc/asterisk/sip.conf

(!)
type=friend
context=outcaling
host=dynamic
disallow=all
allow
=alaw
allow=ulaw
language=ru
qualify=yes
canreinvite=yes
call-limit=4
nat=no
(public)
regexten=101
secret=1234
callerid=»101″ <101>
callgroup=1
pickupgroup=1
(public)
regexten=102
secret=5678
callerid=»102″ <102>
callgroup=1
pickupgroup=1

* сначала мы создали шаблон public, в который занесли общие параметры. Шаблон мы применили к создаваемым коротким номерам.
* где:

  • ,  — имена для обозначения номеров.
  • type — типы проверки номеров. Могут быть peer, user или friend. Peer — вызовы сопоставляются с IP-адресами и номерами портов. User — проверка username. Friend — включает возможности peer и user (проверка username и IP-адреса источника) и лучше всего подходит для телефонов и телефонных программ.
  • regexten — добавочный номер. Если не задан, используется имя.
  • secret — пароль для аутентификации.
  • context — контекст или группа правил.
  • host — IP-адрес или имя клиента. Для автоматической регистрации используем dynamic.
  • callerid — идентификатор пользователя при звонке.
  • disallow — запрещает кодеки (задается перед параметром allow).
  • allow — разрешает кодеки. alaw и ulaw — алгоритмы для кодеков g711.
  • language — код используемого языка.
  • callgroup — задает группу устройства (для возможности перехвата).
  • pickupgroup — задает перечень групп, которые можно перехватывать.
  • qualify — включает или отключает периодическую проверку подключенного клиента.
  • canreinvite — включает или отключает прохождение голосового RTP трафика через Asterisk. Устанавливать, только если клиент поддерживает функцию SIP re-invites.
  • call-limit — ограничение количества одновременных вызовов.
  • nat — устанавливается в yes, если клиент находиться за NAT.

Перезапускаем наш сервис:

systemctl restart asterisk

Настройка межсетевого экрана и средства предотвращения вторжений

В ядре CentOS 8 по умолчанию используется межсетевой экран FirewallD, при этом настоящая инструкция предусматривает работу с iptables. Если вы предпочитаете использовать FirewallD, настройте его и пропустите данный раздел.

4.1. Деактивация FirewallD и активация iptables

systemctl stop firewalld
systemctl disable firewalld
systemctl enable iptables.service
systemctl start iptables.service

4.2. Подключение модулей iptables

Для обеспечения работы механизма динамического открытия портов RTP (SIP ALG), необходимо подключить дополнительные модули iptables:

sed -i 's/IPTABLES_MODULES=""/IPTABLES_MODULES="ip_conntrack iptable_filter iptable_mangle ipt_LOG ipt_limit ipt_state ipt_REJECT ip_conntrack_sip"/g' /etc/sysconfig/iptables-config

4.3. Настройка правил iptables

iptables -F INPUT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s <local network x.x.x.x/x> -j ACCEPT
iptables -A INPUT -s <management network x.x.x.x/x> -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 5060 -j ACCEPT
iptables -A INPUT -p tcp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp --dport 4569 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables-save > /etc/sysconfig/iptables

Примечания

  1. При отсутствии корректной поддержки SIP ALG на граничном маршрутизаторе, может потребоваться статическое открытие портов UDP для прохождения медиатрафика. Для этого следует добавить указанное ниже правило iptables:

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

4.4. Настройка утилиты fail2ban

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

ignoreip = 127.0.0.0/24
ignoreip = <local network x.x.x.x/x>
banaction = iptables-multiport

enabled = true
logpath = /var/log/asterisk/security
maxretry = 3
bantime = 3600

enabled = true

Перезапустите fail2ban и добавьте его в автозапуск:

systemctl restart fail2ban
systemctl enable fail2ban

Доступ в web интерфейс Freepbx

Переходим в браузере по ip адресу или доменному имени сервера и создаем учетную запись администратора Freepbx. При первом заходе в 14-ю версию я увидел ошибку.

Текст ошибки.

Whoops \ Exception \ ErrorException (E_DEPRECATED)
Methods with the same name as their class will not be constructors in a future version of PHP; gui_hidden has a deprecated constructor in /var/www/html/admin/libraries/components.class.php on line 571

Насколько я понял, это сообщение о том, что используется какая-то конструкция, которая объявлена Deprecated и скоро не будет работать. Что с этим делать сейчас, я не понял. Нашел баг репорт с этой ошибкой — https://issues.freepbx.org/browse/FREEPBX-19941 Он почему-то отклонен, помещен как дублирующий, но найти эту же ошибку в трекере я не смог.

Если взять версию php 5.6, то там этой ошибки не будет. Freepbx 14 официально поддерживает только 5.6, но откатываться на нее совсем не хочется.

Я решил просто отключить обработчик ошибок bootstrap. Для этого открываем конфиг freepbx и добавляем туда новое значение.

# mcedit /etc/freepbx.conf
$bootstrap_settings = false;

Заходим в web интерфейс freepbx еще раз и создаем администратора.

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

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

Зависимости

 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 kernel-devel ncurses-devel \
 audiofile-devel libogg-devel openssl-devel mysql-devel mysql-server zlib-devel \
 perl-DateManip sox srtp srtp-devel gmime gmime-devel
 
 yum install -y gcc-c++ make gnutls-devel kernel-devel libxml2-devel ncurses-devel \
 subversion doxygen texinfo curl-devel net-snmp-devel neon-devel \
 uuid-devel libuuid-devel sqlite-devel sqlite git speex-devel gsm-devel \
 unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl libtool-ltdl-devel php-mbstring php-xml

Установка Freepbx

Приступим к установке web панели управления для астериск — Freepbx. Вначале делаем несколько полезных настроек. Увеличиваем максимальный размер файла для загрузки через web сервер до 120М:

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

Настраиваем запуск httpd от пользователя asterisk:

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

Изменяем параметр AllowOverride на All:

# sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf

Перезапускаем веб сервер:

# systemctl restart httpd

Скачиваем и устанавливаем freepbx:

# cd /usr/src
# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
# tar xfz freepbx-13.0-latest.tgz
# cd freepbx
# ./start_asterisk start
# ./install -n

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

На этом установка закончена. Теперь можно зайти браузером на страницу с ip адресом сервера. У меня это http://192.168.0.163 Открывается начальная страница freepbx, где нам предлагается создать нового пользователя:

Создаем пользователя и заходим в web интерфейс астериска:

Вот и все, дальше можно заниматься конфигурированием.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: