Asterisk на роутере openwrt
так же надо открыть остальные порты по udp 5060 10000-20000 4000-4999
Текущая версия ( на июль 2013 ) — Asterisk 1.8.10.1-2
Версия 1.8 не работоспособна — тупо падает
asterisk18 asterisk18-res-fax-spandsp asterisk18-co dec-alaw asterisk18-codec-a-mu asterisk18-codec-g 726 asterisk18-app-verbose
asterisk18-format-sln asterisk18-format-g 729 asterisk18-res-musiconhold asterisk18-fu nc-devstate asterisk18-chan-local
asterisk18-func-cut asterisk18-app-syste m asterisk18-voicemail asterisk18-func-d b asterisk18-app-directed-pickup
Версия 11
asterisk11 asterisk11-res-fax-spandsp asterisk11-app-verbose asterisk11-codec-alaw asterisk11-codec-ulaw asterisk11-codec-resample asterisk11-codec-ulaw asterisk11-format-sln asterisk11-format-wav
asterisk11-format-pcm asterisk11-func-channel asterisk11-func-db asterisk11-func-cut asterisk11-func-global asterisk11-func-devstate asterisk11-func-extstate asterisk11-res-musiconhold
asterisk11-format-gsm asterisk11-format-wav-gsm asterisk11-voicemail
Включаем в startup = запуск openvpn asterisk
Ругается на отсуствия /var/lib/asterisk/astdb
создаем каталог
mkdir /var/lib/asterisk/
Но лучше поправить стартовый скрипт
В транковой версии уже скрипт правленый и нечего делать не нужно ( февраль 2014 )
======================================== ======================================== ==============================
OpenWRT + OpenVPN для Asterisk. Бюджетный способ организации VPN сети
Это очередная статья о роутере MR3020, OpenWRT и OpenVPN. Бонусом я выкладываю готовую прошивку для этого роутера с установленным OpenVPN, текстовым редактором Nano и wget. В прошивке отключено всё лишнее, включая вэбинтерфейс, ipv6 и WiFi.
Работа с роутером возможна только через telnet и SSH. Писать, как поднять сервер OpenVPN я не буду, статей об этом куча, лично мне помогла вот эта статья.
Предистория
Для организации телефонной сети понадобилось мне организовать VPN. Для этих целей был выбран OpenVPN.
Так как бюджет был ограничен, было решено ставить на точках, а их, кстати, три. Самые дешевые роутеры с поддержкой OpenWRT.
Был куплен TP-Link MR3020 для теста, а после успешного тестирования докуплена ещё парочка этих малышей.
Хоть роутер и имеет всего один LAN порт, подключать его на точках оказалось очень удобно. Нет необходимости ставить в непосредственной близости к друг к другу Voip-шлюз и роутер. Подготовленный роутер подключается в любой свободный сетевой порт на удаленной точке, Voip-шлюз так же можно подключить в любой свободный сетевой порт, указав шлюзом IP-адрес нашего роутера. Естественно, оба они должны быть в одной сети с интернет-шлюзом.
Настройка роутера
Если MR3020 свеженький, то заходим в вэбинтерфейс и заливаем прошивку через соответствующее меню. Если на роутере уже стоит OpenWRT, то действуем следующим образом:
Заходим на роутер по telnet или SSH и выполняем:
cd /tmp/ && wget http://alians-it.pro/images/files/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin && mtd -r write openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin firmware
Если нет интернета, то любым способом заливаем на роутер прошивку, например, через SSH (scp) или, как это делаю я: установите себе на компьютер веб-сервер, положите прошивку в www директорию и так же через wget скачайте прошивку, но уже со своего компьютера.
Если сделали что-то не так или забыли адрес роутера, можно перевести его в «аварийный режим»: Выключаем/включаем роутер; ждём, пока светодиод под кнопкой WPS/RESET не начнет мигать примерно раз в секунду (WPS/RESET до этого момента горит 3 секунды, потом гаснет на 3 секунды), сразу нажимаем эту кнопку и ждем, пока не начнет мигать очень быстро, отпускаем кнопку. Всё, роутер доступен через telnet по адресу 192.168.1.1. Настраиваем сеть и перепрошиваем.
После успешной прошивки заходим на роутер через telnet по адресу 192.168.1.1 и устанавливаем пароль для root:
Вводим пароль два раза, и перезагружаем роутер:
После перезагрузки роутер будет доступен только по ssh, логин root пароль тот, что вы указали.
Настройка сети:
config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd69:9e94:7464::/48' config interface 'lan' option ifname 'eth0' option force_link '1' option type 'bridge' option proto 'static' option netmask '255.255.255.0' option ip6assign '60' option ipaddr '192.168.1.11' option gateway '192.168.1.10' option dns '8.8.8.8' option delegate '0'
Отредактировать надо раздел:
Где 192.168.1.10 — адрес интернет-шлюза в сети удаленной точки, а 192.168.1.11 — это любой свободный адрес, который будет у нашего роутера. Если у вас свободен адрес 192.168.1.1, то добавляем только
option gateway '192.168.1.10' option dns '8.8.8.8'
Настройка OpenVPN:
Переходим и копируем в папку /etc/openvpn/ ключи и сертификаты. Я для удобства складываю всё в архив и скачиваю разом:
cd /etc/openvpn/ && wget http://192.168.1.5/client_Sushi_Terra.tar.gz && tar xzvf client_Sushi_Terra.tar.gz
Как вы догадались, 192.168.1.5 — адрес моего рабочего компьютера с установленным вэбсервером, а client_Sushi_Terra — это имя удаленной точки, придуманное при генереции сертификатов и ключей на OpenVPN сервере.
Редактируем конфигурацию клиента:
nano /etc/openvpn/client.conf
client
port port
remote ip-adres
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client_Sushi_Terra.crt
key /etc/openvpn/client_Sushi_Terra.key
#cipher BF-CBC
#auth MD5
pull #
comp-lzo
persist-key
persist-tun
verb 3
client
port 7193
remote 37.193.254.254
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client_Sushi_Terra.crt
key /etc/openvpn/client_Sushi_Terra.key
#cipher BF-CBC
#auth MD5
pull #
comp-lzo
persist-key
persist-tun
verb 3
Где port 7193 и remote 37.193.254.254 — порт и адрес OpenVPN сервера.
Так же настраиваем масквардинг на порту tun0 после успешного старта OpenVPN:
echo 'iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE' >> /etc/init.d/openvpn
Ещё раз перезагружаем роутер:
Теперь роутер будет доступен по адресу 192.168.1.11.
Если всё правильно, появится новый интерфейс tun0.
Настройка огненной стены:
Открываем файл /etc/config/firewall для редактирования:
config defaults option syn_flood '1' option output 'ACCEPT' option forward 'ACCEPT' option input 'ACCEPT' #'DROP' config include option path '/etc/firewall.user' config rule option target 'ACCEPT' option name 'ssh' option proto 'tcp' option src '*' option src_port '22' option dest_port '22'
Теперь роутер будет доступен только на 22 порту, хотя по другому до него итак никак не достучаться. Можно вместо «*» указать ip-адрес, и это будет единственный адрес, с которого можно будет зайти на роутер по ssh.
Настройка VoIP шлюза
Настройка сети: указываем в качестве интернет шлюза ip адрес нашего роутера:
У меня OpenVPN поднят на том же сервере, что и Asterisk, поэтому я указываю в качестве sip proxy адрес OpenVPN сервера.
Если Asterisk установлена на отдельном сервере, то необходимо в конфигурации OpenVPN сервера разрешить клиентам видеть друг друга и передавать клиентам маршруты до каждой удаленной точки.
Настройка SIP: указываем в качестве sip proxy: адрес сервера Asterisk.
Если указать шлюзом наш роутер на любом другом устройстве, то ему так же будет доступна вся сеть OpenVPN и все подсети удаленных точек, если, конечно, такое разрешено и настроено на самом OpenVPN сервере.
Добавлю ещё, что рекомендую настраивать firewall как на сервере с Asterisk, так и на сервере с OpenVPN — так, как будто внутренняя сеть, в том числе и VPN такая же агрессивная среда, как и публичный интернет.
OpenWRT Asterisk SIP GSM гейт
Установить систему можно из браузера, это подробно описано на WIKI OpenWRT для каждого маршрутизатора индивидуально, так что думаю можно пропустить. Для переноса системы нам понадобится флешка размера ну наверное больше 1 гБ, это будет даже много, но смотря для чего кому нужно. Её предварительно нужно отформатировать. Создать на ней раздел с файловой системой ext4. Это можно сделать с любого дистрибутива Linux. Я делал из под виртуальной машины на которой установлена Ubuntu.
Дальше запускаем маршрутизатор и делаем вход по ssh. Набираем в консоли:
пойдёт обновление дерева пакетов.
opkg install kmod-usb-uhci kmod-usb-storage block-mount kmod-fs-ext4
здесь мы устанавливаем необходимые модули для работы с usb и работы с файловой системой
далее делаем reboot и вставляем флешку (ещё не больше дополнение, я использовал USB hub т.к. у меня нет флешки MicroSD для использования в USB модеме, поэтому в USB порт подключён USB hub, а тем временем флешка вставлена в USB hub)
в системе флешка должна определится как sda (для уточнения нужно смотреть dmseg)
Дальше приступаем к переносу системы
root@OpenWrt:~# mkdir -p /mnt/usb
root@OpenWrt:~# mount -t ext4 /dev/sda1 /mnt/usb -o rw,sync
root@OpenWrt:~# tar -C /overlay -cvf — . | tar -C /mnt/usb -xvf —
После того как копирование завершено, нужно отредактировать файл fstab
root@OpenWrt:~# vi /etc/config/fstab
находим и меняем секцию mount
config mount
option target /overlay
option device /dev/sda1
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
Сохраняемся и делаем reboot
Система должна загрузится с флешки, проверить это можно набрав df -h (увидим размеры разделов)
Дальше приступим к установке Asterisk. Я выбрал версию asterisk11, т.к. для этой версии есть собранный пакет chan-dongle, который необходим для работы USB модема и Asterisk
opkg install asterisk11-chan-dongle
opkg install asterisk11-codec-alaw
opkg install asterisk11-codec-gsm
opkg install asterisk11-app-sms
дальше запускаем демон Asterisk
если он был запущен делаем stop start
Далее входим в консоль управления Asterisk
пишем туда module load chan_dongle.so (или ругнётся что уже запущен или запустится)
вводим dongle show devices
будет что то вроде такого
OpenWrt*CLI> dongle show devices
ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
dongle0 0 Free 16 3 3 life:) BY E173 11.126.16.00.715 861976xxxxxxxxxxx 257040xxxxxxx 3752592xxxxxxx
Значения IMEI и IMSI нужно записать, нам они понадобсятся
Открываем /etc/asterisk/dongle.conf и в самом низу где секция [dongle0] пишем:
[dongle0]
audio=/dev/ttyUSB1 ; tty port for audio connection; no default value
data=/dev/ttyUSB2 ; tty port for AT commands; no default value
imei=861xxxxxxxxxxxxx
imsi=257xxxxxxxxxxxxx
context=dongle-incoming;
group=0
rxgain=3;
txgain=3;
resetdongle=yes;
u2diag=-1
usecallingpres=yes
callingpres=allowed_passed_screen
В файле /etc/asterisk/modules.conf прописываем load => chan_dongle.so и перезапускаем Asterisk.
Запускаем asterisk -rv, выполняем dongle show devices и должны увидеть свой модем.
Дальше нужно отредактировать два файла, это sip.conf и extensions.conf
в /etc/asterisk/sip.conf в самом конце пишем следующее:
[ew8bak]
type=friend
host=dynamic
secret=пароль
context=default
canreinvite=yes
dtmfmode=rfc2833
permit=0.0.0.0/0.0.0.0
qualify=yes
Логин для софтового sip клиента будет ew8bak и пароль который вы указали (конечно это всё можно поменять в этой секции)
Дальше открываем extensions.conf
находим секцию [default] и пишем туда
exten => _375X.,1,Dial(Dongle/dongle0/holdother:+$
exten => _+375X.,1,Dial(Dongle/dongle0/holdother:+$
exten => _8X.,1,Dial(Dongle/dongle0/holdother:+375$
exten => _00375X.,1,Dial(Dongle/dongle0/holdother:+375$
exten => h,1,Hangup()
и закоментируем строку include => demo
[dongle-incoming]
include => dongle-incoming-sms
include => dongle-incoming-ussd
exten => _X.,1,Dial(SIP/ew8bak)
exten => h,1,Hangup()
Сохраняем и перезагружаем Asterisk.
Дальше я установил на компьютер SIP клиент PhonerLite с помощью его соединился с Asterisk и попробовал позвонить — всё работает 🙂
Если будут вопросы, постараюсь ответить.
OpenWRT Asterisk SIP GSM гейт : 23 комментария
- Metall 28.08.2015 Какая версия OpenWrt?
И второй вопрос, по такому принципу можно подключится к SIP с другой страны имея выделенный IP адрес?
- vladimir Автор записи 10.02.2016 Здравствуйте. Использовался Huawei E173. На счёт 4G может быть, но 3G модемы которые я знаю могут и звонить.
- vladimir Автор записи 09.03.2016 Здравствуйте, для Asterisk18 нужно собирать самому из исходников chan_dongle. С chan_datacard я не связывался поэтому не скажу. Да и что то не так вообще даже с Asterisk11 версии, с Георгием пол вечера пытались запустить — бестолку… Хотя возможно дело было в прошивке. Пробуйте использовтаь версию Asterisk11. На 18 версию потренеруюсь может на выходных к своему маршрутизатору.
- vladimir Автор записи 12.03.2016 Здравствуйте Леонид. Буквально несколько недель назад у сообщества openwrt произошло что то странное. Они потеряли свой сервер на котором всё хранилось. Сейчас они восстанавливают его, и на данный момент, не знаю как будет дальше, в конфигах opkg необходимо поменять зеркала на http://downloads.openwrt.org/snapshots/trunk/brcm47xx/generic/packages/
т.е. у них поменялась структура, может быть в будущих прошивках это учтут, но я не знаю. Я всё таки не разработчик openwrt и не помогаю их сообществу.