Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Взлом как образ мысли Взлом как образ мысли
Интервью с человеком, который, как оказалось, является не только талантливым пентестером в одной из крупных ИБ-компании, но и хакером-ветераном, который уверенными шагами вышел на свет и прикоснулся к истории российской хак-сцены....
Полный гид по накрутке онлайн-голосований Полный гид по накрутке онлайн-голосований
Конкурсы с голосованием привлекают большое количество посетителей, а трафик, как известно, — это деньги. Особый интерес вызывают конкурсы, где за победу предлагаются лакомые призы....

Строим телефонную сеть: Asterisk - самый популярный сервер IP-телефонии

Bookmark and Share

Несмотря на развитие различных систем обмена информацией, таких как электронная почта и службы мгновенного обмена сообщениями, обычный телефон еще долго будет оставаться самым популярным средством связи. Ключевым событием в истории телекоммуникаций и интернета стало появление технологии передачи голоса поверх IP-сетей, поэтому за последние годы изменилось само понятие телефона. Использование VoIP современно, удобно, дешево, так как можно объединить удаленные офисы, даже не прибегая к услугам операторов телефонной связи. Какие еще доводы нужны для того, чтобы поднять свой сервер IP-телефонии?

Проект Asterisk

По адресу en.wikipedia.org/wiki/List_of_SIP_software находится один из самых больших списков серверов и клиентов SIP (протокол установления сессии для работы пользовательских сеансов, включающих передачу видеоданных и голоса). В этом списке 10 серверов, распространяемых под свободной лицензией, но администраторы чаще всего предпочитают Asterisk IP-PBX. Этот проект возник, можно сказать, случайно - его создатель Марк Спенсер (Mark Spencer, кстати, Gaim/Pidgin тоже его рук дело) не имел достаточно денег, чтобы купить для своей компании обычную АТС, и потому вынужден был создавать его софтовую реализацию. Открытость кода способствовала быстрому росту популярности нового продукта как среди разработчиков, так и среди потребителей. Выпускается Asterisk под двойной лицензией. Кроме GNU GPL возможно создание закрытых модулей, содержащих проприетарный код. Такой подход позволяет включить поддержку закрытых кодеков и оборудования.

Несмотря на свою софтовость, Asterisk обладает всеми функциями классической АТС, и даже больше. Вот только некоторые из них: центр обработки вызовов, голосовая почта, возможность проведения конференций, что в итоге делает его мощной и легкорасширяемой платформой для создания телекоммуникационного сервиса любого масштаба. Поддерживаются практически все популярные протоколы IP-телефонии (SIP, H.323, MGCP, Skinny/SCCP, Google Talk, Skype), собственный IAX и некоторые другие для работы видео и факса. Кроме обслуживания локальных клиентов Asterisk умеет передавать голосовой трафик между серверами. Есть модули для сопряжения с аналоговыми (FXO/FXS) и цифровыми (Т1/E1) линиями.

Если функциональности недостаточно, для написания диалплана норма можно воспользоваться собственным языком Asterisk, создать модуль на Cи либо использовать универсальный интерфейс интеграции с внешними системами обработки данных AGI. Чтобы упростить разработку модулей, предназначенных для решения различных задач, предложено несколько уровней API (channel, application, codec, file format). Поэтому новые возможности (например, кодеки) появляются в Asterisk очень быстро и их внедрение проходит безболезненно. Кроме этого, модульность Asterisk позволяет администраторам подключать только необходимые функции, модифицируя систему под свои нужды. Сервер Asterisk можно установить на компьютерах, работающих под управлением GNU/Linux, Free/Net/OpenBSD, Mac OS X/Darwin, Open/Solaris. Клиенты доступны практически для всех систем, в том числе и Windows. Исключение составляют драйверы Zaptel и ISDN-устройств, реализации которых пока есть не для всех платформ.

Установка Asterisk

К сожалению, четких указаний насчет аппаратных средств дать невозможно - слишком много тонкостей и нюансов, поэтому за примерными конфигурациями компьютеров отсылаю на страницу сайта voip.rus.net «Производительность Asterisk-систем». Если твоя цель - знакомство с Asterisk, можно использовать один из дистрибутивов, в которых уже имеется настроенный и полностью готовый к работе сервер: AsteriskNow, Trixbox, VoIPonCD.

Asterisk присутствует в репозитариях пакетов большинства дистрибутивов. Так, в Ubuntu команда sudo apt-cache search Asterisk выдает приличный список пакетов, после установки которых сразу же можно приступать к настройке. Но установка из репозитария имеет один минус - как правило, в нем версия Asterisk прилично отстает от текущей, которую можно скачать с официального сайта. Поэтому рассмотрим универсальный способ установки на примере того же Ubuntu, хотя все сказанное (за редким исключением) относится и к остальным дистрибутивам.

Устанавливаем пакеты, необходимые для компиляции:

$ sudo apt-get install build-essential automake
autoconf bison flex libtool libncurses5-dev libssl-dev

Кроме того, настоятельно рекомендуется установить библиотеку libpri, даже если не нужна поддержка Primary Rate ISDN (первичный тип цифровой сети с интеграцией услуг). Это можно сделать либо через репозитарий: sudo apt-get install libpri1.2, либо используя исходные тексты:

$ wget -c downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz

Компиляция библиотеки стандартна, поэтому не будем на этом останавливаться.

Теперь скачиваем с сайта исходные тексты Asterisk и конфигурируем:

$ wget -c downloads.digium.com/pub/Asterisk/Asterisk-1.4.11.tar.gz
$ tar xzvf Asterisk-1.4.11.tar.gz
$ cd Asterisk-1.4.11
$ ./configure --prefix=/usr

По окончании работы скрипта в консоли мы увидим эмблему проекта и некоторую информацию о настройках.

$ make
$ sudo make install

Примечание: если производится установка версии 1.2, то для поддержки формата mp3 перед командой make следует ввести «make mpg123», версия 1.4 уже никак не реагирует на эту команду.

После компиляции, помимо всего прочего, будут установлены следующие исполняемые файлы:

  1. /usr/sbin/Asterisk - демон сервера Asterisk, который и обеспечивает всю работу;
  2. /usr/sbin/safe_Asterisk - скрипт для запуска, перезапуска и проверки работы сервера Asterisk;
  3. /usr/sbin/astgenkey – скрипт для создания закрытого и публичного RSA ключей в формате PEM, которые необходимы для работы Asterisk.

Чтобы установить шаблоны конфигурационных файлов и документацию, набираем:

$ sudo make samples

Примеры конфигурационных файлов будут скопированы в /etc/Asterisk. Если в этом каталоге уже находятся файлы конфигурации, они будут переименованы с префиксом «.old». Для сборки документации потребуется пакет doxygen, если его нет, устанавливаем:

$ sudo apt-get install doxygen
$ sudo make progdocs

Аналогично ставим и пакет с расширениями Asterisk-addons (этот шаг не обязательный, его можно смело пропустить). Многие модули, входящие в состав этого набора, являются экспериментальными. Их стоит устанавливать, только если требуется запись информации в БД, поддержка mp3-файлов и протокола ooh323c (Objective Systems Open H.323 for C):

$ wget -c downloads.digium.com/pub/Asterisk/Asterisk-addons-1.4.2.tar.gz
$ tar xzvf Asterisk-addons-1.4.2.tar.gz
$ cd Asterisk-addons-1.4.2
$ ./configure; make; sudo make install; sudo make samples

Установка Asterisk закончена. Сначала рекомендуется запустить сервер в отладочном режиме и просмотреть вывод на наличие ошибок:

$ sudo /usr/sbin/Asterisk -vvvgc

Если получаем сообщение «Asterisk Ready» и приглашение консоли управления, значит все в порядке. Выходим:

*CLI> stop now

Теперь можно переходить к дальнейшей настройке.

Настройка поддержки интерфейсных карт

Если планируется подключение сервера Asterisk с помощью специальных интерфейсных плат к обычным телефонным сетям, следует позаботиться о наличии соответствующих драйверов, реализованных в виде модуля ядра. Но даже если таких устройств в компьютере нет, эти драйверы все равно рекомендуется установить. Дело в том, что во всех Zaptel-устройствах есть таймер, и для полноценной работы сервера IP-телефонии он является необходимым. Но если Zaptel-устройства под рукой нет, для его эмуляции можно использовать специальный драйвер — ztdummy.

Из репозитария устанавливаем пакеты zaptel, zaptel-source и собираем модули под свою систему:

$ sudo apt-get install zaptel zaptel-source
$ sudo module-assistant prepare
$ sudo m-a -t build zaptel

В /usr/src появится пакет zaptel-modules-*_i386.deb, устанавливаем его с помощью dpkg. После этого проверяем работу модулей ядра:

$ sudo depmod -a
$ sudo modprobe ztdummy

И если нужна поддержка устройств:

$ sudo modprobe zaptel
$ sudo modprobe wcfxo

Чтобы обеспечить их автоматическую загрузку, выполняем следующую команду:

$ echo 'ztdummy\nzaptel\nwcfxo' >> /etc/modules

Создаем правила для UDEV:

$ sudo mcedit /etc/udev/rules.d/51-zaptel.rules

KERNEL="zapctl", NAME="zap/ctl"
KERNEL="zaptimer", NAME="zap/timer"
KERNEL="zapchannel", NAME="zap/channel"
KERNEL="zappseudo", NAME="zap/pseudo"
KERNEL="zap0-9*", NAME="zap/%n"

Также можно использовать исходные тексты или CVS-версию драйвера. При самостоятельной компиляции понадобятся заголовочные файлы ядра (или исходные тексты):

$ sudo apt-get install linux-headers-`uname -r`

Создадим символическую ссылку, чтобы Asterisk нашел исходники ядра:

$ sudo ln -s /usr/src/linux-headers-2.6.20-15-generic /usr/src/linux-2.6

Теперь получаем последнюю версию драйверов:

$ cd /usr/src
$ wget -c downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz

Компилируем и устанавливаем:

$ tar xzvf zaptel-1.4-current.tar.gz
$ cd /usr/src/zaptel-1.2.17.1
$ ./configure
$ make
$ sudo make install

И чтобы вручную не создавать конфигурационные файлы:

$ sudo make config

После этой команды будет создан скрипт для автоматического запуска модулей, входящих в состав Zaptel, и конфиг /etc/default/zaptel (или /etc/sysconfig/zaptel), в котором будет указано, какие модули необходимо загружать. Рекомендую в этом файле оставить только необходимое. Пробуем загрузить модуль:

$ sudo modprobe ztdummy
$ lsmod | grep ztdummy
ztdummy 6184 0
zaptel 189860 1 ztdummy

Все нормально. После установки в системе появятся еще два файла:

  1. /etc/zaptel.conf – описывает конфигурацию аппаратного обеспечения;
  2. /etc/Asterisk/zapata.conf - настройки сервера Asterisk для работы драйвера Zap-канала.

Подробные указания для всевозможных устройств даны в документации. На русском по этому поводу можно почитать в документе «Конфигурация драйвера ядра Zaptel». Но на этом не останавливаемся, впереди у нас еще много работы. После настройки проверяем работу командой ztcfg -vv.

Регистрация пользователей

Если теперь посмотреть в каталог /etc/Asterisk, можно обнаружить большое количество файлов. Но размер журнальной статьи позволит нам познакомиться только с некоторыми из них. Так, в Asterisk.conf указаны каталоги, которые будет задействовать Asterisk во время работы, расположение и владелец сокета, используемого для подключения удаленной консоли управления, а также дефолтные параметры запуска сервера. Некоторые каталоги во время установки не создаются, это придется сделать вручную:

$ sudo mkdir -p /var/{run,log,spool}/Asterisk
$ sudo adduser --system –-no-create-home Asterisk
$ sudo addgroup --system Asterisk

Добавим пользователя Asterisk в группу audio:

$ sudo adduser Asterisk audio
$ sudo chown Asterisk:Asterisk /var/run/Asterisk
$ sudo chown -R Asterisk:Asterisk /var/{log,spool}/Asterisk

Дальше нас интересует файл sip.conf, где определяются серверы и клиенты SIP, с которыми будет дружить наш Asterisk. Каждый из них представлен в файле отдельным блоком, который начинается с оглавления, заключенного в квадратные скобки. Параметров в sip.conf довольно много, ограничимся лишь добавлением SIP-аккаунта:

$ sudo mcedit /etc/Asterisk/sip.conf

[grinder]
type=friend
host=dynamic
; defaultip=192.168.1.200
username=grinder
secret=password
language=ru
nat=no
canreinvite=no
context=office
callerid=grinder <1234>
mailbox=1234@office
; перед использованием параметра allow следует отключить все кодеки
disallow=all
; порядок следования кодеков не имеет значения
allow=ulaw
allow=alaw

Поле type указывает, что может делать этот клиент. При значении user ему будет разрешено только принимать входящие звонки, при peer он сможет только звонить, а friend означает все действия сразу, то есть user+peer. В поле host указывается IP-адрес, с которого разрешено подключение этого клиента. Если он может подключаться с любого адреса, указываем host=dynamic. А чтобы в этом случае вызвать клиента, когда он еще не зарегистрирован, в defaultip следует записать IP-адрес, по которому его всегда можно будет найти. В username и secret указываем логин и пароль, используемые клиентом при подключении. Параметр Language задает код языка приветствий и специфичные настройки сигналов телефонов, которые определены в файле indications.conf. При работе клиента за NAT'ом в соответствующем поле необходимо установить значение yes. Отключение canreinvite заставляет весь голосовой RTP-трафик проходить через Asterisk. Если клиенты поддерживают SIP re-invites, им можно разрешить соединяться напрямую, указав canreinvite=yes. Поле сontext определяет план набора, в который попадают вызовы, поступающие от этого клиента, а callerid - строку, которая будет выводиться при звонке от клиента. По умолчанию используется контекст default, который берет все настройки из контекста demo. Последний предназначен исключительно для демонстрационных целей, в рабочей системе необходимо создать свой контекст. Поле mailbox указывает на голосовой ящик 1234 в контексте office. Остальные клиенты настраиваются аналогично.
После определения SIP-аккаунтов наши клиенты могут регистрироваться на сервере Asterisk и совершать исходящие вызовы. Чтобы у них была возможность принимать звонки, следует обратиться к файлу extensions.conf, в котором описывается план набора (Dialplan), распределяющий звонки в системе. Здесь же указываются все разрешенные расширения.

$ sudo mcedit /etc/Asterisk/extensions.conf

[office]
include => default
exten => 1234,1,Dial(SIP/grinder,20)
exten => 1234,2,Voicemail(grinder)

Здесь все просто. За пользователем grinder закрепляем номер 1234, и, если он не ответит на звонок, ему можно будет оставить сообщение в голосовой почте. Цифра после номера означает приоритет, который определяет последовательность выполнения задач. Теперь, если Asterisk запущен, следует подключиться к его консоли, выполнив на той же машине Asterisk -r, и с помощью команды reload заставить его перечитать конфигурационные файлы. Есть и команды для перезагрузки конкретного файла. Например, план набора перечитывается командой extensions reload.

Сервер готов к приему клиентов. По адресу www.Asteriskguru.com/tutorials/configuration_Asterisk_softphone.html выбираем себе софт-клиент и пробуем соединиться. Мне, например, нравится бесплатная версия простой и понятной в использовании программы ZoIPer (ранее Idefisk). Есть версии для Linux, Windows и Mac OS X. Еще один неплохой и также мультиплатформенный клиент - X-Lite.

Если все нормально, в консоли должно появиться сообщение вроде «Registered SIP 'grinder' at 192.168.0.1 port 5060», набираем номер и звоним.

Мы настроили Asterisk в минимальной конфигурации, но это далеко не все, что он может. За кадром осталось подключение к другому серверу IP-телефонии, парковка вызова, музыка во время ожидания, биллинг, использование GUI для администрирования сервера и прочее, но мы постараемся восполнить эти пробелы в следующих статьях.



Теги: Asterisk , администрирование , настройка





СЛЕДУЮЩИЕ СТАТЬИ
Умная стратегия обновления позволит сохранить исправность системы
10 наиболее важных Open Source проектов 2011
Oracle оставляет базы данных уязвимыми
IPv6: время действовать
Раз заплатка, два заплатка: зачем нужны бинарные патчи, и как ими пользоваться
Прав достаточно: 8 приемов для обхода групповых политик в домене
Windows 7 PORTABLE: делаем загрузочную флешку с "семеркой" на борту
Суперкомпьютер из видеокарты: задействуем возможности GPU для ускорения софта
SELinux: бронежилет для корпоративного пингвина
Генеральный директор Red Hat: "Я не имею ни малейшего понятия, что дальше"
ПРЕДЫДУЩИЕ СТАТЬИ
Страж файлового дерева: развертываем распределенную файловую систему DFS
Останься легальным: как лицензировать Windows №2
Операция по освобождению: борьба с утечками ресурсов в реальном времени
Наперегонки со временем: уменьшаем время отклика приложений в Linux
Останься легальным: как лицензировать Windows
История зависшего гаджета
Windows 2008: обзор новой серверной ОС от Microsoft
Лучшие WebOS
MythTV: уникальная оболочка для создания домашнего медиацентра
Невидимые LKM-атаки на Windows NT: поваренная книга руткитмейкера
ОБСУЖДЕНИЕ СТАТЬИ
Логин:
Пароль:
Если у вас есть форумный логин - вы можете использовать его, иначе анонимный гостевой доступ.

Для оставления комментария вы можете зарегистрироваться по упрощенной процедуре.

Обсуждение этой статьи на forum.xakep.ru
Для отправки сообщения введите код, указанный на картинке
Сообщение

UserГость
21.02.2008 7:44:06
Ответить Ссылка
вот на чем зарабатываются бабки %)
UserГость
22.02.2008 22:53:53
Ответить Ссылка
Спасибо за статью !!!
Хотелось бы более подробного разбора полетов, буду рад если решишь написать !
UserГость
25.02.2008 15:38:35
Ответить Ссылка
а пакеты в статье лень генерть было?
UserГость
27.02.2008 15:36:26
Ответить Ссылка
Я уже даже забыл когда я в последний раз платил за телефонные разговоры.

В наше время актуальна прослушка,а не это байда.
UserГость
27.02.2008 17:32:02
Ответить Ссылка
Говно статья... Лет пять назад еще была актуальна..и то со сборкой h.323. А так незачод.
UserГость
01.03.2008 23:35:22
Ответить Ссылка
Как для меня, то не плохо, но мало :), давай еще.
UserГость
02.03.2008 7:33:30
Ответить Ссылка
Не актуально.
UserГость
04.03.2008 16:51:33
Ответить Ссылка
Из расчета что скажем есть сетка но покупать хардварный Кол манагер то астериск актуально......
Продолжать стоит до поднятия всего комплекса включая IVR
UserГость
10.03.2008 14:32:29
Ответить Ссылка
ДА нехилые лаве мона поднять при желании...
UserГость
03.05.2008 16:16:43
Ответить Ссылка
А как в asterisk можно сделать автоматическую регистрацию аккаунта? Чтобы не парится каждому создавать акк.
UserГость
12.05.2008 1:42:49
Ответить Ссылка
Статья супер! Автор молодец! Для меня меня была полезна в первую очередь тем, что автор уделил внимание инсталляции под Убунту! Я в Линуксе недавно, поетому неделю ломал голову как проинсталить свежую версии Астериска не с репозиториев, а с исходника! Оказывается нужны были упомянутые автором пакеты! Слава богу проинсталлировал! А там дальше все вроде бы просто -- номерной план, музыка на удержании и т.д.
UserГость
25.10.2008 23:51:07
Ответить Ссылка
Новый ресурс вступил в строй по этой теме: http://aserisk.ru
UserГость
25.10.2008 23:52:18
Ответить Ссылка
sorry, mean http://asterisk.ru
UserГость
20.12.2008 17:07:51
Ответить Ссылка
А где же ссылки на русские ресурсы по Asterisk?
- http://asterisk.ru - агррегатор
- http://asteriskpbx.ru - wiki, blog, разработка
- http://asterisk-support.ru - сообщество
- http://ivrvoice.ru - студийный русский IVR
- http://www.pbxware.ru - все для Asterisk
UserГость
20.01.2009 9:13:35
Ответить Ссылка
как-то так написал что фиг что поймешь....
по похожим ссылкам можно найти статьи более "приятные"
UserГость
14.02.2009 15:48:51
Ответить Ссылка
Есть такая проблема :

В офисе , в качестве АТС стоит asterisk на Linux . В asterisk прописаны все пользователи офиса под индивидуальными трёхзначными номерами .Для всех пользователей там прописан номер 1 телефона , при входящих и исходящих звонках в город; для отдела кадров есть 2 номер , на который идёт перенаправление входящих звонков для отдела кадров , на рабочих местах гарнитуры подключены к системным блокам и через гарнитуры осуществляются звонки , всё работает ; но при звонке со 2 номера отдела кадров на мобильный телефон на мобильнике высвечивается номер 1 . Надо сделать так , чтобы на мобильнике при звонке с 2 номера отдела кадров высвечивался номер 2. Может посоветуете как это сделать ?



С уважением , Виктор Тимофеев.
vik902@rambler.ru
UserГость
27.02.2009 10:32:02
Ответить Ссылка
Ну и какой смысл перепечатывать, да еще и в обрезанном виде вот это:
http://www.voip.kg/ru/article/?article=14
http://www.voip.kg/ru/article/?article=15
http://www.voip.kg/ru/article/?article=16
?
UserГость
26.03.2011 19:02:29
Ответить Ссылка
хорошая вещ нужно установить




Keywords: zPOSTz zOSz, zINFOz z42436z
Для Авторов: edit Lock delete Lock



    Rambler's Top100