Телефония asterisk с нуля. Настройка IP телефонии на базе Asterisk
Эта маленькая статья предлагается самым начинающим инженерам в сфере телекоммуникаций. В ней очень коротко описано как запустить голосовую связь через компьютерную сеть своими силами. Итак, начну с главного. В качестве источника я выбрал готовую систему для установки с пакетов AsteriskNOW. Она построена на системе CentOS, которая полностью совместима с Fedora & Red Hat. Соответственно, все дополнения к ней можно ставить с.rpm пакетов. Установка тривиальна и описывать ее я не буду. После установки системы нам предложат ввести логин и пароль. Если Вы во время установки пропустили шаг по настройке сети, то его сейчас необходимо восполнить. Иначе, мы не сможем управлять Asterisk’ом через веб-интерфейс. Допустим у нас интерфейс сетевой карты имеет адрес 10.0.10.5/24. Тогда после введения в адрессной строке браузера http://10.0.10.5 на другой машине, мы получим веб-интерфейс FreePBX. По умолчанию логин: freepbx, пароль: fpbx. Когда ввойдем, увидим приблизительно такую картинку:
Здесь мы видим статус системы: нагрузка, аптаймы, сервисы, количество подключений и другое. Скажу сразу, что это уже обновленная и дополненная система со всеми плагинами. Напомню, Asterisk является модульной системой и обновляется частями. Сейчас мы рассмотрим некоторые возможности этой системы. Начнем собственно с обновления. Не буду говорить по какому порту идет обновление ибо не испытывал, поэтому сделаем доступ данной машины в Интернет через обычный static NAT. Почему статический NAT, а не, скажем, NAT overload? При дальнейшей настройке системы для звонков с локалки в Интернет и обратно нам необходимо будет открыть некоторые порты. Об этом позже. А сейчас перейдем на вкладку Module Admin и начнем обновление системы.
Выберем необходимые плагины с расширенного репозитория. Сразу скажу, что желательно поставить следующие плагины: Asterisk Info, Asterisk SIP Settings, Java SSH. Первый плагин даст нам возможность мониторить подключения пользователей к нашей системе. Второй нужен для настройки работы системы в Интернете. Третий — клиент для доступа к системе по SSH. Все остальные плагины по желанию.
Перед тем, как начать создание номеров для клиентов хочу предупредить, что все настройки Asterisk’а через веб-интнрфейс не будут осуществляться пока не сделать несколько изменений в системе. Поэтому, проделаем следующее:
cd /etc/asterisk
mv extensions.conf /tmp/extensions.conf
mv sip.conf /tmp/sip.conf
mv iax.conf /tmp/iax.conf
mv features.conf /tmp/features.conf
После перемещения указанных файлов нужно извлечь конфиг Asterisk’а.
cd /var/lib/asterisk/bin/
После проделанных манипуляций управлять системой можно через веб-интерфейс. Почему я сделал перемещение а не удаление? Наверное, чтобы попозже изучить эти файлы, но вы можете их просто удалить. Итак, давайте создадим пару номеров для проверки работоспособности системы. Нажимаем на вкладку Extensions.
Выбираем тип девайса, а точнее протокол, по которому будет осуществляться связь. В данном случае мы виберем SIP, так как он самый распостраненный и стандартизированный. Нажимаем Submit и переходим к картинке:
Здесь три поля обязательных: номер клиента (0004), отображаемое имя клиента (user04), пароль клиента (User04). После создания номера необходимо подтвердить изменения. Asterisk перечитает конфиги и номер создасться. Как только вы создадите несколько номеров можно подключить соответственно несколько SIP клиентов для проверки. Я пользуюсь X-Lite 3. Вы можете выбрать любой доступный SIP клиент
Конечно, если вам стало интерестно выпустить данный сервис на волю, то есть в Интернет, то необходимо изменить некоторые настройки в системе и на вашем брандмауэре. Сначала заходим в раздел меню Asterisk SIP Settings. Здесь можно делать всевозможные настройки сервиса, но самое главное, это поставить кавычки, как стоят на рисунку.
Чесно говоря, я перерыл много документации о том, как за фаерволом настроить работу Asterisk’а. Пробовал указывать реальный IP адрес и локальные сети, пробовал и другие методы, но в итоге у меня звонило между машинами в локалке, но не звонило в Интернете, или ноборот. После нескольких неудачных експериментов я поставил кавычки как на рисунке (указал что сервер имеет реальный IP, хотя это не так и поставил кавычку НАТить звонки) и у меня все заработало. Не претендую на точность и все такое, но суть в том, что такой расклад у меня заработал.
После этого нужно не забыть сделать несколько манипуляций с фаерволом. В моем случае это Cisco ASA 5540. И на ней я сделал такие настройки:
static (dmz,internet) 204.204.204.204 10.0.10.5 netmask 255.255.255.255 — собственно статический NAT о котором я говорил ранее. dmz — интерфейс ДМЗ, где находится наш сервер. internet — интерфейс, который смотрит в мир.
access-list INTERNET-IN extended permit udp any host 204.204.204.204 eq sip — открываем SIP порт для соединения.
access-list INTERNET-IN extended permit udp any host 204.204.204.204 range 10000 10100 — открываем по 2 порта на каждый конкурирующий звонок.
После этих настроек у меня все прекрасно заработало. В следующих статьях я постараюсь описать настройку голосовой почты и еще нескольких интересных функций Asterisk’а.
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. Наши контакты .
Музыка ожидания (music-on-hold): использование mpg123voicemail: для него требуется sendmail, для отправки уведомлений по Email.call detail recording: Сервер Asterisk может записывать эту информацию в CSV файлы, в базу данных PostgreSQL или в SQLite. Обратите внимание на пакет дополнений asterisk_addons из SVN .odbc: для хранения и получения данных из других баз данных (отличных от MySQL).кодек speex: требуется установка дополнительных библиотек.Синтезатор речи: FestivalРаспознавание речи: интеграция с приложением Sphinx. Администратор,
- Установка и настройка AsteriskNOW может быть реализована специалистами нашей компании.
Установка дистрибутива AsteriskNow Одним из способов установки AsteriskNOW является установка по ниже описанным инструкциям:
1. Загрузите ISO-образ диска, используя эту ссылку .
2. Запишите образ на чистый CD или DVD. Если вам нужны инструкции как записать образ на диск - просто вбейте в Google "burn ISO to DVD" и вы увидите море инструкций или кликните по ссылке "Google burn ISO to DVD" в которой мы уже все сделали за вас:)
3. Выберите , на который он будет установлен AsteriskNOW . Вся информация с жесткого диска будет удалена при установке AsteriskNOW . Настройте компьютер на загрузку с оптического диска (в BIOS) . Вставьте диск в привод, включите компьютер. ВАЖНО: Вы должны иметь выход в интернет, чтобы загрузчик запустился корректно . Если вы устанавливаете AsteriskNOW с флешки, вы можете получить "kickstart"-ошибку. Если это произошло - просто несколько раз нажмите Enter, процесс установки пойдет в нормальном режиме.
4. Установка начинается с выбора версии, как показано на картинке ниже.
![](/uploads/63d-screen-shot-2014_05_29-at-10.14.48-am-733x396.png)
5. После выбора версии, система загрузит из сети необходимые для установки пакеты. Как правило, это занимает 3-5 минут.
![](/uploads/9717951-648x529.png)
6. После того, как система загрузится, вам будет предложено сконфигурировать сеть. Настройки по умолчанию, как правило, подходят в большинстве случаев инсталляции, по это просто нажмите TAB переведя каретку на слово "OK" на красном фоне, чтобы он подсветился серым и нажмите ENTER. Но вы естественно можете настроить сеть руками.
![](/uploads/f2bf2b-8b9kudwmppljybs23gvboe5zmvjjwgocuzlfou.png)
После того, как вы нажали "OK", система сконфигурирует параметры сетевого интерфейса.
![](/uploads/38dwubsmallgil.png)
7. После настройки сети вы будете перекинуты на экран настройки временной зоны. Если ваша система использует GMT (в очень редких случаях), нажмите пробел. Затем TAB чтобы перейти к выбору зоны. Используйте стрелки вверх и вниз, найдя подходящую вам временную зону. Нажимайте TAB до тех пор, пока слово OK на красном фоне не станет подсвечиваться серым, затем нажмите ENTER.
![](/uploads/dodob-pa0a38.png)
8. На следующем экране установщик попросить вас установить пароль на root"a. Помните, что использование сложных паролей крайне важно. Введите пароль, затем нажимте TAB, повторите ввод пароля и нажмите ENTER.
![](/uploads/juimg-ne6646.png)
9. Далее установщик проверит наличие зависимостей пакетов, отформатирует жесткий диск и начнет установку системы. Между процессом непосредственной установки и сбором информации может пройти некоторое время, просто немного подождите. Установщик будет показывать процентное выполнение процесса установки и примерное время ожидания до конца установки. Как правило, это занимает около 20 минут, затем система перезагружается.
![](/uploads/74dupicfy.png)
10. После перезагрузки будет произведено обновление всех компонентов системы до актуальных версий. Как правило, занимает 10-15 минут.
![](/uploads/ddsc-n-672x991.png)
11. После завершения установки, вы увидите командную строку linux с приглашением залогиниться в систему. Имя пользователя - "root" (без кавычек), пароль - введенный вами в процессе установки.
![](/uploads/583974037.png)
12. После того как вы залогинитесь, вы увидите IP-адрес вашей АТС.
![](/uploads/8b6mykimagesjox8.png)
13. С любого компьютера, находящегося в той же подсети введите это IP-адрес в браузере. При первом открытии веб-интерфейса АТС, вам будет предложено создать админскую учетную запись для веб-интерфейса.
14. Поздравляем. Вы успешно установили дистрибутив AsteriskNOW с веб-интерфейсом FreePBX.