• Базовая настройка asterisk после установки. Asterisk: установка и инструкция

    Linux-программа Asterisk нужна для создания серверов телефонии и АТС. У неё много полезных функций, которые будут к месту в любом офисе. Конференции, автоответчики, распределение звонков, текстовые сообщения , видео, голосовое меню и голосовая почта. Утилита поддерживает популярные протоколы связи. Их можно коммутировать. Но установка Asterisk на Ubuntu - дело не самое простое. Приложение загружается и настраивается через терминал. Поэтому надо изучить консольные команды.

  • Перейдите в папку «contrib/scripts/» при помощи команды «cd».
  • Откройте скрипт «get_mp3_source.sh».
  • Введите «make install».
  • Подождите, пока загрузятся архивы.
  • Установленный Asterisk надо настраивать и через меню, и через терминал. Поэтому откройте консоль.

  • Сделайте конфигурационные файлы. Можно в качестве теста. Команда - «make samples».
  • Активируйте функцию автозапуска - «make config ldconfig».
  • Теперь можно запустить сервис - «service asterisk start».
  • Или сразу открыть его в качестве демона - «/etc/init.d/asterisk start». Чтобы включить его консоль, введите команду «sudo asterisk -rvvvcd».
  • Пока для работы с Астериском вам нужны права суперюзера. Но лучше создать отдельного пользователя и предоставить ему доступ к функциям программы. Для этого:

  • Временно отключите утилиту - «service asterisk stop».
  • Добавьте нового юзера - «adduser [Имя]». Можете создать группу, которой предоставите нужные права. Она пригодится, если вы решите сделать нескольких пользователей для работы с разными службами Астериска.
  • Теперь нужна директория для запуска. Добавьте её при помощи команды «mkdir». После неё напишите параметр «-p» и путь к папке «/var/run/asterisk».
  • Чтобы приложение открывалось сразу под нужным юзером, отредактируйте файл «/etc/default/asterisk». Установите там следующие параметры: «AST_GROUP=»dialout»» и «AST_USER=»asterisk»».
  • Можно сделать это проще - впишите скрипт «sed -i ‘s/#AST_USER=»asterisk»/AST_USER=»asterisk»/g’ /etc/default/asterisk».
  • Предоставьте пользователю доступ ко всем папкам программы - «chown -R [Имя-юзера] [Путь-к-каталогу]».
  • Откройте файл «asterisk.conf», найдите в нём параметр «runuser» и укажите в нём только что созданного пользователя. Если делали группу, также перепишите строчку «rungroup».
  • Перезагрузите систему - «reboot».
  • Зайдите под именем Asterisk-юзера - «su [Имя]».
  • И запустите программу.
  • Чтобы посмотреть информацию о ней, введите «asterisk -rvvvv».
  • Утилита готова к работе. Дальнейшие действия зависят от того, в каких условиях будет использоваться станция. Есть несколько файлов, в которых расписана конфигурация:

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

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

    Что нужно сделать перед установкой Обратитесь к разделу , если Вам необходимо инсталлировать АТС, которая должна справляться с большой нагрузкой, и Вы не уверены потянет ли ее Ваше программное и аппаратное обеспечение.Операционные системы: сервер 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. Инсталляция Посмотрите раздел "Операционные системы на которых работает сервер Asterisk", чтобы получить дополнительные инструкции, которые зависят от используемой операционной системы.Как получить сервер Asterisk Asterisk таймер : нужен для конференции MeetMe и для IAX2 транков.Подготовка утилит сторонних разработчиков Обратите внимание на секцию утилиты сторонних разработчиков на основной странице посвященной , на предмет получения информации о следующих приложениях:
    Музыка ожидания (music-on-hold): использование mpg123voicemail: для него требуется sendmail, для отправки уведомлений по Email.call detail recording: Сервер Asterisk может записывать эту информацию в CSV файлы, в базу данных PostgreSQL или в SQLite. Обратите внимание на пакет дополнений asterisk_addons из SVN .odbc: для хранения и получения данных из других баз данных (отличных от MySQL).кодек speex: требуется установка дополнительных библиотек.Синтезатор речи: FestivalРаспознавание речи: интеграция с приложением Sphinx.

    Настройке Asterisk посвящены сайты, форумы и целые порталы типа voip-info.org. Но всегда есть люди, для которых эта тема – дремучий лес, а запустить продукт надо «вчера». Ещё полтора месяца назад я про Asterisk знал только то что он есть. Данный труд призван лишь несколько облегчить жизнь тем, кто окажется в такой же ситуации после меня. В нём могут быть ошибки любой степени «чайниковости». Если вы гуру настройки Asterisk – укажите на ошибку, я поправлю, потомки будут вам благодарны.

    Сначала было слово

    В некоторый момент времени моими усилиями стратегия развития инфраструктуры компании была перевёрнута буквально с ног на голову. Были очерчены цели и задачи и стало понятно, что нам нужна динамичная, мобильная серверная инфраструктура, чтобы экономить деньги, чтобы можно было в случае каких-то проблем быстро восстанавливаться и/или подниматься в другом месте, чтобы проще было ухаживать за железом и т.п.

    Затем было дело

    В общем, на бумаге всё было красиво и легко. Дело встало только за развёртыванием и настройкой Asterisk.
    Сначала были закуплены два простеньких сервера. Core i7-930, 12GB памяти и по 12ТБ на SATA-дисках. На эти серверы был установлен бесплатный Xen Server и развёрнуты виртуальные серверы и рабочие станции для удалённых сотрудников.
    В качестве внешнего хранилища используется QNAP-овский NAS, который достался в наследство.
    Терабайтные локальные хранилища нужны только для хранения медиа-банка, который довольно велик. Сами серверы все вместе весят меньше 3-х терабайт.
    Одним из серверов стал Asterisk на замену старичку Panasonic TDE-200. Т.к. компании необходима дешёвая связь, прямые номера в разных странах, и бесплатные переговоры между сотрудниками, то альтернативы ему за 12 шекелей в общем-то нет.

    День первый: Make World

    Настраивать Asterisk было решено на родной для Citrix Xen операционной системе CentOS. Тот же , только сбоку. Оговорюсь сразу: я всю жизнь админил Windows, а *nix-ами только “игрался” в виртуалках, не считая пары веб-серверов на железе. Поэтому, данное развёртывание Asterisk в Citrix Xen отдаёт некоторой наивностью с точки зрения умудрённых опытом людей.
    В общем, я пошел по проверенному пути: открывается на ноуте подробная how-to инструкция для чайников из официальных мануалов и выполняется на сервере буквально и безинициативно. Играть в героев-наладчиков можно будет позже, когда всё будет настроено и работать в состоянии “по умолчанию” и будет сделан первый full backup.

    День второй: yum install asterisk -y

    Не то чтобы я был очень удивлён, но, тем не менее, я пошёл к знакомому связисту за советом по настройке Asterisk, когда обнаружил, что живых астерисков аж три практически самостоятельных форка: 1.4, 1,6 и 1.8. У каждого из них свои тараканы и примочки. Т.к. я не обольщался надеждой одолеть астериск с наскоку, то решил поставить версию 1.4, как у друга, дабы иметь максимально возможную совместимость конфигов. Хотя, впоследствии, пришлось подниматься до 1.6 из-за отсутствия поддержки TCP в 1.4, когда возникла такая потребность.
    Для этого к CentOS был прилажен digium-овский репозиторий и Asterisk ставился из него.
    Установка прошла вполне ожидаемо, без сучка и задоринки. В основном, использовался толковый пошаговый roadmap с voip-info .
    Сразу же были поправлены iptables, чтобы разрешить трафик по SIP-портам.
    Не сразу же, но будущим поколениям рекомендую установить и настроить немедленно пакет по имени fail2ban . Совершенно не лишняя программа на сервере, выставленном в интернет. У меня через день после установки весь Тайвань в drop ушел, судя по iptables.

    День третий: ТЗ на функционал АТС

    Начинаем самое интересное – планирование. Перед любым процессом настройки надо записать и структурировать все пожелания заказчика и обязательно подписать соглашение, чтобы избежать в дальнейшем конфликтов вида “нет, я говорил совсем другое”. В моём случае заказчик - это компания, в которой я работаю, но это ничего не меняет. Пишем техническое задание на функционал, обсуждаем его с ответственными людьми, утрясаем разногласия и подписываем финальный вариант и приступаем к настройке Asterisk.
    ТЗ на конфигурацию получилось такое:

    • Нумерация телефонов четырёхзначная.
    • Первая цифра номера - признак страны расположения офиса.
    • Нумерация в каждом отделе начинается с первой цифры очередной сотни.
    • Каждый отдел является отдельной звонковой группой.
    • Если вызываемый абонент любым образом недоступен для вызова, то звонок перекидывается на всю группу.
    • Логика обслуживания входящих вызовов:
    • Поднять трубку.
    • Проиграть приветствие.
    • Проиграть рекламу про текущие акции.
    • Проиграть варианты вызова различных отделов или предложить набрать номер абонента.
    • Начиная с пункта 2 ожидать ввода каких-либо команд.
    • После окончания п.4 ждать ввода команд ещё 10 секунд.
    • В случае отсутствия команд снова проиграть варианты вызова.
    • Если абонент всё-равно тупит, то перекинуть звонок на секретаря.
    • Пользователям, которым необходим такой сервис, прикрутить голосовую почту. В этом случае, если пользователь любым образом недоступен для вызова, перекинуть звонок на голосовую почту.
    • По умолчанию, разрешены вызовы только на Россию и Италию - страны, где в основном работает наша компания. Остальные направления открываются по мере надобности самыми узкими масками, т.к. все мы помним страшные истории про “кубинских телефонистов” и не хотим, чтобы в один прекрасный день у нас АТС внезапно во все свои 50 каналов начала звонить в Сьерра-Леоне по 14 долларов в минуту для каждого канала.

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

    День четвёртый: nano sip.conf

    Начинается самое интересное: процесс настройки Asterisk.
    Чтобы не затягивать и без того длинную статью, отягощая её подробным описанием мук начальной конфигурации и последующего тюнинга, я просто покажу текущие мои конфиги с комментариями что к чему.


    context=default ;контекст по умолчанию
    allowguest=no ;никаких гостей, мы никого не ждём
    allowoverlap=no ;Этот параметр определяет разрешаем мы или нет передачу вызова с дополнительными цифрами. Мы – не разрешаем.
    alwaysauthreject=yes ;Этот параметр означает, что все ошибки для внешнего клиента выглядят одинаково – ошибка авторизации. Призван осложнять взлом АТС.
    useragent=Orgue de Barbaris ;Это – как мы представляемся у других. Я назвался по имени первого патефона, чтобы облегчить техподдержке провайдеров поиск диалогов с моей АТС, т.к. периодически приходится с ними общаться.
    defaultexpiry=360 ;Интервал обязательной перерегистрации клиентов.
    callevents=yes ;Это на будущее, чтобы клиент мог поиграть в управление music on hold
    limitonpeer=yes ;Считаем исходящие и входящие вызовы пиров вместе.
    tcpenable=yes ;Разрешаем TCP протокол для SIP.
    rtptimeout=60 ;Сколько времени клиент может не откликаться, прежде чем будет кикнут из системы.
    language=ru ;Язык системы. Используется для голосового меню.
    bindport=5060 ;Порт по умолчанию. Можно изменить для усложнения вычисления и взлома АТС, но решение спорное.
    bindaddr=0.0.0.0 ;у меня стоят нули, т.к. АТС имеет два интерфейса и на обоих висят клиенты.
    srvlookup=yes
    tos_sip=cs3 ; http://www.voip-info.org/wiki/view/Asterisk+sip+tos
    tos_audio=efdisallow=all ;сначала запрещаем все кодеки
    allow=alaw ;затем, разрешаем только те, что хотим использовать. Порядок значения не имеет.
    allow=g729
    allow=g723
    allow=ulaw

    canreinvite=no ;Этот параметр запрещает клиентам общаться напрямую. Общение происходит только через сервер. У меня это сделано так потому что мобильные клиенты используют платные клиенты с протоколом g.729а, а стационарные сидят на бесплатных клиентах без оного. Поэтому, я предпочёл напрячь сервер транскодингом alawg.729a на лету в пользу качества связи для мобильных клиентов. Тем более что Core i7-930 вообще не замечает этой нагрузки.

    Это статья заметка, на случай если мне нужно будет вспомнить, как настроить Asterisk для приема и отправки вызовов. Этой заметки должно хватить для настройки офисной станции на ip pbx Asterisk . До сих пор у меня не было сильного понятия и опыта, как настроить Asterisk для работы не используя FreePbx , то есть, используя только конфигурационные файлы и консоль. Да и сейчас я только учусь этому. В интернете все настройки сводятся к решению той или иной задачи, но я не увидел статьи способной дать хотя бы базу для минимальной настройки IP станции. Может плохо искал.

    Итак, я собрал и установил asterisk в папке /etc/asterisk уйма конфигурационных файлов. Что же дальше?

    1. Возможность внутренним абонентам совершать вызовы друг другу

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

    3. Настройка возможности совершать вызовы абонентам на городские и междугородние номера. И принимать вызовы из города.

    Вот три основные задачи, которые нужно решить, естественно схема может быть разной. То есть абоненты могут объединяться в группы, внешних операторов связи может быть несколько, входящий вызов может быть отправлен на автоинформатор, очередь, а может быть на то и другое. Схема сервисов и услуг может различаться и усложняться, но три первых условия будут выполняться в любом случае.

    Поэтому первое, что мы делаем - создаем внутренних абонентов (peer) в файле sip.conf

    Абонент А будет иметь следующие настройки :

    Disallow=all
    allow=ulaw
    allow=alaw
    type=friend
    username=101
    secret=password
    qualify=yes
    context=101
    callerid=101
    host=dynamic
    call-limit=1
    canreinvite=yes
    accountcode=101
    amaflags=billing
    deny=0.0.0.0/0
    permit=192.168.0.66

    Где:
    disallow=all , запрещаем использовать все кодеки кроме G.711
    allow=ulaw
    allow=alaw

    type=friend, этот параметр может принимать три значения:

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

    - user запись, которая может только совершать входящие вызовы

    - friend запись, которая одновременно и peer и user
    username=101
    secret=password
    Логин и пароль соответственно

    Периодически отправлять SIP сообщение типа Options, для проверки мониторинга доступности устройства для регистрации, полезно использовать при работе через NAT для сохранения значений в таблице трансляций

    Имя контекста, с правилами маршрутизации

    АОН нашего номера

    host=dynamic
    host ip с которого будет происходить регистрация

    call-limit=1
    (callcounter)
    Ограничение одновременных вызов, здесь можно установить количество каналов

    canreinvite=yes
    (directmedia)

    Этот параметр отвечает за процедуру RE- Invite , если no, то все вызовы будут проходить через Asterisk , если yes RTP поток будет отправляться между двумя устройствами минуя Asterisk

    accountcode=101
    amaflags=billing

    CDR запись для поля accountcode будет иметь значение 101
    Значение поля AMA flag для исходящих вызовов от этого SIP пользователя

    deny=0.0.0.0/0
    permit=192.168.0.66
    ACL ip, кому разрешим регистрацию

    Аналогично для абонента Б :

    Disallow=all
    allow=ulaw
    allow=alaw
    type=friend
    username=102
    secret=password
    qualify=yes
    context=102
    callerid=102
    host=dynamic
    call-limit=1
    canreinvite=yes
    accountcode=102
    amaflags=billing
    deny=0.0.0.0/0
    permit=192.168.0.67

    Еще часть опций в пире которая может быть полезна:

    transport=tcp,udp
    Могу работать не только используя udp, требует установки tcpenable=yes в general
    rtptimeout=180
    rtpholdtimeout=420

    Полезно для SIP клиентов, которые не выполняют Hangup при закрытии или отключении. В данном случае RTP сессия сможет сброситься самостоятельно по таймауту, rtpholdtimeout – если вызов на удержании

    nat=force_rport,comedia

    Если устройство находится за NAT, то фиксируем работу через rport, отправляем RTP пакеты обратно на IP адрес и порт, с которого они были получены, игнорируя информацию из SDP

    defaultexpiry=60
    Срок действия регистрации в секундах для входящих и исходящих регистраций

    dtmfmode=rfc2833

    Как будем работать с DTMF сигналами

    1. Итак, задача один, настроить маршрутизацию между sip клиентами 101 и 102, в простейшем варианте решается одной строчкой в файле sip.conf и конфигах по include


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

    sip.conf удобно эксплуатировать вот так:

    Include => in_out_peer_local

    Теперь абонент 101 сможет общаться с абонентом 102 и наоборот 102 сможет позвонить 101

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

    То есть создадим транк
    type=peer
    host=XX.XXX.XXX.XX
    port=5060
    fromdomain=ip нашей станции
    nat=no
    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    canreinvite=no
    ;allow=g722
    trustrpid=yes
    sendrpid=yes
    dtmfmode=rfc2833
    qualify=yes
    insecure=invite,port
    deny=0.0.0.0/0.0.0.0
    permit=XX.XXX.XXX.XX/255.255.255.255
    context=provide

    Настройки транка очень похожи на настройки пира, в принципе это и есть пир, важные опции
    fromdomain – устанавливаем fromdomain в sip пакете, чтобы можно было понять, куда вернуть sip пакеты нашей станции
    trustrpid=yes
    sendrpid=yes

    Доверять или нет полученному Remote- Party- ID

    insecure=invite,port

    Не требуем аутентификацию входящих сообщений INVITE, не проверяем номер порта только соответствие ip адреса

    3. Дело за малым, как только транк активирован, нужно прописать исходящую маршрутизацию для совершения вызовов абонентам А и Б
    Стандарт де факто как бы гласит всегда сначала настраивать исходящую связь

    Создаем контекст для совершения исходящих вызовов

    Для исходящих вызовов на город


    exten => _XXXXXX,1,Dial(SIP/ provider /${EXTEN})
    exten => _XXXXXX,n,Hangup

    Для исходящих вызовов на междугородние направления


    exten => _8.,1,Dial(SIP/ provider /${EXTEN})
    exten => _8.,n,Hangup

    После того как исходящая связь заработала, настраиваем входящую

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


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

    Аналогичным образом настраивается любая станция по принципу рассмотренных пунктов