Asterisk на роутере, или бюджетный Voip Gsm шлюз
Многие из нас имеют в быту замечательные WIFI роутеры ASUS.
В данной статье речь пойдет о варианте применения этих роутеров, в частности моделей RT-N16, WL-500GP, WL-500W в качестве сервиса VOIP телефонии на базе продукта Asterisk, в том числе с построением шлюза GSMAsteriskVOIP.
В результате получаем:
— вполне работоспособную IP – телефонию на роутере, без лишних затрат и дополнительных точек отказа в виде дополнительного железа
— очень бюджетное решение по VOIP2GSM терминации для личных нужд (на базе 3G модемов HUAWEI)
Насколько это нужно — решать Вам!
Я лично использую эту схему (при минимальных затратах на «железо») для:
— недорогих звонков за границу с мобильного телефона (GSM->VOIP->GSM or Landline)
— экономии расходов на связь в роуминге (c помощью Callback на «местную» или туристическую симку)
— в качестве VOIP GSM шлюза в одной из стран, где цены на локальные звонки и интернет вполне адекватные, а вот VOIP трафик стоит немало.
1. Собственно указанный роутер ASUS RT-N16, WL-500GP, WL-500W (возможно список моделей может быть шире)
2. Для GSMVOIP шлюза – нужен 3G модем HUAWEI E1550 или E173 (опять же – список может быть шире, но тестировались именно эти модели). Шлюз GSM-VOIP в виде сервиса мегафона «Мультифон» — остается за рамками нашей темы.
Процессу настройки ASTERISK посвящено немало статей на Хабрахабре, приведу ссылки на некоторые из них:
habrahabr.ru/blogs/voip/104026
habrahabr.ru/blogs/voip/113707
Постараюсь не повторяться а осветить особенности установки Asterisk именно на роутере.
Итак, Часть 1-я, «Установка Asterisk»
1. Ставим на роутер прошивку на ядре 2.6* «от энтузиастов» на базе прошивки Oleg’а.
Адрес проекта с прошивками code.google.com/p/wl500g. Нужна прошивка rtn, подходящая к Вашей модели роутера.
Почему эта, а не dd-wrt, tomato и тд – работает быстро, проект динамично обновляется(спасибо «энтузиастам»).
2. Для пакета asterisk и прочих зависимостей памяти роутера нам будет явно недостаточно, поэтому понадобится внешний USB накопитель (1 gb- вполне устроит). Вместо флешки – мы можем воспользоваться опцией замечательных 3g модемов Huawei e1550 и E173 (кстати – все еще продается по акции мегафона за 750 рублей, в комплекте с симкой на 1 мес бесплатного мобильного интернета) – которые имеют слот для Micro SD Card, совмещая в себе функции флешки. Таким образом, этот чудесный модем воплощает в себе одновременно 3 свойства:
— 3G модем (интернет на роутер можем получать через него)
— Флешка (при вставленной micro sd) для установки доп. пакетов на роутере
— GSM шлюз с поддержкой голоса, SMS, USSD
3. Подключаем модем-флешку или просто флешку, логинимся в роутер по SSH, и производим первоначальную конфигурацию и установку необходимых пакетов.
Процесс неплохо описан здесь wl500g.info/showthread.php?t=3171, я приведу основные этапы:
a) Создаем необходимые конфигурационные файлы
mkdir -p /usr/local/sbin/
echo «#!/bin/sh» >> /usr/local/sbin/post-boot
cp /usr/local/sbin/post-boot /usr/local/sbin/post-firewall
cp /usr/local/sbin/post-boot /usr/local/sbin/post-mount
cp /usr/local/sbin/post-boot /usr/local/sbin/pre-shutdown
chmod +x /usr/local/sbin/p*
flashfs save
flashfs commit
flashfs enable
b) Форматим флешку и подключаем ее в качестве доступного хранилища
umount /tmp/mnt/disca_1
mke2fs -j /dev/discs/disca/part1
mkdir /tmp/mnt/disca_1/opt
mount -obind /tmp/harddisk/opt /opt
echo ‘mount -obind /tmp/harddisk/opt /opt ‘ >> /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable
c) Подключаемся к репозиторию и устанавливаем нужные пакеты
mkdir -p /opt/tmp/ipkg
ipkg.sh update
ipkg.sh install ipkg-opt
echo «option verbose-wget»>>/opt/etc/ipkg.conf
ipkg update
ipkg upgrade
d) Ставим софт для удобства работы
ipkg install nano mc findutils grep wget
echo «export TERMINFO=/opt/share/terminfo» >> /usr/local/root/.profile
echo «export TERM=xterm» >> /usr/local/root/.profile
flashfs save
flashfs commit
flashfs enable
4. Ставим Asterisk 16
ipkg install asterisk16
и получаем……… «Segmentation Fault» (может быть Вам повезет больше? )
Небольшое лирическое отступление: все бы хорошо, но Asterisk «вылетает». Я потратил немало времени, пробовал компилировать Asterisk на роутере – вполне благополучно (с некоторыми хитростями), но тоже вылетает. Пробовал кросс компиляцию – аналогично.
В общем, чтобы заставить его работать – пришлось сделать небольшую процедуру «обрезания» библиотек-модулей, оказавшихся «крайними». У меня есть несколько вариантов работоспособных конфигураций сочетания модулей, но приведу самый простой пример заставить asterisk запуститься и без неприятного сообщения «Segmentation Fault».
Вот он:
mkdir /opt/lib/asterisk/modules_backup
mv /opt/lib/asterisk/modules/res* /opt/lib/asterisk/modules_backup/
Т.е. все res_* отключаем, надеюсь что Вам это будет некритично.
7. Запускаем опять asterisk, и «ВУАЛЯ»!
Asterisk Ready.
*CLI>
Процесс конфигурирования оставлю в покое, немало мано-факов по той тебе исписано, лишь сделаю ремарку, что для себя в /opt/etc/asterisk использую лишь эти конфигурационные файлы:
asterisk.conf cdr.conf extensions.conf indications.conf logger.conf modules.conf rtp.conf sip.conf
И для GSM модема еще dongle.conf (или datacard.conf)
Часть 2, Установка GSM Шлюза
С установкой Asterisk закончили, перейдем к установке GSM шлюза на базе 3G модемов HUAWEI, моделей E1550 и E173.
1. Нам нужен модем указанной модели с активированной функцией голоса (инструкции и софт по анлоку от оператора и активации голосовых функций доступны в открытом доступе в Интернете, если потребуется – могу описать процесс подробнее).
Как я упоминал, актуальное на данный момент для Москвы предложение – модем модели HUAWEI e173 в комплекте с сим картой и безлимитным интернетом на месяц – 750 руб. dv.device.megafon.ru/specifications/usbModem/e173).
2. Если модем используется в качестве флешки для роутера – то эта функция должна быть инициализирована (можно сделать через терминал):
AT^U2DIAG=0 (девайс переводится в режим «только модем»)
AT^U2DIAG=1 ( . «модем + CD-ROM»)
AT^U2DIAG=255 ( . «модем + CD-ROM + Card reader»)
AT^U2DIAG=256 ( . «модем + Card reader»)
Первый – простой… использовать для шлюза готовый скомпилированный модуль chan_datacard.so
Берем его отсюда iqlab.ru/downloads/chan_datacard.so и кладем в папку modules астериска.
cd /opt/lib/asterisk/modules
wget http: //iqlab.ru/downloads/chan_datacard.so
Дальше добавляем в /opt/etc/asterisk/ конфигурационный файл datacard.conf примерно следующего содержания
>>>>>>>>>>>>>>>>>>>>>>>>>>>
[datacard0]
audio=/dev/ttyUSB1 ; tty for audio connection
data=/dev/ttyUSB2 ; tty for AT commands
context=datacard-incoming ; context for incoming calls
group=1 ; calling group
rxgain=3 ; increase the incoming volume
txgain=3 ; increase the outgoint volume
resetdatacard=yes ; reset datacard during initialization
u2diag=256 ; set U2DIAG parameter (256 = modem+card_reader)
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation
И далее, уже в файле extensions.conf создаем раздел [datacard-incoming] и добавляем туда свои правила диалплана. Для теста, например,
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[datacard-incoming]
exten => s,1,Playback(demo-echotest) ; Let them know what’s going on.
exten => s,2,Echo ; Do the echo test.
exten => s,1,Playback(demo-echodone)
Запускаем астериск, смотрим, нормально ли подключился модуль
#Asterisk Ready.
#*CLI> — [datacard0] Datacard initialized and ready
Дальше звоним на симку, вставленную в модем, слышим привествие, и свой голос в качестве «эхо».
Дальше – конфигурируем необходимые правила, переадресации и тд.
Вариант второй – посложнее, но и возможностей больше.
Состоит он в том, чтобы скомпилировать на роутере расшиенную версию GSM модуля для Huawei, под названием chan_dongle.so (http://code.google.com/p/asterisk-chan-dongle/downloads/list) – СПАСИБО Bg1.
Для этого ставим на роутер необходимые для компиляции пакеты:
ipkg install buildroot optware-devel make
Скачиваем модуль chan_dongle, распаковываем, компилируем (configure && make), копируем в /opt/lib/asterisk/modules и создаем конфигурационный файл /opt/etc/asterisk/dongle.conf (описание есть здесь code.google.com/p/asterisk-chan-dongle/source/browse/trunk/etc/dongle.conf?spec=svn4&r=4)
Далее настраиваем диалплан, и наслаждаемся работающим сервисом Asterisk с GSM шлюзом на роутере!
Вот, в общем то, все, если кратенько…
Если нужно что-то детализировать или описать подробнее – welcome!