Цель следующая - прицепить смартфон вообще (экспериментирую с HTC Desire X dual sim) к офисному астериску через openVPN-канал. Не напрямую по двум причинам:
1. Не хочу выставлять порты астериска наружу.
2. Попадал в ситуации, когда оператор, предоставляющий доступ в интернет грубо резал все, что не связано с http[s] и почтой.
Вывод - загоняем SIP в VPN, которая пойдет на 443-й порт офисного роутера.
Реализация:
0.На смартфоне Android 4.1.1. В качестве SIP-клиента беру 2 программы SIPDroid и Vimphone (там 729-й кодек встроен).
1. Первый шаг - берем программу SIPDroid (HTC зачем-то вырезала из прошивки возможность VoIP подключения стандартной звонилки). Подключаемся как SIP-телефон к офисной АТС по WiFi. Всё работает безупречно.
2. Шаг второй. Туннель openVPN поднимаю с помощью "openVPN для Android". Эта программа не требует рутования смартфона. Туннель поднимается успешно, офисные сервера я вижу, могу обмениваться с ними файлами. Подключаюсь к астериску... В итоге - меня слышно, я никого не слышу.
Разбираю полеты: Смартфон подключается к Астериску не с IP-адреса, который назначен через openVPN, а с IP-адреса, который смартфон получает от WiFi-DHCP-сервера (это хорошо видно по sip show peers). Соответственно ответный трафик направляется мимо кассы и я ничего не слышу. Это если пользоваться SIPDroid'oм. Vimphone ведет себя более хитро - он проводит двойную регистрацию, первая - с DHCP-адреса, вторая, сразу же за первой, с openVPN-адреса. sip show peers показывает вторую регистрацию. Но все равно - ответного трафика нет...
Вопрос - как корректно подключиться с андроидофона к офисному астериску через туннель openVPN? Как привязать звонилки к именно openVPN-адресу?
чтоб были конкретные ответы - пишите адреса локалки, нат, клиента нат и сервера астера
_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
Про NAT - а причем здесь NAT? Я же сказал, что доступ к * из внешнего мира только через openVPN. То есть - для * все входящие соединения есть соединения локальной сети. И NAT не играет ни разу. Более того - есть ноут, который тоже является клиентом openVPN. На том же VPN-сервере. И никаких проблем добраться с него до * из программы linphone нет. Всё работает как часы. Сервер регистрирует клиента с IP, который получен клиентом от openVPN. Более того - у меня есть второй на фирме астериск (думаю и о третьем). Который связан с основным именно по opnenVPN. Проблем здесь нет.
На андроиде же - клиент попадает на сервер со своим "локальным", от DHCP, адресом. Почему этот "локальный" адрес проходит через openVPN - я понять не могу. Причем:
1. SIPDroid вообще ставит на игнор openVPN адресацию.
2. Vimphone вначале регистрируется с dhcp-адреса и сразу же за этим с openVPN-адреса. * показывает, что клиент законнекчен с openVPN-адреса, но ответный трафик, похоже (вечером уточню) гонит на dhcp-адрес. Где его получать некому...
поставьте в параметрах extension который идет с телефона NAT-YES
это ведь не долго ?
1. Я поднимаю на андроиде openVPN. Получаю, при этом, IP-адрес из сети 192.168.128.0 (конкретный адрес зависит от ключа, с которым идет коннект).
2. Регистрируюсь на астеристке с sip андроида. Регистрируется оно не с адреса openVPN, а с какого-то dhcp серого адреса (например, 78.25.чегото.там, если иду через мегафоновскую 3G-сеть).
3. Пакеты от меня на астериск приходят. А отвечает он адресу 78.25.чегото.там... Куда эти пакеты будут направлены на роутере на котором реализована openVPN и который про этот адрес ни сном ни духом? В канал openVPN? С какой стати?
===================================
Попробовал... Заработало....
Последний раз редактировалось: Cruiser78 (Пн Янв 20, 2014 11:34)
она рабочая.
причем завелось не сразу. какие то софтовые телефоны на андроиде отказались так работать.
что ставил - уже не помню. помню что для отпуска делал.
_________________
Алексей Милько
В настройках SIP абонента в Астериске пропишите host=IP адресс внутренней сети.
Настройте, что бы клиенту OpenVPN с определенным MAC адресом выдавался определенный IP адрес. Это можно сделать резервацией в DHCP по MAC.
_________________
С уважением, DarkUser.
нормально это вот так
подсоединяю через vpn
получаю адрес из внутренней сети
присоединяюсь к внутреннему адресу сервера asterisk
криво вот так
подсоединяю через vpn
не получаю внутренний адрес
присоединяюсь к vpn адресу сервера asterisk
Идем по правильному пути:
1. Подключаемся по VPN.
2. Поднимается tun-интерфейс.
3. Этому tun-интерфейсу средствами openVPN присваивается адрес внутренней сети и задаются определенные правила маршрутизации.
4. Подключаемся к астериску по его внутреннему адресу, то есть через туннель openVPN, через интерфейс tun0.
Но подключение, почему-то, происходит не с адреса tun-интерфейса, а с адреса eth0 (я не знаю как там интерфейсы в андроиде именуются), который был получен по DHCP, когда поднимался или WiFi, или 3G.
Причем - если я работаю с ноута, где организован свой канал openVPN - такой заморочки не наблюдается. SIP-клиент коннектится к астериску именно с адреса tun-интерфейса. То есть с адреса, который был назначен в openVPN.
проверьте через traceroute
программа биндится на итервейсе подключенному к интернет, а не openvpn.
таких "программ" и для десктопных ОС хватает.
нужно попробовать другого клиента для SIP.
типа такого:
#маршрут на домашнюю сеть
route 192.168.33.0 255.255.255.0 192.168.2.1
#192.168.33.0 255.255.255.0 - домашняя подсеть
#192.168.2.1 - сервер овпн
ну или так:
redirect-gateway #тогда весь трафик пойдет через овпн
Added after 3 minutes:
а вообще выложи трассировку с астериска до андроида и с андроида до астера.
1. В настройках openVPN я издавна не использую имен. Только IP-адреса.
2. Настройка маршрутизации следующая:
| Код: |
| # cat /etc/openvpn/ccd/Alex-HTC # приcваиваем ip-адрес ifconfig-push 192.168.128.34 192.168.128.33 iroute 192.168.6.0 255.255.255.0 # роутинг на сети центрального офиса push "route 192.168.43.0 255.255.255.0 192.168.128.33" # роутинг на сеть второго офиса push "route 192.168.53.0 255.255.255.0 192.168.128.33" |
Ну и на самом астериске маршруты:
| Код: |
| # ip r 192.168.53.0/24 via 192.168.43.2 dev eth0 192.168.128.0/24 via 192.168.43.2 dev eth0 192.168.0.0/24 via 192.168.43.2 dev eth0 ..... default via 192.168.42.1 dev eth1 |
То есть, всё, что должно работать через OpenVPN заворачивается именно на OpenVPN-сервер. Дефолтный маршрут - на внешний роутер, который сидит на втором интерфейсе. Так что если * захочет отправить какой пакет на некий IP, который не есть "моя сеть", то кинет его на внешний роутер и такой кривой клиент ничего не получит.
Но я, похоже, добился устойчивого коннекта. А именно - спасибо awsswa за его настойчивость - включил NAT для клиента и трафик пошел правильно, в нужном направлении. Но это, считаю, неправильно, астериск должен получать пакеты с андроидного tun-интерфейса, с openVPN-адреса.
_________________
FreeBSD X.XX - Asterisk X.XX
Не просто же так придумали )))
_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
Благо Zoiperесть и под Android, iOS, Windows i Linux
I wse normalno rabotaet.
получилось что-то?
сколько уже советов "надавали", а о результате не слышно.