- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF104:Asterisk
Материал из Linuxformat.
- AsteriskNOW Разверните собственный VoIP-сервер за 10 минут (или около того)
Содержание |
AsteriskNOW: короткий путь в мир VoIP
- Много слышали о цифровой телефонии, но, напуганные сложностью Asterisk, не решались попробовать? AsteriskNow обещает упростить эту задачу, а Сергей Яремчук подскажет, что нужно делать.
Несмотря на популярность различных систем обмена информацией, которые подарил нам Интернет, таких как электронная почта и службы мгновенного обмена сообщениями, ни одно из них не сможет сравниться с обычным телефоном. Передача голоса поверх IP-сетей изменило само понятие «телефон». Пришло время и вам установить свой сервер IP-телефонии.
Андрей Боровский делал обзор интернет-телефонов (в том числе использующих протокол SIP), в LXF102 (Февраль 2008).
Самым популярным решением для организации собственного VoIP-сервера является Asterisk IP-PBX (http://www.asterisk.org). Этот проект возник, можно сказать, совершенно случайно: его создатель Марк Спенсер [Mark Spencer] не имел достаточно денег, чтобы купить для своей компании обычную АТС, и потому вынужден был написать ее программную реализацию. Выпускается Asterisk под двойной лицензией. Кроме GNU GPL, возможно создание закрытых модулей, содержащих проприетарный код. Такой подход разрешает включить поддержку закрытых кодеков и оборудования. Открытость кода способствовала быстрому росту популярности нового продукта – как среди разработчиков, так и среди пользователей.
В репозиториях основных дистрибутивов Linux уже есть пакеты Asterisk, но разработчики дополнительно предлагают готовое решениe AsteriskNOW (http://www.asterisknow.org), представляющее собой самодостаточный специальный дистрибутив GNU/Linux, в который включе все, что нужно для Asterisk, в том числе GUI для администрирования и некоторые другие утилиты, необходимые для комфортной работы, которые иначе пришлось бы устанавливать самостоятельно. Никаких других необязательных компонентов AsteriskNOW не содержит. Несмотря на то, что пока дистрибутив имеет статус «бета», это вполне стабильное и законченное решение, базирующееся на весьма интересной разработке – rPath Linux (http://www.rpath.com). Собранный при помощи rPath rBuilder, AsteriskNOW не потребует забот, связанных с обновлениями ядра и системными зависимостями, и отличается простотой управления и настройки.
Установка
На странице загрузки проекта (http://www.asterisknow.com/downloads) доступны ISO-образы для 32- и 64-битных процессоров, а также для виртуальных машин Xen и VMware Player. Дистрибутив снабжен удобным инсталлятором, в котором угадывается Anaconda; русский язык поддерживается, поэтому просто следуйте подсказкам мастера на экране. Во время установки предстоит выбрать режим: Express Installation или Expert. В первом случае мастер сам разобьет диск, создаст нужные разделы и установит все программы. При аккуратном использовании за данные можно не беспокоиться – программа предложит удалить все разделы или разделы с Linux, или же использовать свободное место. Вариант Expert – для тех, кто хочет получить полный контроль над процессом установки, включая состав пакетов и создание разделов жесткого диска. В этом случае AsteriskNOW можно установить для экспериментов в качестве второй системы, а GRUB обеспечит загрузку всех найденных ОС. По ходу процесса нужно будет указать сервисы, доступ к которым будет разрешен межсетевым экраном.
Управляй... сервером
После установки и перезагрузки компьютера вас встретит консоль управления AsteriskNOW. Предусмотрено три пункта, используя которые, можно обновить, выключить и перезагрузить систему. Еще два пункта позволяют перезапустить Asterisk и выйти в консоль сервера Asterisk (для этого можно просто нажать Alt+F9). Никаких паролей при выполнении этих действий не спрашивают, поэтому рабочий сервер желательно устанавливать в охраняемом помещении и без подключенной периферии. Основным методом настройки является использование web-интерфейса, а если его возможностей недостаточно, доступен вход и по SSH. Следует учитывать, что для ввода команд, требующих прав суперпользователя, необходимо использовать sudo или задать пароль root:
$ sudo passwd root
а затем использовать команду sudo su для получения нужных прав.
Теперь наберите в строке браузера IP-адрес сетевого интерфейса AsteriskNOW, примите сертификат и регистрируйтесь, используя имя пользователя admin и пароль, указанный при установке сервера. Весь обмен происходит по защищенному SSL-каналу, поэтому можно не беспокоиться о перехвате данных. Основное поле предназначено для настройки работы Asterisk. Управление же обновлениями самого сервера осуществляется при помощи web-интерфейса rPath, в который можно перейти нажатием ссылки System Configuration. Правда, здесь есть небольшая путаница. Для доступа к настройкам rPath требуется ввести то же имя пользователя – admin, но другой – предустановленный – пароль, password. После первой регистрации последует запрос на изменение этого пароля, для чего в появившемся окне введите старый пароль и (два раза) новый. Далее указывается почтовый адрес, на который будет приходить автоматическое извещение и сигналы тревоги, информирующие администраторов о состоянии системы. Следующий шаг позволит изменить настройки сетевых интерфейсов (рис. 1).
Последнее доступное меню Backup and Restore отвечает за создание резервных копий и восстановление настроек, в случае такой необходимости. Здесь указывается расписание резервирования, ресурс (NFS, SMB или локальный диск), имя пользователя и пароль, требуемые для доступа по сети.
Теперь мы получаем доступ к интерфейсу управления сервером, при помощи которого можно выполнить все операции, связанные с его обслуживанием: управление учетными записями, запуск/остановку сервисов, настройку, просмотр журналов, поиск пакетов, обновление и прочее. Все понятно и логично, поэтому, несмотря на отсутствие локализации, разобраться с настройками сможет и администратор, не знакомый с Unix-системами. Обращаться к командной строке понадобится только лишь в исключительных случаях.
Настраиваем Asterisk
Теперь самое время перейти к тому, для чего, собственно, мы и устанавливали AsteriskNOW: настройкам Asterisk. Для начала создадим учетные записи, которым будет разрешено совершать звонки, подключаясь к нашему серверу. Вообще, все настройки Asterisk можно производить тремя способами: используя соответствующие пункты меню GUI, редактируя файлы конфигурации в пункте File Editor, или в консоли при помощи nano или vi. Первый вариант более наглядный и достаточен для большинства операций, так что перейдите во вкладку User (рис. 2).
По умолчанию здесь присутствует только одна запись: 8500 – Check VoiceMail, она предназначена для проверки пользователями наличия сообщений в своем ящике голосовой почты. Нажмите New и начните заполнение правил вызовов [Calling Rules]. В поле Extension [Добавочный номер] вводим набор цифр, который будет ассоциироваться с данным пользователем, в поле Name – его имя, а в Password – пароль для доступа к учетной записи SIP/IAX2. Если пользователю будет доступна голосовая почта, пароль для доступа к ней нужно указать в поле VM Password. Строка Caller ID содержит информацию, которая будет высвечиваться на абонентском телефоне при звонке другому пользователю.
Сервер AsteriskNOW автоматически обнаруживает адаптеры для соединения с аналоговыми телефонными сетями. При наличии такого выхода, номер абонента в обычной телефонной сети вводится в Analog Phone [Аналоговый телефон]. Поле Dial Plan определяет, к какому номерному плану будет подключена вновь создаваемая запись. После установки будет доступен только один вариант – Dial Plan 1, его мы и выбираем в раскрывающемся списке. Теперь в поле Extension Options флажками отмечаем все действия и протоколы, которые будут доступны данному пользователю. По умолчанию разрешены все кодеки; отобрать нужные можно, щелкнув по надписи disallow/allow. По окончании редактирования нажмите кнопку Save. Аналогично добавляются и остальные пользователи. Кстати, во вкладке Users есть кнопка для выхода на сайт, где администраторы смогут заказать телефоны Polycom у реселлеров Digium.
Все настройки пользователей сохраняются в файле users.conf; просмотреть его можно, перейдя в File Editor (рис. 3). Если установить все флажки в User, в файле появится такая запись, в которой вы увидите знакомые поля:
[6001] callwaiting=yes cid_number=6001 context=numberplan-custom-1 email=sergej@localhost fullname=sergej group= hasagent=yes hasdirectory=yes hasiax=yes hasmanager=yes hassip=yes hasvoicemail=yes host=dynamic mailbox=6001 secret=password threewaycalling=yes zapchan= hasagent=yes registeriax=yes registersip=yes canreinvite=yes nat=yes dtmfmode=rfc2833 vmsecret=7777
И всего пара строк в extension.conf:
[numberplan-custom-1] plancomment=DialPlan1 include=default
Теперь зарегистрированные пользователи нашего сервера Asterisk могут звонить друг другу.
Связь с внешним миром
Пока что звонки могут совершаться внутри сервера; необходимо настроить «выход наружу». Для этого перейдем в пункт Service Providers [Поставщики услуг]. Нажмите «Add Service Provider», затем в поле Provider Type выберите тип подключения. Возможны варианты: Analog, VoIP (три провайдера) и Custom VoIP. Для примера, подключимся к сети sipnet.ru.
В поле Comment добавьте описание, например, sipnet.ru. В списке Protocol укажите протокол sip (возможен вариант iax), в поле Host – адрес sipnet.ru, а ниже – учетные данные, которые можно получить на сайте проекта. После нажатия на Save в списке List of Service Providers появится новая запись. Нажатие на поле Options откроет меню, в котором можно выбрать кодеки для работы с этим провайдером и расширенные настройки. В Advanced можно дополнительно указать, какой домен будет использоваться в заголовках (fromdomain), изменить название транка, ввести Caller ID. Чтобы можно было подключаться извне без ввода пароля, параметру insecure следует присвоить значение invite. Здесь же можно изменить порт сервиса, в том случае, если провайдер использует нестандартный номер (SIP – 5060, IAX – 4569). После нажатия на Activate Changes в консоли сервера должна появиться запись об удачной регистрации. Кроме этого, проверить регистрацию можно, перейдя в Asterisk CLI и введя:
CLI> sip show registry Host Username Refresh State Reg.Time sipnet.ru:5060 grinder 105 Registered Tue, 18 Nov 2007 21:12:04
В комнате пользователя на сайте sipnet.ru, в пункте меню, расположенном в верхнем углу «Персональных данных», должна появиться информация о подключенном клиенте Asterisk PBX (или что там у вас записано в useragent файла sip.conf).
После всех этих манипуляций в файле users.conf появится запись нового транка:
[trunk_1] disallow= allow=all callerid=1234080 contact=grinder context=DID_trunk_1 dialformat=${EXTEN:1} fromdomain= fromuser= group= hasexten=no hasiax=no hassip=yes host=sipnet.ru insecure= invite port=5060 provider=sipnet.ru registeriax=no registersip=yes secret=password trunkname=Custom - sipnet.ru trunkstyle=customvoip username=grinder
Конструкция в dialformat означает, что при передаче звонка провайдеру первый символ номера будет отбрасываться. Поля с пустыми значениями означают, что будут использованы параметры по умолчанию.
Все вышесказанное относилось к исходящим звонкам – теперь перейдем к входящим. Они настраиваются во вкладке Incoming Calls. По умолчанию здесь нет никаких правил, но создать их несложно: просто нажмите Add an Incoming Rule и заполните поля. Сначала выберите в раскрывающемся списке Route один из двух вариантов: All Unmatched Incoming calls [Все поступающие вызовы] или Incoming calls that match [Избранные входящие вызовы]. При выборе второго пункта появится дополнительное окно Pattern [Шаблон], в котором следует указать шаблон для входящих номеров, которым будет позволено соединяться с нашим сервером. Номера могут быть выражены цифрами и буквами или заданы при помощи шаблона. Если номер начинается с подчеркивания “_”, то Asterisk воспринимает его как шаблон. В шаблоне можно использовать некоторые специальные символы. Например, X соответствует числам от 0 до 9, Z – 1–9, N – 2–9, точка “.” соответствует одному или нескольким числам, а ! – нулю или более символов. Если число заключено в квадратных скобках [1237], то будет принято совпадение лишь с одной из цифр. В списке “from provider” следует выбрать провайдера, созданного в Service Providers, от которого мы будем принимать вызов, а в “to extension” указать внутренний номер, созданный в поле User. Затем можно взглянуть, как эти действия отразились на конфигурационном файле:
[DID_trunk_1] include=default exten=_X.,1,Goto(default|6000|1) exten=s,1,Goto(default|6000|1)
То есть, при звонке с любого номера, поступившего от внешнего провайдера, он будет передан в контекст default на номер 6000 с приоритетом 1. К сожалению, большего при помощи GUI добиться нельзя. Если нужны более развитые схемы вызовов, придется править конфигурационные файлы вручную. Но в некоторых ситуациях этого бывает достаточно.
В секции numberplan-custom-1 добавилось описание номеров набора, вроде такого:
exten=_9XXXXXXX.,1,Macro(trunkdial,${}/${EXTEN:1}) comment=_9XXXXXXX.,1,Local,standard
То есть, чтобы совершать звонки через этого провайдера, вначале следует набрать цифру 9, которая затем будет отброшена Asterisk. Вот и все – наш сервер полностью готов к работе, хотя его возможности пока несколько ограничены.
Голосовая почта
Работа с голосовой почтой настраивается так же просто – а точнее, все уже почти готово. Если при создании нового номера было заполнено поле VM Password, то пользователь уже получает доступ к индивидуальному ящику голосовой почты. Настройки параметров голосовой почты производятся в секции Voicemail. Так, в поле Extension for checking messages [Номер для проверки сообщений] указывается номер, по которому пользователи будут проверять наличие сообщений голосовой почты (по умолчанию – 8500). Установка флажка Attach recordings to e-mail разрешит отсылать запись как вложение на электронный адрес пользователя, указанный при создании номера. Параметр Max greeting (seconds) определяет максимальный размер приветствия.
Далее, в Message Format выбираем формат файла для записи сообщения из Wav (GSM), Wav (16 бит) и Raw (GSM). Параметры Max message time и Min message time позволяют задать соответственно максимальное и минимальное время голосового сообщения, которое можно оставить пользователю, а в Maximum messages – максимальное количество хранящихся сообщений. В разделе Playback Options есть еще несколько полезных параметров. Так, при установке Send messages by e-mail only сообщения будут только отправляться на указанный e-mail, без сохранения их в каталоге пользователя. Флажок Allow users to review разрешит звонящему прослушать и, при необходимости, изменить оставленное сообщение, прежде чем оно будут переписано в голосовой ящик пользователя.
Нажимаем Activate Changes, и после перезагрузки Asterisk пробуем позвонить на номер, абонент которого не зарегистрирован на сервере. Вы услышите сообщение о недоступности абонента и предложение оставить ему информацию. Начитав текст, нажмите #. Если активирован параметр Allow users to review, то вам предложат сохранить, прослушать или удалить сообщение. Нажмите 1, чтобы сохранить сообщение, и # для выхода.
Сообщение будет отослано на указанный почтовый адрес. Чтобы его прослушать в телефоне, набираем 8500 (или другой номер, указанный в поле Extension for checking messages). Затем по запросу системы вводим номер телефона, голосовую почту которого вы хотите прослушать, и пароль. После каждого действия нажимаем #. Если все сделано правильно, вы должны услышать информацию о количестве новых голосовых сообщений и указания, как их можно прослушать.
Парковка вызова
Парковка вызова (call parking) – это одно из несомненных удобств, предоставляемых Asterisk. Выглядит оно так: вы поднимаете трубку и в процессе разговора понимаете, что разбираться с проблемой должен другой сотрудник, либо для выяснения всех обстоятельств необходимо перейти на другое рабочее место. Вместо того, чтобы просить абонента перезвонить по другому телефону, вы просто набираете комбинацию клавиш и помещаете вызов во временный слот, а перейдя на новое место, набираете номер этого слота и продолжаете разговор.
Параметры парковки и комбинация для передачи вызова определяются в файле features.conf, а используя GUI в AsteriskNOW, достаточно перейти в пункт Call Parking (рис. 4). Здесь уже прописаны некоторые значения. Параметр Extension to Dial for Parking Calls указывает номер, который необходимо набрать, чтобы припарковать вызов. По умолчанию значение равно 700, то есть, чтобы припарковать вызов, нужно набрать #700. Вы должны услышать номер слота, к которому будет подключен абонент. Диапазон слотов указан в поле What extensions to park calls on; по умолчанию указан диапазон 701–720. Перейдя на другой телефон, надо просто набрать услышанный номер. В поле Number of seconds a call can be parked for указано время, в течение которого вызов может быть припаркован. По умолчанию оно равно 45 секундам; по истечении этого времени будет произведен вызов по первому номеру.
Параметр Pickup Extension в этом же меню относится не к парковке, а к другой, не менее полезной функции – перехвату звонка (call Pickup). Выглядит это так. Сотрудник, находящийся рядом, по некоторым причинам не может ответить на телефонный звонок. Можно, конечно, просто подойти к звонящему телефону, но удобнее ответить с рабочего места. Для этого достаточно набрать определенную комбинацию (по умолчанию *8) плюс номер звонящего телефона, и перехватить вызов. Это можно реализовать несколькими способами, но следует помнить, что перехват вызова работает только в пределах технологии SIP, IAX, Zapata и так далее. То есть, например, разговор SIP-телефона с SIP-телефоном работать будет, а перехватить входящий звонок с обычной телефонной линии с помощью SIP-телефона не получится.
Итог
Как видите, используя дистрибутив AsteriskNOW, можно в кратчайшие сроки запустить в работу телефонную сеть на базе VoIP. Мы производили все настройки при помощи графического интерфейса – редактировать конфигурационные файлы и разбираться в назначении многих параметров не пришлось. Это лишь часть возможностей сервера Asterisk и соответственно дистрибутива AsteriskNOW – попробуйте, и узнаете больше. LXF