Установка и настройка Asterisk. Частный опыт с нуля. Ip телефония с нуля. Установка AsteriskNOW

Добрый день, в этой статье я расскажу как установить самый популярный сервер VoIP телефонии Asterisk. С помощью данного сервера Вы сможете организовать телефонию в офисе, дома, или реализовать автоматическое оповещение, но об этом я расскажу в других статьях. И так приступим к установки asterisk на ubuntu server.

Установить Asterisk на Ubuntu Server крайне просто, понадобится всего одна команда:


sudo apt-get install asterisk

Первым делом после установки Asterisk, необходимо отключить возможность принимать звонки анонимно. Для этого открываем файл sip.conf и снимаем комментарий со строки allowguest=no, так как по умолчанию там стоит Yes. Кстати для поиска данной строки в nano можно нажать Ctrl+W и ввести искомую часть строки и нажать на Enter, если таких слов несколько в тексте то, для продолжения поиска нажать Ctrl+W и Enter.


sudo nano /etc/asterisk/sip.conf

В этом же файле можем указать провайдеров VoIP и своих внутренних абонентов. Я использую оператора it-sekret, так как у него дешевые звонки it-sekret.ru . Для этого в конце файла добавляем

Для оператора:

Type=peer context=it-sekret host=xxx.it-sekret.ru username=USERNAME secret=PASSWORD fromuser=USERNAME nat=force_rport insecure=port,invite

Если у оператора нужна постоянная регистрация, например для входящих вызовов, то надо написать вот такую строку

Register => userID:[email protected]/userID

Где userID это имя пользователя выданное оператором и PASSWORD это пароль, xxx.it-sekret.ru адрес сервера выданный оператором.

Создаем внутреннего абонента:

Type=friend context=internal host=dynamic username=1001 secret=1234

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


sudo asterisk -r
reload

Настройка телефона или софтфона

Теперь настроим телефон или софтфон. Я использую X-lite, программных телефонов достаточно много, можете использовать на Ваш вкус. Настройки X-lite выполните как на скриншоте.

Для проверки правильности выполненных настроек в CLI Asterisk (далее просто CLI) выполните команду sip show peers

Настройка правил набора Asterisk.(Диал план)

Первым делом сделаем копию оригинального файла extension.conf


sudo mv /etc/asterisk/extensions.conf
/etc/asterisk/extensions.conf.bak

Теперь в extension.conf пропишем правило для исходящего звонка.


sudo nano /etc/asterisk/extensions.conf exten => _X.,1,Dial(SIP/it-sekret/${EXTEN})

В CLI выполним команду reload, для применения настроек. И теперь попробуем совершить звонок.

Звонок прошел, теперь надо настроить входящий звонок. Для этого нужно прописать правило набора.


sudo nano /etc/asterisk/extensions.conf exten => s,1,Dial(SIP/1001)

На этом простая настройка заканчивается, в следующих статьях я расскажу как сделать запись разговоров, настроить IVR, сделать CallBack(обратный звонок) с сайта и многое другое.

23.02.2012 15:56

Статья, позволяющая начинающим программистам выполнить базовую настройку asterisk

Asterisk является одним из самых распространенных серверов ip-телефонии наряду с такими системами, как Switchwox и 3CX. Большую популярность данная система обрела с распространением в нашей стране качественного интернета, а также множества телефонных провайдеров, предоставляющих телефонные номера в SIP-формате или так называемые SIP-номера. Одной из таких компаний является Датагруп, которая зарекомендовала себя одним из лидеров рынка услуг связи. С удешевлением SIP-номеров появился смысл использовать современные телефонные системы ip-телефонии взамен старым аналоговым мини-атс. Это связано с широкими функциональными возможностями call-центров на базе Asterisk. При этом стоимость оборудования и настройка Asterisk практически не уступает в денежных затратах.

Установка asterisk производится путем скачивания и дальнейшей компиляции бесплатно распространяемого исходного кода, разработанного компанией Digium. Исходники asterisk существуют только для unix-совместимых операционных систем, самыми распространенными из которых являются Linux и FreeBSD. Установка asterisk под Windows возможна только путем реализации виртуальной машины. Скачать последние версии asterisk можно по следующей ссылке . На данный момент развивается сразу 4 версии этого сервера. Наибольшую стабильность всех модулей имеют версии asterisk 1.4 и asterisk 1.6. С другой стороны, в функциональном плане выгодно отличается версия asterisk 1.8, в которой есть поддержка множества новых модулей и функций, среди которых можно отметить поддержку протокола SRTP, работу с IPv6 и улучшенные показатели при работе SIP и ISDN.

В данной статье будет рассмотрена установка asterisk v 1.6.22 на Linux Fedora Core.

Для начала установки, скачаем исходники asterisk. Для этого, выполняем в консоли сервера команды:

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

# tar -xzvf asterisk-1.6.2.22.tar.gz

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

# yum install gcc

# yum install gcc-c++

# yum install make

# yum install libxml2-devel

# yum install ncurses-devel

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

# cd asterisk-1.6.2.22

После удачной установки в каталоге /etc/asterisk вы обнаружите конфигурационные файлы asterisk"a. Настройка asterisk осуществляется путем редактирования файлов конфигурации, имеющих очень специфическую структуру и операторы. Основу конфигурации при настройке астериск составляют файлы sip.conf и extensions.conf. Изучив и отредактировав эти файлы, можно добиться правильной работы сервера.

Файл sip.conf включает в себя настройки всех sip-устройств, зарегистрированных на сервере, который в последствии взаимодействуют между собой путем соединения двух и более sip-каналов, благодаря чему инициируется телефонное соединение - то есть звонок.

Пример файла sip.conf:


qualify=yes
nat=no


defaultexpiry=3600
disallow=all
allow=alaw
allow=ulaw
fromuser=044XXXXXXX
host=80.91.169.2
insecure=invite,port
secret=xxxxxxxxxxx
type=peer
username=044XXXXXXX
context=incoming
language=ru
qualify=yes
dtmfmode=auto


type=friend
host=dynamic
insecure=invite,port
username=fxo
secret=xxxxxxxx
context=incoming
qualify=yes
nat=no
canreinvite=no
allowtransfer=no
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw


type=friend
regexten=101
secret=xxxxxxxxxxxxx
context=internal
host=dynamic
callerid="101" <101>
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no

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

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

Следующие три блока описывают непосредственно sip-устройства. Для наглядности все три устройства имеют разные предназначения. Блок описывает параметры для sip-номера компании Датагруп, блок описывает параметры, для соединения с VOIP-шлюзом, а блок описывает параметры обычного внутреннего sip-устройства, которым может программный или аппаратный ip-телефон.

Пробежимся по основным параметрам sip устройств. Параметр context определяет какой алгоритм действий применять к тому или иному устройству. Callerid определяет номер и имя пира, которые будут высвечиваться при исходящем звонке с него. Опции disallow и allow определяют, какие кодеки использовать для связи. Опция secret - это пароль для регистрации данного пира. Пароли желательно составлять достаточно сложными во избежание взломов недоброжелателями.

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

Пример файла extensions.conf:


exten => _XXX,1,Dial(SIP/${EXTEN},120,tT)
exten => _XXX,n,Hangup

Exten => _X.,1,Dial(SIP/datagroup/${EXTEN},120,tT)
exten => _X.,n,Hangup


exten => _X.,1,Dial(SIP/101,60,tT)
exten => _X.,2,Hangup

Exten => h,1,Hangup

В данном простейшем примере мы имеем два алгоритма действий (контекста) - internal и incoming. Напомним, что привязка к контекстам осуществляется при создании пиров в файле sip.conf и в дальнейшем присваивается уже в extensions.conf при попытке инициации связи с пиром.

Опишем подробнее два контекста. Уже по их названиям становится понятно, что они применяются для алгоритмов внутренних абонентов (internal) и входящих звонков (incoming). Разобраться в конструкции этого файла поможет обобщенный пример, который можно выразить строкой:

Exten => _XXX,n,Command(Options)

Расшифровываются эти опции так:

Exten => _XXX - служебный префикс, с которого начинаются практически все строчки в данном файле. Он описывает представление входящего контекста. Другими словами, если на этот контекст обратился пир с номером 101, то алгоритм для него должен начинаться с конструкции exten => 101. Префикс поддерживает регулярные выражения и может указываться обобщенно. Например, exten => _XXX говорит о том, что под данный алгоритм попадают все пиры, которые состоят из трех цифр.

N - номер строчки алгоритма. В любом программном коде имеется последовательность операторов, которые выполняются по очереди. Точно также и в настройках asterisk есть такая последовательность. Единственное отличие - команды, выполняемые asterisk’ом, нумеруются. Обязательным является указание первой сточки явно. Как вы успели заметить, все контексты начинаются со строчек:

Exten => _XXX,1,…..
exten => _X.,1,…..
exten => h,1,……

А вот дальнейшие строчки могут нумероваться неявно, то есть так:

Exten => _XXX,n,…..
exten => _X.,n,…..
exten => h,n,……

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

Command - команда выполняемая asterisk’ом. Основных команд не так уж много. Для базовой настройки достаточно знать синтаксис команды Dial (позвонить), на примере которой мы рассмотрим оставшиеся опции.

Например:
exten => _X.,1,Dial(SIP/101,60,tT) - asterisk наберет внутренний номер 101 и будет пытаться дозвониться до абонента в течении 60 секунд с возможностью перехвата звонка со стороны звонящего и принимающего пиров (опции tT)
exten => _X.,1,Dial(SIP/datagroup/${EXTEN},120,tT) asterisk наберет номер, которые передан в переменной ${EXTEN} с помощью пира datagroup ранее указанного в sip.conf

Первый пример применялся в контексте incoming. Это говорит о том, что все входящие звонки, приходящие на этот контекст перенаправляются на внутреннего абонента, который отвечает на эти звонки. Второй пример в свою очередь показывает, как осуществляется исходящий звонок передавая набранный номер в служебной переменной ${EXTEN}.

Примеры файлов можно напрямую скопировать с этой статьи и вставить в ваши sip.conf и extensions.conf и подредактировать некоторые опции (логины, названия пиров, пароли и т.д). После настройки asterisk, запускаем сервер простой командой:

Дальнейшие действия могут производиться из командной строки астериска, которая запускается командой:

# asterisk -rvvvvd

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

P.S. В случае, если у вас не получилось настроить сервер, либо же вам нужна более сложная конфигурация, с радостью поможем в настройке asterisk. Наши контакты .


Asterisk, установка которого будет рассмотрена в данном материале, представляет собой программное обеспечение для организации так называемой офисной телефонной станции или IP-АТС (англ. Private Branch eXchange, PBX). Оно объединяет все телефоны в офисе в одну информационную сеть, на базе которой работают разнообразные службы голосовой связи. Asterisk работает на Linux, BSD, OS X и на Windows с использованием эмулятора.

Asterisk может осуществлять передачу голоса по четырем различным протоколам VoIP и взаимодействовать практически со всеми стандартизованными телефонными аппаратами (включая мобильные) при помощи относительно недорогого оборудования. Asterisk реализует различные возможности голосовой почты (voicemail), включая телефонный справочник, конференц-связь, интерактивный голосовой ответ и очереди вызовов.

В данном материале мы рассмотрим процесс установки Asterisk на ОС Linux, в частности на популярных дистрибутивах CentOS и Debian, а также базовые процедуры настройки сервера голосовой почты.

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

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

Перед установкой сервера IP-телефонии в системе должен быть обеспечен ряд условий. Asterisk должен устанавливаться на систему, работающую на ядре версии не ниже 2.6, при этом в системе должны присутствовать файлы заголовков, чтобы программа успешно скомпилировалась. Asterisk написан на языке C, поэтому для сборки в системе должен быть установлен компилятор gcc с сопутствующими библиотеками, такими как termcap и openssl. Для сборки дополнений Asterisk также требуются предустановленные библиотеки и клиент mysql, а также соответствующие им файлы заголовков.

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

  1. asterisk.
  2. asterisk-sounds.
  3. asterisk-addons.
  4. zaptel.
  5. libpri.

Файлы необходимо скопировать на сервер, который будет осуществлять функции офисной АТС. Разместите их в папке /usr/src/.

После этого запустите на Перейдите в каталог с архивами и распакуйте каждый из них командой:

tar-xzf<имя_архива>tar.gz

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

cd<имя_папки>

И выполните в каждой папке нижеуказанные команды.

1. Подготовка к сборке:

2. Сборка:

3. Установка:

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

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

В связи с этим, рассмотрим процедуры инсталляции Asterisk на двух популярных платформах для создания офисных АТС: CentOS и Debian GNU/Linux.

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

В рамках данного примера мы будем устанавливать Asterisk 13. Мы выполним установку Asterisk на CentOS 7.

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

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

В результате в системе будут присутствовать все зависимости, требующиеся для успешной сборки сервера телефонии Asterisk.

Следующим шагом должно стать отключение SELinux. Система безопасности Security-Enhanced Linux в CentOS включена по умолчанию и очень часто препятствует нормальному функционированию Asterisk. Поэтому для успешной настройки и работы сервера ее необходимо отключить.

Проверим статус активности системы SELinux следующей командой:

Если система сообщает, что SELinux включен, выполним процедуру отключения. Для этого необходимо внести изменения в конфигурационный файл в папке /etc/selinux, установив соответствующий флаг.

sed -i "s/\(^SELINUX=\).*/\SELINUX=DISABLED/" config

timedatectl set-timezone <имя_зоны> (например, America/Los_Angeles)

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

​timedatectl status

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

Теперь непосредственно перейдем к установке Asterisk.

Фактически, установка Asterisk на CentOS сводится к той же самой сборке из исходников, с которой мы познакомились в предыдущем разделе. Здесь же мы рассмотрим процесс сборки с учетом особенностей конкретного дистрибутива Linux, а именно CentOS 7.

Для начала загрузим и установим сам сервер IP-телефонии.

Скачаем из раздела Downloads на официальном сайте продукта архив с Asterisk 13 и сохраним его в папку /usr/src. Распакуем архив командой:

tar zxvf <имя_архива>

Перейдем в папку с распакованным архивом и выполним команды, приведенные ниже.

./configure --libdir=/usr/lib64 --with-pjproject-bundled

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

make menuselect.makeopts

После настройки опций компиляции выполните следующую последовательность действий:

1. Создайте отдельную учетную запись пользователя для сервера IP-телефонии.

adduser asterisk -s /sbin/nologin -c "Asterisk User"

2. Соберите и установите сервер.

make && make install

3. Задайте права доступа к Asterisk для вновь созданного пользователя.

chown -R asterisk. /var/lib/asterisk

В результате базовый сервер Asterisk будет собран и установлен.

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

FreePBX

FreePBX - это полнофункциональный графический Web-интерфейс, предназначенный для настройки и управления офисной АТС. Установка Asterisk с FreePBX осуществляется в нижеприведенной последовательности.

Запустим базу данных:

systemctl start mariadb

Скачаем с сайта GitHub в папку /usr/src исходный код FreePBX:

git clone -b release/13.0 https://github.com/FreePBX/framework.git freepbx

./start_asterisk start

И ряд команд для настройки FreePBX:

DAHDI

DAHDI - это драйвер, обеспечивающий взаимодействие Asterisk с различным телефонным оборудованием. Он отвечает за работу плат интерфейсов телефонии, устанавливаемых непосредственно в сервер, на котором работает Asterisk. Процедура установки DAHDI описана ниже.

Скачайте в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:

PJSIP

PJSIP - это библиотека, написанная на С, которая отвечает за поддержку различных протоколов IP-телефонии. С версии Asterisk 13.8 включительно библиотека PJSIP может устанавливаться отдельно. Впрочем, если Asterisk компилируется с флагом --with-pjproject-bundled (что мы и сделали в предыдущем разделе), библиотека PJSIP будет установлена непосредственно при компиляции сервера.

Для того, чтобы установить PJSIP отдельно, требуется произвести следующую процедуру.

Скачайте с сайта pjsip.org в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:

Пост-инсталляционные процедуры

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

1. Установить защиту для сервера базы данных:

mysql_secure_installation

Для выполнения процедуры просто ответьте Y на все вопросы.

2. Изменить настройки веб-сервера:

3. Открыть доступ к службам и портам, необходимым для работы Asterisk:

firewall-cmd --permanent --zone=public --add-service={http,https} --add-port=5060-5061/tcp --add-port=5060-5061/udp --add-port=10000-20000/udp

4. Настроить автозагрузку базы данных:

systemctl enable mariadb

5. Настроить загрузку веб-сервера при запуске системы:

systemctl enable httpd

6. Настроить автозапуск FreePBX при загрузке системы:

nano /etc/systemd/system/freepbx.service

systemctl enable freepbx

7. Настроить соединение с базой данных через ODBC. Если установлен устаревший модуль cdr_mysql.so, этот пункт опционален, но все же рекомендуется:

nano /etc/odbc.ini

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

isql -v asteriskcdrdb

8. Перезагрузите систему, чтобы применить сделанные изменения:

Установка Asterisk 13 на Debian

В данном разделе мы рассмотрим процедуру установки на другой популярной платформе - Debian. Хорошая новость для пользователей: она относительно проста, несмотря на то, что также включает в себя сборку из исходников. В качестве примера мы выполним установку Asterisk на Debian 8.

Установка производится от имени суперпользователя (root). Откройте терминал, получите соответствующие права, после чего можно приступить к инсталляции.

Сначала загрузите Asterisk 13 с официального сайт и распакуйте загруженный архив. Перейдите в папку с распакованными исходниками.

Теперь установим необходимые зависимости. Самая важная - компилятор gcc - в Debian уже есть. Поэтому просто загрузим оставшиеся:

После того, как все зависимости загружены и установлены, выполните в папке с распакованным архивом Asterisk следующую команду:

Команда должна завершиться без ошибок. Если в результате возникнет сообщение об отсутствии некоторых зависимостей, установите их.

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

Будет открыто консольное приложение со списком модулей. Перемещаясь клавишами вниз и вверх по списку, вы можете включать и отключать их. Некоторые дополнительные модули требуют установки зависимостей. Это можно сделать при помощи apt-get.

Теперь приступим к компиляции Asterisk. Введите в консоли уже знакомые команды:

1. Сборка исходников:

2. Установка в системные каталоги:

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

На этом завершается установка. Asterisk успешно проинсталлирован на ваше сервер. Следующая команда вызовет консоль управления Asterisk:

asterisk -vvvvvvgc

Настройка Asterisk

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

Для начала нужно добавить следующий текст в файл sip.conf:

Тем самым мы создадим пять учетных записей, которые могут использоваться любым клиентом SIP (Cisco SIP Phone, xlite, ATA и тому подобные). Все пользователи будут зарегистрированы в Asterisk. Если данная конфигурация не работает, попробуйте отключить сетевой экран до завершения настройки программного обеспечения.

Создание первого номерного плана

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

Откройте файл extension.conf в папке /etc/asterisk и добавьте в него строку:

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

Теперь все сконфигурированные клиенты SIP смогут принимать и отправлять звонки. Благодаря простоте настройки диалплана, Asterisk и является одной из самых дружелюбных платформ IP-телефонии. Не так уж и много навыков требуется, чтобы поднять офисную АТС.

Создание первого транка SIP

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

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

Для создания транка добавьте следующий код в файл sip.conf:

После этого нужно будет внести в extension.conf еще одну строку:

exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

Это позволит установить связь с провайдером для осуществления исходящих вызовов.

Заключение

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

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

Пошаговое видео

Подключение к FreePBX

Чтобы подключиться к графическому интерфейсу FreePBX, нужно ввести IP – адрес Asterisk, который вы указали на этапе установки. Если вы забыли, какой IP – адрес указали, то подключите монитор и клавиатуру к вашему серверу, а затем введите данные для пользователя root, как показано ниже:



При подключении, вам будет указан IP – адрес вашего сервера. Если версия вашего дистрибутива отличается, и вы не увидели аналогичного вывода, укажите следующую команду:

# ifconfig

Вывод команды позволит вам увидеть все доступные интерфейсы и их IP – адреса.

Активация и пароль администратора

Подключившись к FreePBX 13 через интернет – браузер вам будет сразу предложено создать учетную запись администратора указав логин, пароль и адрес электронной почты администратора системы. После успешного создания, выберите на главной страницу пункт FreePBX Administration и укажите созданные параметры:



Сразу после подключение, перейдите во вкладку Admin System Admin и нажмите кнопку Activation




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


Настройки SIP

Модуль SIP Settings это графическая визуализация настроек в файле /etc/asterisk/sip_nat.conf. Здесь, с помощью графического интерфейса можно настроить важнейшие параметры, такие как настройки NAT, внешний IP – адрес и настройки кодеков. Чтобы перейти к настройке нажмите на вкладку Settings , а далее Asterisk Sip Settings .



Allow Anonymous inbound SIP Calls
Данная опция позволяет разрешить, или запретить входящие звонки с неизвестных номеров. Мы советуем запрещать данный вид звонков, так как потенциально, разрешенные анонимные звонки могут стать лазейкой для злоумышленников.

Local Networks
Введите локальные (находящиеся внутри вашей сети) адреса подсетей, которым Asterisk будет доверять. Например, 192.168.2.0/255.255.255.0

RTP Ranges
Укажите диапазон RTP портов. Рекомендуем все оставлять по умолчанию.

Strict RTP
Когда между двумя устройствами устанавливается RTP поток, то назначаются адреса источника и назначения. При включенной данной опции, все пакеты приходящие с другого IP – адреса буду отброшены. Мы рекомендуем не выключать данную опцию.

Codecs
Галочкой отметьте нужные кодеки.

Положение кодеков указывает их приоритет. Например, на скриншоте ниже приоритет отдан g.711 u-law, затем g.711 a-law, gsm и так далее. Более подробно про телефонные вы можете прочитать в наших прошлых статях.

Настройка NAT в FreePBX

В большинстве случаев, если администратор обнаруживает проблему односторонней слышимости, или то, что звонки обрываются спустя несколько секунд разговора – проблема в NAT. Вот что нужно сделать, чтобы избавиться от этой проблемы: в настройка модуля Asterisk SIP Settings , переходим во вкладку Chan SIP Settings и отмечаем следующее:

NAT - yes
IP Configuration - Static IP
Override External IP - введите ваш внешний IP - адрес

Reinvite Behavior - No
Обязательно укажите в настройках Local Networks в предыдущей вкладке вашу локальную подсеть. Помимо этого, пробросьте на вашем маршрутизаторе порт 5060 и диапазон портов из параметра RTP Ranges , по умолчанию равный 10000-20000


Настройка сетевых параметров FreePBX

Есть три важных пункта данной настройки:

  1. Настроить статический IP – адрес для сервера
  2. Настроить DNS
  3. Настроить временную зону
Перейдем к настройке IP. Для этого, перейдите во вкладку Admin System Admin Network Settings

Здесь мы настраиваем следующие опции:

  • Network Interface - сетевой интерфейс, то есть конкретная сетевая карта (NIC)
  • IP Assignment - выберите Static чтобы настроить статический IP - адрес
  • Static IP - введите IP – адрес сервера
  • Netmask - маска сети
  • Gateway - шлюз по умолчанию
  • Start Automatically - старт при загрузке сервера



Настроим уведомления нашего сервера Asterisk, при таких сбоях, как например малое дисковое пространство или сбой в работе RAID массива:



Производим настройку следующих опций:

  • From Address - адрес электронной почты, который АТС будет указывать как адрес отправителя при формировании письма
  • Storage Notifications - почта для уведомлений о проблемах с хранением данных (сбой RAID или нехватка места на дисках)
  • Intrusion Detection Notifications IP - почта для уведомлений о вторжениях или попытках взлома сервера

Конфигурация системы безопасности

В Asterisk встроена система обнаружения вторжений – Fail2Ban. Для настройки системы перейдите во вкладку Admin System Admin Intrusion Detection



Система гибкая, и, порой реагирует когда не нужно:) Поэтому, советуем заранее вносить в Whitelist перечень нужных IP – адресов, таких как IP SIP – прокси, адреса шлюзов, например FXS. Порой, бывает так, что в бан попадает IP – адрес FXS шлюза, к которому подключены все офисные аналоговые телефоны.

  • Status - мы рекомендуем всегда контролировать состояние Fail2Ban, чтобы статус был running
  • Intrusion Detection - в данном пункте можно остановить и перезапустить службу.
  • Ban Time - время в секундах, которое IP – адрес будет находиться в статусе блокировки
  • Max Retry - количество попыток подключения к АТС, которое пользователь может осуществить в течение Find Time.
  • Find Time - время, в течение которого у пользователя есть Max Retry попыток подключения к системе.
  • E-mail: - адрес электронной почты, на которую будут отправляться уведомления о внесении нового IP – адреса в бан.
  • Whitelist - список заранее внесенных IP – адресов, которым доверяет администратор.

Настройка внутренних номеров

Для настройки телефонных аппаратов и создания внутренних номеров перейдите во вкладку Applications Extensions . Процесс создания внутренних номеров (Extension) мы описали в статье по ссылке ниже:

Настройка SIP - транка

Подключение к провайдеру является важнейшим этапом в настройке вашего сервера IP - АТС Asterisk. Именно настройки провайдера, позволят нашим пользователям совершать исходящие, и принимать входящие вызовы. Для настройки SIP – транка перейдите во вкладку Connectivity Trunks . Процесс создания SIP - транка подробно расписан в статье по ссылке ниже:

Настройка маршрутизации

После того, как мы настроили внутренние номера и SIP – транки для подключения к провайдеру, нам необходимо настроить маршрутизацию вызова. В рамках данной настройки, мы будем учить наш сервер Asterisk как обрабатывать входящий и исходящие вызовы. Connectivity Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

23.02.2012 15:56

Статья, позволяющая начинающим программистам выполнить базовую настройку asterisk

Asterisk является одним из самых распространенных серверов ip-телефонии наряду с такими системами, как Switchwox и 3CX. Большую популярность данная система обрела с распространением в нашей стране качественного интернета, а также множества телефонных провайдеров, предоставляющих телефонные номера в SIP-формате или так называемые SIP-номера. Одной из таких компаний является Датагруп, которая зарекомендовала себя одним из лидеров рынка услуг связи. С удешевлением SIP-номеров появился смысл использовать современные телефонные системы ip-телефонии взамен старым аналоговым мини-атс. Это связано с широкими функциональными возможностями call-центров на базе Asterisk. При этом стоимость оборудования и настройка Asterisk практически не уступает в денежных затратах.

Установка asterisk производится путем скачивания и дальнейшей компиляции бесплатно распространяемого исходного кода, разработанного компанией Digium. Исходники asterisk существуют только для unix-совместимых операционных систем, самыми распространенными из которых являются Linux и FreeBSD. Установка asterisk под Windows возможна только путем реализации виртуальной машины . Скачать последние версии asterisk можно по следующей ссылке. На данный момент развивается сразу 4 версии этого сервера. Наибольшую стабильность всех модулей имеют версии asterisk 1.4 и asterisk 1.6. С другой стороны, в функциональном плане выгодно отличается версия asterisk 1.8, в которой есть поддержка множества новых модулей и функций, среди которых можно отметить поддержку протокола SRTP, работу с IPv6 и улучшенные показатели при работе SIP и ISDN.

В данной статье будет рассмотрена установка asterisk v 1.6.22 на Linux Fedora Core.

Для начала установки, скачаем исходники asterisk. Для этого, выполняем в консоли сервера команды:

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

# tar -xzvf asterisk-1.6.2.22.tar.gz

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

# yum install gcc

# yum install gcc-c++

# yum install make

# yum install libxml2-devel

# yum install ncurses-devel

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

# cd asterisk-1.6.2.22

После удачной установки в каталоге /etc/asterisk вы обнаружите конфигурационные файлы asterisk"a. Настройка asterisk осуществляется путем редактирования файлов конфигурации, имеющих очень специфическую структуру и операторы. Основу конфигурации при настройке астериск составляют файлы sip.conf и extensions.conf. Изучив и отредактировав эти файлы, можно добиться правильной работы сервера.

Файл sip.conf включает в себя настройки всех sip-устройств, зарегистрированных на сервере, который в последствии взаимодействуют между собой путем соединения двух и более sip-каналов, благодаря чему инициируется телефонное соединение - то есть звонок.

Пример файла sip.conf:

Qualify=yes
nat=no

Defaultexpiry=3600
disallow=all
allow=alaw
allow=ulaw
fromuser=044XXXXXXX
host=80.91.169.2
insecure=invite,port
secret=xxxxxxxxxxx
type=peer
username=044XXXXXXX
context=incoming
language=ru
qualify=yes
dtmfmode=auto

Type=friend
host=dynamic
insecure=invite,port
username=fxo
secret=xxxxxxxx
context=incoming
qualify=yes
nat=no
canreinvite=no
allowtransfer=no
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw

Type=friend
regexten=101
secret=xxxxxxxxxxxxx
context=internal
host=dynamic
callerid="101"
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no

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

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

Следующие три блока описывают непосредственно sip-устройства. Для наглядности все три устройства имеют разные предназначения. Блок описывает параметры для sip-номера компании Датагруп, блок описывает параметры, для соединения с VOIP-шлюзом, а блок описывает параметры обычного внутреннего sip-устройства, которым может программный или аппаратный ip-телефон.

Пробежимся по основным параметрам sip устройств. Параметр context определяет какой алгоритм действий применять к тому или иному устройству. Callerid определяет номер и имя пира, которые будут высвечиваться при исходящем звонке с него. Опции disallow и allow определяют, какие кодеки использовать для связи. Опция secret - это пароль для регистрации данного пира. Пароли желательно составлять достаточно сложными во избежание взломов недоброжелателями.

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

Пример файла extensions.conf:

Exten => _XXX,1,Dial(SIP/${EXTEN},120,tT)
exten => _XXX,n,Hangup

Exten => _X.,1,Dial(SIP/datagroup/${EXTEN},120,tT)
exten => _X.,n,Hangup

Exten => _X.,1,Dial(SIP/101,60,tT)
exten => _X.,2,Hangup

Exten => h,1,Hangup

В данном простейшем примере мы имеем два алгоритма действий (контекста) - internal и incoming. Напомним, что привязка к контекстам осуществляется при создании пиров в файле sip.conf и в дальнейшем присваивается уже в extensions.conf при попытке инициации связи с пиром.

Опишем подробнее два контекста. Уже по их названиям становится понятно, что они применяются для алгоритмов внутренних абонентов (internal) и входящих звонков (incoming). Разобраться в конструкции этого файла поможет обобщенный пример, который можно выразить строкой:

Exten => _XXX,n,Command(Options)

Расшифровываются эти опции так:

Exten => _XXX - служебный префикс, с которого начинаются практически все строчки в данном файле. Он описывает представление входящего контекста. Другими словами, если на этот контекст обратился пир с номером 101, то алгоритм для него должен начинаться с конструкции exten => 101. Префикс поддерживает регулярные выражения и может указываться обобщенно. Например, exten => _XXX говорит о том, что под данный алгоритм попадают все пиры, которые состоят из трех цифр.

N - номер строчки алгоритма. В любом программном коде имеется последовательность операторов, которые выполняются по очереди. Точно также и в настройках asterisk есть такая последовательность. Единственное отличие - команды, выполняемые asterisk’ом, нумеруются. Обязательным является указание первой сточки явно. Как вы успели заметить, все контексты начинаются со строчек:

Exten => _XXX,1,…..
exten => _X.,1,…..
exten => h,1,……

А вот дальнейшие строчки могут нумероваться неявно, то есть так:

Exten => _XXX,n,…..
exten => _X.,n,…..
exten => h,n,……

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

Command - команда выполняемая asterisk’ом. Основных команд не так уж много. Для базовой настройки достаточно знать синтаксис команды Dial (позвонить), на примере которой мы рассмотрим оставшиеся опции.

Например:
exten => _X.,1,Dial(SIP/101,60,tT) - asterisk наберет внутренний номер 101 и будет пытаться дозвониться до абонента в течении 60 секунд с возможностью перехвата звонка со стороны звонящего и принимающего пиров (опции tT)
exten => _X.,1,Dial(SIP/datagroup/${EXTEN},120,tT) asterisk наберет номер, которые передан в переменной ${EXTEN} с помощью пира datagroup ранее указанного в sip.conf

Первый пример применялся в контексте incoming. Это говорит о том, что все входящие звонки, приходящие на этот контекст перенаправляются на внутреннего абонента, который отвечает на эти звонки. Второй пример в свою очередь показывает, как осуществляется исходящий звонок передавая набранный номер в служебной переменной ${EXTEN}.

Примеры файлов можно напрямую скопировать с этой статьи и вставить в ваши sip.conf и extensions.conf и подредактировать некоторые опции (логины, названия пиров, пароли и т.д). После настройки asterisk, запускаем сервер простой командой:

Дальнейшие действия могут производиться из командной строки астериска, которая запускается командой:

# asterisk -rvvvvd

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

P.S. В случае, если у вас не получилось настроить сервер, либо же вам нужна более сложная конфигурация, с радостью поможем в настройке asterisk. Наши контакты.


По установке системы.
Наконец тем или иным образом у нас появился установленный Asterisk и FreePBX.

Опишу ситуацию немного подробнее для сравнения подойдет ли Вам наша схема работы. Мы небольшой интернет провайдер, нам нужна запись разговоров, очереди звонков на городские и мобильные телефоны, голосовое меню рассказывающее про акции с выбором в какой отдел попасть, и возможность быстро поставить перед всем этим сообщение об авариях на определенных улицах города, чтобы люди не перенапрягали тех поддержку, причем желательно бесплатно. Чтобы не покупать дорогие шлюзы мы решили сменить городские телефонные номера и купить пару номеров + десяток каналов у провайдера ip-телефонии. Кто то скажет что это ненадёжно и т.д. Только скажите- какая разница интернет провайдеру на городские телефоны, если у него упал весь интернет? Зато это дешево. Подключение нам обошлось всего то в 38 $, каждый телефонный номер в 2$ и линия в 1,2$ в месяц. После чего мы получили настройки даже без авторизации и к нашему ip адресу привязали аккаунт. Сразу хотелось бы оговорить как будет построена эта статья, чтобы не перегружать её тоннами скринов я опишу создание каждого элемента по одному разу(что советую проделать т.к. они понадобятся для ваших же последующих экспериментов), а потом уже распишу схему что на что ссылается в нашей схеме работы. Наверняка схема у вас будет другая, но зато сможете понять смысл. Описывать буду только те элементы, которые непосредственно понадобились при настройке.

Теперь самое время завести транк:

Для наглядности я буду писать на английском т.к. интерфейс переведен кусками и достаточно загадочно. Заходим в Connectivity> Trunks > Add SIP Trunk.

В правом углу будет список уже созданных вами транков. Открыв новый я заполнил произвольно название - Trunk Name, назвав его Vega(Vegatelecom наш провайдер). Outbound CallerID вписав номер в формате 380652ХХХХХХ как его и выдает наш оператор, это номер с которого будут исходящие вызовы, если его не задать то позвонить с использованием этого транка не получалось, говорил все линии заняты. В Outgoing Settings заполнил ещё одно поле Trunk Name и ввёл настройки которые дал провайдер:

host=93.178.205.29
type=peer
disallow=all
allow=alaw&ulaw&g729
nat=no
canreinvite=nonat
insecure=invite
dtmfmode=rfc2833

Внизу нажал кнопочку Submit Changes и получил созданный транк.

Теперь нужно выбрать куда же мы будем принимать звонки. Заходим Applications > Extension> Generic SIP Device > Submit

Есть три важных пункта данной настройки:

  1. Настроить статический IP – адрес для сервера
  2. Настроить DNS
  3. Настроить временную зону
Перейдем к настройке IP. Для этого, перейдите во вкладку Admin System Admin Network Settings


Здесь мы настраиваем следующие опции:

  • Network Interface - сетевой интерфейс, то есть конкретная сетевая карта (NIC)
  • IP Assignment - выберите Static чтобы настроить статический IP - адрес
  • Static IP - введите IP – адрес сервера
  • Netmask - маска сети
  • Gateway - шлюз по умолчанию
  • Start Automatically - старт при загрузке сервера


Настроим уведомления нашего сервера Asterisk, при таких сбоях, как например малое дисковое пространство или сбой в работе RAID массива:


Производим настройку следующих опций:

  • From Address - адрес электронной почты, который АТС будет указывать как адрес отправителя при формировании письма
  • Storage Notifications - почта для уведомлений о проблемах с хранением данных (сбой RAID или нехватка места на дисках)
  • Intrusion Detection Notifications IP - почта для уведомлений о вторжениях или попытках взлома сервера

Конфигурация системы безопасности

В Asterisk встроена система обнаружения вторжений – Fail2Ban. Для настройки системы перейдите во вкладку Admin System Admin Intrusion Detection


Система гибкая, и, порой реагирует когда не нужно:) Поэтому, советуем заранее вносить в Whitelist перечень нужных IP – адресов, таких как IP SIP – прокси, адреса шлюзов, например FXS. Порой, бывает так, что в бан попадает IP – адрес FXS шлюза, к которому подключены все офисные аналоговые телефоны.

  • Status - мы рекомендуем всегда контролировать состояние Fail2Ban, чтобы статус был running
  • Intrusion Detection - в данном пункте можно остановить и перезапустить службу.
  • Ban Time - время в секундах, которое IP – адрес будет находиться в статусе блокировки
  • Max Retry - количество попыток подключения к АТС, которое пользователь может осуществить в течение Find Time.
  • Find Time - время, в течение которого у пользователя есть Max Retry попыток подключения к системе.
  • E-mail: - адрес электронной почты, на которую будут отправляться уведомления о внесении нового IP – адреса в бан.
  • Whitelist - список заранее внесенных IP – адресов, которым доверяет администратор.

Настройка внутренних номеров

Для настройки телефонных аппаратов и создания внутренних номеров перейдите во вкладку Applications Extensions . Процесс создания внутренних номеров (Extension) мы описали в статье по ссылке ниже:

Настройка SIP - транка

Подключение к провайдеру является важнейшим этапом в настройке вашего сервера IP - АТС Asterisk. Именно настройки провайдера, позволят нашим пользователям совершать исходящие, и принимать входящие вызовы. Для настройки SIP – транка перейдите во вкладку Connectivity Trunks . Процесс создания SIP - транка подробно расписан в статье по ссылке ниже:

Настройка маршрутизации

После того, как мы настроили внутренние номера и SIP – транки для подключения к провайдеру, нам необходимо настроить маршрутизацию вызова. В рамках данной настройки, мы будем учить наш сервер Asterisk как обрабатывать входящий и исходящие вызовы. b>Connectivity → Inbound/Outbound Routes . Данный процесс мы подробно описали в статье по ссылке ниже:

Так как наш Астериск будет установлен в небольшой компании, мы планируем сделать голосовое меню, в котором будем помогать пользователям быстрее связаться с нужным человеком. Настройка голосового меню (IVR), регламентируется в модуле IVR, консоль конфигурации которого располагается во вкладке Applications IVR . Настройку вы можете найти по ссылке ниже::

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то