Asterisk на роутере, или бюджетный Voip <-> Gsm шлюз

Многие из нас имеют в быту замечательные WIFI роутеры ASUS.

В данной статье речь пойдет о варианте применения этих роутеров, в частности моделей RT-N16, WL-500GP, WL-500W в качестве сервиса VOIP телефонии на базе продукта Asterisk, в том числе с построением шлюза GSM<->Asterisk<->VOIP.

В результате получаем:
— вполне работоспособную IP – телефонию на роутере, без лишних затрат и дополнительных точек отказа в виде дополнительного железа
— очень бюджетное решение по VOIP2GSM терминации для личных нужд (на базе 3G модемов HUAWEI)

Насколько это нужно — решать Вам!

Я лично использую эту схему (при минимальных затратах на «железо») для:
— недорогих звонков за границу с мобильного телефона (GSM->VOIP->GSM or Landline)
— экономии расходов на связь в роуминге (c помощью Callback на «местную» или туристическую симку)
— в качестве VOIP<-> GSM шлюза в одной из стран, где цены на локальные звонки и интернет вполне адекватные, а вот VOIP трафик стоит немало.

Нам понадобится:

1. Собственно указанный роутер ASUS RT-N16, WL-500GP, WL-500W (возможно список моделей может быть шире)

2. Для GSM<->VOIP шлюза – нужен 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

5. Запускаем asterisk

asterisk –vvvvvvvvvvvvvvvcd

и получаем……… «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")


3. Далее пути два:

Первый – простой… использовать для шлюза готовый скомпилированный модуль 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!
Tags:
asterisk, asus, wl500g, wl500gp, wl500w, rt-n16, huawei e1550,huawei e173, voip, gsm - шлюз, телефония

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.