[recovery mode] Установка и запуск Asterisk на Android-смартфоне

Здравстуй, хабр! 861ef611854d40c7b296b79fc01f8729.pngПонадобилось мне быстро собрать стенд для демонстрации работы астера в небольшой организации. Нужно было сделать несколько звонков, продемонстрировать перевод, перехват вызова и т.д. Сам VoIP сервер разместил на своем смартфоне. Почему на смартфоне, каким образом и с какой целью — под катом.1. Зачем Я работаю в компании, которая занимается настройкой телефонии для маленьких и не очень компаний по городу и области. Asterisk в большинстве случаев является самым оптимальным вариантом АТС, так как легко настраивается, масштабируется под нужды организации, можно дополнять функционал своими скриптами. Имеется свой джентльменский набор для демонстрации работы АТС — старенький макбук с линуксом на борту и настроенным астером, SIP-трубка Gigaset, шлюз SPA8000, SIP-транк на нашу АТС для внешних звонков.Случилось так, что кот опрокинул стакан сока на ноутбук. Заказал на aliexpress клавиатуру, но при замене нечаянно сломал шлейф. Пока откладываю деньги на новый топкейс и шлейф — нужно делать стенд — утром переговоры. На новом ноуте под виртуалку места нет, линукс ставить — жаль рабочую систему. Решил — стоит попробовать на смартфоне, заодно оценить его возможности по железу.2. Установка Имеем — Sony Xperia M Dual, последний билд Cyanogenmod с 4.4.4, MicroSD на 32 гб 10 класса. Метод должен работать большинстве смартфонов с root правами и (желательно) кастомной прошивкой.В Google Play есть замечательная утилита Linux Deploy. Она позволяет устанавливать один или несколько различных дистрибутивов Linux на смартфон и запускать их в chroot-окружении. Процесс установки linux описывать не буду, есть очень наглядное видео с приятной музыкой на странице программы в Google Play, но на всякий случай продублирую его здесь.Установка GNU/Linux на Android через Linux Deploy. [embedded content]

Устанавливаем систему по инструкции на видео, я делал также, только выбрал Debian Wheezy. Жмем кнопку Start в окне Linux Deploy, система установлена и запущена.Далее можем подключиться любимым SSH-клиентом по ip-адресу нашего смартфона, и попадаем в Linux-окружение. Пароль по умолчанию для пользователя — changeme, в рута через sudo -s. Для установленного Debian (Ubuntu) обновим систему и установим нужные пакеты:

aptitude update aptitude upgrade aptitude install mc tmux htop asterisk 3. Настройка

После установки создадутся конфигурационные файлы в каталоге /etc/asterisk/. Для минимальной настройки VoIP сервера необходимо их изменить. Под спойлерами примеры настроек:

sip.conf ; Main

[general]

context=incoming_calls allowguest=no ; match_auth_username=yes; if available, match user entry using the allowoverlap=no; Enable RFC3578 overlap dialing support. udpbindaddr=0.0.0.0 transport=udp srvlookup=yes; Enable DNS SRV lookups on outbound calls ; pedantic=yes; Enable checking of tags in headers, disallow=all; First disallow all codecs allow=ulaw; Allow codecs in order of preference language=ru; Default language setting for all users/peers relaxdtmf=yes; Relax dtmf handling useragent=Asterisk PBX; Allows you to change the user agent string dtmfmode = rfc2833; Set default dtmfmode for sending DTMF. Default: rfc2833 videosupport=yes; Turn on support for SIP video. You need to turn this alwaysauthreject = yes; When an incoming INVITE or REGISTER is to be rejected, autocreatepeer=no; Allow any UAC not explicitly defined to register rtptimeout=60; Terminate call if 60 seconds of no RTP or RTCP activity recordhistory=yes; Record SIP history by default dumphistory=yes; Dump SIP history at end of SIP dialogue t38pt_udptl = yes, redundancy, maxdatagram=300 faxdetect = no; Default 'no', 'yes' enables both CNG and T.38 detection nat=no jbenable = yes; Enables the use of a jitterbuffer on the receiving side of a canreinvite=no rfc2833compensate=yes limitonpeers = yes externrefresh=60 disallow=all allow=ulaw, alaw qualify=yes echocancel=yes echocancelwhenbridged=yes

register => 4732453344–101: veryStrongSecret@server.prov.ru

; Provider

[ext_template](!) disallow=all allow=ulaw, alaw description=fakeExampleProvider;) type=peer context=incoming_calls nat=force_rport, comedia host=server.prov.ru fromdomain=server.prov.ru insecure=port, invite

[trunk](ext_template) fromuser=4732453344–101 defaultuser=4732453344–101 authname=4732453344–101 secret=veryStrongSecret

; GSM

; Templates

[global_template](!) type=friend qualify=yes host=dynamic nat=no notifyringing=yes call-limit=1 limitonpeers=yes insecure=port, invite secret=pass callgroup=1 pickupgroup=1 context=outgoing_calls

; SIP users

[101](global_template) [102](global_template) [103](global_template) [104](global_template) [105](global_template)

extensions.conf [default] exten => _X.,1, Hangup ()

[globals]

[features]

exten => ##,1, Pickup ()

[incoming_calls]

; from-trunk exten => s,1, NoOp (${CALLERID (num)}) same => n, Answer () same => n, Queue (main, tr) same => n, Hangup ()

[outgoing_calls]

exten => _[23]XXXXXX,1, NoOp (${CALLERID (num)}) same => n, Dial (SIP/trunk/${EXTEN},, tTr) same => n, Hangup ()

exten => _8XXXXXXXXXX,1, NoOp (${CALLERID (num)}) same => n, Dial (SIP/trunk/${EXTEN},, tTr) same => n, Hangup ()

exten => _810XXXXXXXXXXXX,1, NoOp (${CALLERID (num)}) same => n, Dial (SIP/trunk/${EXTEN},, tTr) same => n, Hangup ()

include => internal_calls

[internal_calls]

exten => _10[12345],1, Dial (SIP/${EXTEN},, tTr) same => n, Hangup ()

queues.conf [general] persistentmembers = yes autofill = yes monitor-type = MixMonitor updatecdr = yes ; musicclass = default strategy = rrmemory context = incoming_calls timeout = 20 retry = 1 weight=0 wrapuptime=1 autofill=yes maxlen = 0 announce-frequency = 0 relative-periodic-announce=no announce-holdtime = no announce-position = no monitor-format = wav ringinuse = no

[main] strategy = rrmemory ringinuse=no member => SIP/101 member => SIP/102 member => SIP/103 member => SIP/104 member => SIP/105

Когда конфигурация написана, запускаем службу и заходим в CLI:

asterisk && asterisk -vvvvr При запуске службы из init.d не грузится модуль сhan_sip, пишет ошибку chan_sip.c:28816 reload_config: Unable to create SIP socket: Permission denied. От рута запускается нормально, для демонстрации сойдет.Все готово. Я подключил к нашей новой АТС шлюз FXS и два софтфона. На моем аппарате (Xperia M Dual) нагрузка на процессор в 4 активных канала составляет где-то 10%, не заикается, лагов нет. Можно звонить по внутренним 101–105 друг другу, и общаться с внешним миром через транк от провайдера.

4. Возможности применения: а) демонстрация работы Asterisk PBXб) портативная гиковская АТС =)в) для домашнего использования (ставят же на роутеры с openwrt, можно и на смартфоне сделать)г) просто ради интереса

Скриншот 04916f5608a04e08ac45bd9abcbdd803.png Задавайте вопросы в комментариях и в ЛС, не только в рамках статьи. По возможности могу подсказать и помочь по настройке.Спасибо за внимание.По первому комментарию Исправил » Я занимаюсь» на «Я работаю в компании, которая занимается», спасибо shadowalone, сначала просто не придал значения, приношу извинения. Но все же, мои финансовые проблемы -мое личное дело, не так ли? ;)

© Habrahabr.ru