• Телефония 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. Наши контакты .


    Обратитесь к разделу , если Вам необходимо инсталлировать АТС, которая должна справляться с большой нагрузкой, и Вы не уверены потянет ли ее Ваше программное и аппаратное обеспечение.Операционные системы: сервер Asterisk прекрасно работает на Linux системах, также была проделана большая работа участниками проекта по портированию сервера Asterisk на BSD платформу, включая FreeBSD, OpenBSD и Mac OS X. Однако, драйвер zaptel и драйверы ISDN каналов могут не поддерживаться на этих платформах. Обратитесь к разделу Операционные системы для сервера Asterisk, чтобы получить, специфичной для каждой операционной системы, информацию.В качестве альтернативы, Вы можете использовать методы, описанные на нижеприведенных страницах: Asterisk Install CDROM Asterisk Bootable CDROMИнструкция по быстрой установкеПрочтите раздел 10-минутный обзор сервера Asterisk, если Вы хотите узнать, что же может делать сервер Asterisk. В противном случае, этот раздел можно пропустить.Прочтите раздел Пошаговая инструкция по инсталляции Asterisk, где найдете информацию, начиная с настройки линукса, до первого телефонного вызова червез Ваш Asterisk. http://www.automated.it/guidetoasterisk.htm http://asterisk.net.au/ Руководство по инсталляции сервера Asterisk от гуру этого дела Требования к системе Вам не нужно ни какое специфичное оборудование для инсталляции и запуска сервера Asterisk. Необходимости в звуковой карте нет.Вам необходимо установить следующие программные пакеты перед компиляцией Asterisk: Исходники ядра (kernel sources)Заголовочные.h файлы для Вашего ядра (kernel headers)bison (необходим для обработки выражений в файле )Пакеты: openssl и openssl-dev или libssl-devlibnewt: необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у Вас не будет приложения astman, которая является отдельной программой.Вам более не нужно устанавливать пакеты "readline" и "readline-devel" для Asterisk. Сервер поставляется со своей реализацией пакета "readline", который называется "editline".Если Вы планируете использовать дополнения для работы с базой mysql, установите пакеты для mysql, mysql_devel & mysql serverЕсли Вы планируете использовать интерфейсные карты от Digium, то Вам необходимо будет установить модуль ядра для поддержки драйвера устройства Zaptel, перед тем, как Вы сможете использовать их в Asterisk. Однако, может вы хочется сначала скачать и установить Asterisk - протестировать работу SIP и IAX телефонов - и уже после этого добавить поддержку для ваших карт Digium. Обратите внимание на секцию утилиты сторонних разработчиков на основной странице посвященной , на предмет получения информации о следующих приложениях:
    Музыка ожидания (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. Установка начинается с выбора версии, как показано на картинке ниже.




    5. После выбора версии, система загрузит из сети необходимые для установки пакеты. Как правило, это занимает 3-5 минут.



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



    После того, как вы нажали "OK", система сконфигурирует параметры сетевого интерфейса.



    7. После настройки сети вы будете перекинуты на экран настройки временной зоны. Если ваша система использует GMT (в очень редких случаях), нажмите пробел. Затем TAB чтобы перейти к выбору зоны. Используйте стрелки вверх и вниз, найдя подходящую вам временную зону. Нажимайте TAB до тех пор, пока слово OK на красном фоне не станет подсвечиваться серым, затем нажмите ENTER.



    8. На следующем экране установщик попросить вас установить пароль на root"a. Помните, что использование сложных паролей крайне важно. Введите пароль, затем нажимте TAB, повторите ввод пароля и нажмите ENTER.



    9. Далее установщик проверит наличие зависимостей пакетов, отформатирует жесткий диск и начнет установку системы. Между процессом непосредственной установки и сбором информации может пройти некоторое время, просто немного подождите. Установщик будет показывать процентное выполнение процесса установки и примерное время ожидания до конца установки. Как правило, это занимает около 20 минут, затем система перезагружается.



    10. После перезагрузки будет произведено обновление всех компонентов системы до актуальных версий. Как правило, занимает 10-15 минут.



    11. После завершения установки, вы увидите командную строку linux с приглашением залогиниться в систему. Имя пользователя - "root" (без кавычек), пароль - введенный вами в процессе установки.




    12. После того как вы залогинитесь, вы увидите IP-адрес вашей АТС.




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


    14. Поздравляем. Вы успешно установили дистрибутив AsteriskNOW с веб-интерфейсом FreePBX.