Подготовка системы
Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки 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
-
# cd dahdi-linux-complete-2.11.1+2.11.1 # make all # make install # make config # cp tools/dahdi.init /etc/init.d/dahdi
-
# cd ../libpri-1.6.0 # make # make install
-
# 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
-
# 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
-
# groupadd asterisk # useradd -c "asterisk PBX" -d /var/lib/asterisk -s /sbin/nologin -g asterisk asterisk
-
# 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
- Включаем 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 |
# 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 |
# 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
-
# cd dahdi-linux-complete-2.11.1+2.11.1 # make all # make install # make config # cp tools/dahdi.init /etc/init.d/dahdi
-
# cd ../libpri-1.6.0 # make # make install
-
# 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
-
# 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
-
# groupadd asterisk # useradd -c "asterisk PBX" -d /var/lib/asterisk -s /sbin/nologin -g asterisk asterisk
-
# 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
- в /etc/hosts добавить:
pbx.example.com
- в конфиг /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>
-
# systemctl enable httpd # systemctl start httpd
- В /etc/firewalld/zones/public.xml добавить:
<service name="https"/>
в секцию так же как и ssh
# systemctl restart firewalld
-
# systemctl enable mariadb # systemctl start mariadb # /usr/bin/mysql_secure_installation
Установить пароль root для MySQL
-
# 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
- Отредактировать /etc/php.ini:
# vi /etc/php.ini (или /etc/php4/apache2/php.ini) upload_max_filesize=20M
-
# 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;
- Отредактировать:
# vi /etc/httpd/conf/httpd.conf (или /etc/apache2/apache2.conf): User asterisk Group asterisk
-
# chown asterisk /var/lib/php/session
- # rm -rf /var/www/html
-
# ./install
- Заменить в базе asterisk в таблице freepbx_settings пароль для астериск манагера:
# mysql -p mysql> UPDATE `asterisk`.`freepbx_settings` SET `value` = '' WHERE `freepbx_settings`.`keyword` = 'AMPMGRPASS';
-
# systemctl restart httpd
- Войти в freepbx и завершить установку
- В /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
- 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
- Включаем 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: |
Настройки системы |
---|
Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу. Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0. Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями. Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах. Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm. |
Мониторинг служб и сервисов |
Мониторинг температуры процессора с помощью 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
Примечания
-
При отсутствии корректной поддержки SIP ALG на граничном маршрутизаторе, может потребоваться статическое открытие портов UDP для прохождения медиатрафика. Для этого следует добавить указанное ниже правило iptables:
- Точный набор правил зависит от перечня используемых протоколов.
- Защита от нежелательного трафика на уровне сервера является дополнительной. Предполагается, что основная защита обеспечивается на уровне сетевой инфраструктуры.
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 интерфейс астериска:
Вот и все, дальше можно заниматься конфигурированием.