Это статья заметка, на случай если мне нужно будет вспомнить, как настроить 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
Аналогичным образом настраивается любая станция по принципу рассмотренных пунктов
Настройка c нуля FreePBX – современного полнофункционального веб-интерфейса для управления VoIP телефонией Asterisk – не представляет сложности даже для рядового пользователя. Достаточно следовать пошаговой инструкции, которая приведена в нашей статье.
Интерфейс упрощает управление VoIP телефонией и настройку Asterisk за счет визуального представления данных. Но прежде чем перейти к установке, нужно иметь хотя бы общее представление о предмете. Сразу же отметим, что основное удобство названной системы заключается в том, что пользователю нет нужды исправлять множество текстовых файлов с настройками вручную, как это было раньше.
Последней версией пакета является FreePBX 13. По сути, это программная оболочка. Она позволяет управлять VoIP телефонией и выполнять настройку Asterisk без специальных знаний в области программирования. Если говорить упрощенно, она переводит программный язык, понятный машине, в визуальную информацию, которая понятна пользователю, и наоборот. Чтобы выполнить настройку FreePBX с нуля, оболочку нужно установить на компьютер, который будет использоваться для работы с VoIP телефонией.
Вот пошаговая инструкция:
1. Скачайте дистрибутив FreePBX 13 Distro. Существует несколько версий продукта: для разной разрядности операционной системы. Выбор 32 или 64-битной версии зависит от вашего программного обеспечения. Новичкам лучше не экспериментировать и обойти beta-версии Asterisk PBX стороной.
2. Запишите на диск или флешку образ системы. Для этого используйте стандартные утилиты, которые есть в каждом компьютере.
3. После записи загрузите машину с этого диска. Для этого измените параметры загрузки системы. Порядок действий зависит от конкретной версии BIOS. Обычно всю необходимую информацию можно найти в документации к своему компьютеру. Если все сделано правильно, то появится меню установки программы.
4. Выберите версию сервиса Asterisk PBX и режим, в котором будут работать жесткие диски. Доступны следующие варианты:
5. Выбрав нужный режим, переходим к настройкам Сети. Если вы используете DHCP-сервер (динамические IP-адреса), а в большинстве случаев это именно так, то просто нажмите ОК. При статическом IP укажите настройки для вашей Сети.
Установка FreePBX завершена. Теперь можно перейти непосредственно к настройке телефонии.
Адрес веб-интерфейса тот же, что и адрес компьютера с установленным FreePBX. Чтобы его узнать, выполните команду ifconfig в консоли компьютера, на котором установлен веб-интерфейс. Так вы увидите настройки всех сетевых интерфейсов машины. Просто введите нужный IP-адрес в строке браузера и нажмите enter.
Главная страница включает 3 основных раздела:
Для доступа к первым двум разделам придется ввести логин и пароль, которые вы задали при установке. Есть возможность настройки FreePBX на русском языке. Для этого нажмите кнопку Language справа в верхнем углу окна и выберите нужный язык.
В этом разделе можно управлять модулями FreePBX. То есть предусмотрена возможность установки новых, обновление и удаление имеющихся, а также отключение работающих модулей. Новые доступны в 4 источниках:
Есть возможность использовать в качестве источника и ваш ПК. Для этого предусмотрена кнопка Uploud modules. А чтобы установить или обновить модуль, следуйте пошаговой инструкции:
1. Выберите подходящий источник.
2. Воспользуйтесь функцией Check Online.
3. После обновления списка доступных модулей напротив каждого из них появится один их следующих комментариев:
Предусмотрена возможность одновременной установки или обновления всех доступных модулей, для этого нажмите соответствующую кнопку.
Этот раздел позволяет создать внутренние номера FreePBX. Сначала выберите технологию для подключения. Оптимальный вариант – использовать протокол SIP. Для новичков при создании внутреннего номера достаточно задать 3 настройки:
Остальные функции помогут опытным пользователям кастомизировать интерфейс под свои нужны и автоматизировать большинство рутинных операций. Чтобы получить краткую справку по той или иной настройке, нажмите на знак вопроса возле нее.
Функция позволяет объединить внутренние номера в группу. Набрав единственный номер, можно одновременно позвонить хоть на все внутренние номера из этой группы. Это очень удобно, когда нужно постоянно связываться сразу с несколькими абонентами. По умолчанию используется номер 600-699. Это функция работает по следующему принципу:
Доступно несколько схем распределения вызовов:
Продвинутые пользователи могут вволю поиграться с настройками – тут их 18 штук. Напротив каждой опции есть знак вопроса, нажатие на который расскажет, за что отвечает та или иная функция.
Модуль позволяет настроить внешние линии - транки, через которые будут идти звонки в телефонную сеть общего пользования. Подробно по настройкам можно проконсультироваться у оператора связи, который и предоставляет доступ к этим линиям. Для наших целей достаточно ознакомиться с настройками SIP транка FreePBX. По умолчанию доступны следующие опции:
Используется для создания маршрутов входящих вызовов. Справа здесь находятся уже созданные маршруты. Настраивают их по аналогии с другими пунктами меню.
Используется для создания маршрутов исходящих вызовов. Модуль позволяет задать правила набора номера и его модификацию перед отправкой оператору. Воспользоваться этими маршрутами может каждый пользователь.
Модуль служит для ограничения исходящих звонков с того или иного внутреннего номера. Можно запретить конкретному внутреннему номеру или целой группе доступ к голосовой почте, перехват вызова или парковку звонка. После создания определенного ограничения его нужно применить в настройках конкретного внутреннего номера.
Этот модуль используют, чтобы объединить несколько номеров в один. Также удобно использовать эту функцию для переадресации внешних или внутренних вызовов. Подобное распределение звонков позволит всегда быть на связи, даже если нужно отойти от рабочего места.
Это система по управлению голосовыми сообщениями. С подобной системой сталкивался каждый, когда для доступа к соответствующему пункту меню приятный голос просил нажать ту или иную цифру. Автоответчик формирует у клиента благоприятное первое впечатление. Это электронный секретарь, который вежливо классифицирует вопрос пользователя и только затем соединяет его с нужным специалистом. Подобная тактика позволяет избавиться от так раздражающих клиентов фраз: «Вы попали не в тот отдел, позвоните по такому-то номеру».
Опция представляет собой аналог «групп вызовов». Но при этом она дает широкие дополнительные возможности.
Чтобы подробно изучить все модули, придется ознакомиться с официальным руководством по работе с системой. Скачать его можно на официальном сайте Asterisk. Однако ниже приведена простая пошаговая инструкция по настройке FreePBX с нуля, которая позволит использовать базовые опции и приступить к работе:
Минимальная настройка FreePBX с нуля завершена. Теперь можно совершать исходящие звонки и принимать входящие вызовы. Вами был создан внутренний и зарегистрирован внешний номер. А также настроено приветствие для входящих вызовов.
Настройке Asterisk посвящены сайты, форумы и целые порталы типа voip-info.org. Но всегда есть люди, для которых эта тема – дремучий лес, а запустить продукт надо «вчера». Ещё полтора месяца назад я про Asterisk знал только то что он есть. Данный труд призван лишь несколько облегчить жизнь тем, кто окажется в такой же ситуации после меня. В нём могут быть ошибки любой степени «чайниковости». Если вы гуру настройки Asterisk – укажите на ошибку, я поправлю, потомки будут вам благодарны.
В некоторый момент времени моими усилиями стратегия развития инфраструктуры компании была перевёрнута буквально с ног на голову. Были очерчены цели и задачи и стало понятно, что нам нужна динамичная, мобильная серверная инфраструктура, чтобы экономить деньги, чтобы можно было в случае каких-то проблем быстро восстанавливаться и/или подниматься в другом месте, чтобы проще было ухаживать за железом и т.п.
В общем, на бумаге всё было красиво и легко. Дело встало только за развёртыванием и настройкой Asterisk.
Сначала были закуплены два простеньких сервера. Core i7-930, 12GB памяти и по 12ТБ на SATA-дисках. На эти серверы был установлен бесплатный Xen Server и развёрнуты виртуальные серверы и рабочие станции для удалённых сотрудников.
В качестве внешнего хранилища используется QNAP-овский NAS, который достался в наследство.
Терабайтные локальные хранилища нужны только для хранения медиа-банка, который довольно велик. Сами серверы все вместе весят меньше 3-х терабайт.
Одним из серверов стал Asterisk на замену старичку Panasonic TDE-200. Т.к. компании необходима дешёвая связь, прямые номера в разных странах, и бесплатные переговоры между сотрудниками, то альтернативы ему за 12 шекелей в общем-то нет.
Настраивать Asterisk было решено на родной для Citrix Xen операционной системе CentOS. Тот же , только сбоку. Оговорюсь сразу: я всю жизнь админил Windows, а *nix-ами только “игрался” в виртуалках, не считая пары веб-серверов на железе. Поэтому, данное развёртывание Asterisk в Citrix Xen отдаёт некоторой наивностью с точки зрения умудрённых опытом людей.
В общем, я пошел по проверенному пути: открывается на ноуте подробная how-to инструкция для чайников из официальных мануалов и выполняется на сервере буквально и безинициативно. Играть в героев-наладчиков можно будет позже, когда всё будет настроено и работать в состоянии “по умолчанию” и будет сделан первый full backup.
Не то чтобы я был очень удивлён, но, тем не менее, я пошёл к знакомому связисту за советом по настройке 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.
ТЗ на конфигурацию получилось такое:
На первый взгляд задание простое и настройка Asterisk не займет много времени, а на практике на его согласование ушло довольно много крови. Особенно, на согласование запрета всех направлений, кроме явно разрешенных. С этим клиенту пришлось согласиться только перед лицом неизбежной, в противном случае, необходимости конфигурации VPN на каждом подключающемся к АТС устройстве. Просто я стараюсь придерживаться максимально простых и понятных конфигураций, а клиенту всегда кажется, что добавить какой-то функционал к системе - это “всего-лишь пару кнопок нажать”.
Начинается самое интересное: процесс настройки 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а, а стационарные сидят на бесплатных клиентах без оного. Поэтому, я предпочёл напрячь сервер транскодингом alaw<->g.729a на лету в пользу качества связи для мобильных клиентов. Тем более что Core i7-930 вообще не замечает этой нагрузки.
Добрый день, в этой статье я расскажу как установить самый популярный сервер VoIP телефонии Asterisk. С помощью данного сервера Вы сможете организовать телефонию в офисе, дома, или реализовать автоматическое оповещение, но об этом я расскажу в других статьях. И так приступим к установки asterisk на ubuntu server.
Установить Asterisk на Ubuntu Server крайне просто, понадобится всего одна команда:
Первым делом после установки Asterisk, необходимо отключить возможность принимать звонки анонимно. Для этого открываем файл sip.conf и снимаем комментарий со строки allowguest=no, так как по умолчанию там стоит Yes. Кстати для поиска данной строки в nano можно нажать Ctrl+W и ввести искомую часть строки и нажать на Enter, если таких слов несколько в тексте то, для продолжения поиска нажать Ctrl+W и Enter.
В этом же файле можем указать провайдеров 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
После добавления этих записей сохраняем файл и выходим. Для того, чтоб применить настройки необходимо либо перезапустить сервер, либо сказать ему, чтоб он перечитал настройки. Этот способ лучше, так как если сервер у Вас действующий, то звонки которые сейчас идут не оборвутся.
Теперь настроим телефон или софтфон. Я использую X-lite, программных телефонов достаточно много, можете использовать на Ваш вкус. Настройки X-lite выполните как на скриншоте.
Для проверки правильности выполненных настроек в CLI Asterisk (далее просто CLI) выполните команду sip show peers
Первым делом сделаем копию оригинального файла extension.conf
Теперь в extension.conf пропишем правило для исходящего звонка.
В CLI выполним команду reload, для применения настроек. И теперь попробуем совершить звонок.
Звонок прошел, теперь надо настроить входящий звонок. Для этого нужно прописать правило набора.
На этом простая настройка заканчивается, в следующих статьях я расскажу как сделать запись разговоров, настроить IVR, сделать CallBack(обратный звонок) с сайта и многое другое.
Linux-программа Asterisk нужна для создания серверов телефонии и АТС. У неё много полезных функций, которые будут к месту в любом офисе. Конференции, автоответчики, распределение звонков, текстовые сообщения , видео, голосовое меню и голосовая почта. Утилита поддерживает популярные протоколы связи. Их можно коммутировать. Но установка Asterisk на Ubuntu - дело не самое простое. Приложение загружается и настраивается через терминал. Поэтому надо изучить консольные команды.
Установленный Asterisk надо настраивать и через меню, и через терминал. Поэтому откройте консоль.
Пока для работы с Астериском вам нужны права суперюзера. Но лучше создать отдельного пользователя и предоставить ему доступ к функциям программы. Для этого:
Утилита готова к работе. Дальнейшие действия зависят от того, в каких условиях будет использоваться станция. Есть несколько файлов, в которых расписана конфигурация:
С Asterisk вы создадите АТС любой сложности. В нём много полезных функций и модулей. После установки и настройки вы сможете взаимодействовать со станцией при помощи клиентского программного обеспечения. Например, Linphone.