Уровень сложности конфигурации – 4,5 из 5. / Время на прочтение и реализацию – 4 часа.
В предыдущей статье мы коснулись вопроса запуска Asterisk на Raspberry Pi для внутренней связи на даче.
В этой статье мы озаботимся приемом и осуществлением звонков в "город".
Здесь будет описана не совсем часто используемая конфигурация. Дело в том, что в качестве внешнего провайдера у нас будет Onlime (Ростелеком). Так получилось, что в городе у меня именно этот провайдер, а он помимо доступа в Интернет и телевидения вручил небольшую коробочку, которая оказалась SIP-шлюзом. У шлюза с одной стороны Интернет, а с другой порт FXS для аналогового телефонного аппарата. В дополнение к коробочке был выдан московский городской номер в коде +7 499.
Почему бы этот номер не прокинуть на дачу?
Однако все не так просто.
Вся проблема в том, что господа из Ростелеком сделали ограничение. Их коробочка или ваше собственное оборудование смогут зарегистрироваться на их SIP коммутаторе только если обладают IP адресами из их сети. То есть, так просто зарегистрироваться и совершать звонки из любой точки мира у вас не получится. Конечно, если вы не вспомните про VPN.
В моем случае, я уже пользовался VPNKI и захотел собрать конфигурацию с их помощью.
Чтобы поставить такую коробочку на даче мне пришлось проделать несколько шагов.
Цель этих настроек – сделать так, чтобы коробочка с SIP телефоном (или ваш SIP клиент на смартфоне) подключились к сети Ростелеком через ваш домашний маршрутизатор. Так вы обойдете ограничения провайдера и сможете пользоваться московским городским номером в любом месте.
Вторая статья, которая поможет нам реализовать эту схему рассказывает о том, как сделать выход в Интернет через один из своих VPN туннелей. По сути, нам придется воспользоваться результатами этой конфигурации с тем отличием, что через один выбранный VPN туннель у вас будет выходить не весь трафик в Интернет, а лишь трафик протокола SIP к шлюзу Ростелеком.
Итак, вот что необходимо сделать.
Но, как обычно, сначала общая схема и краткое пояснение.
В сети, где расположен наш Asterisk, а точнее на устройстве 2, должен существовать маршрут к коммутатору Ростелеком/Onlime – 77.37.128.140. Он должен вести в сеть VPNKI.
На сервере VPNKI необходимо воспользоваться функцией «маршрут по умолчанию». Тогда весь "неизвестный" трафик пойдет по этому маршруту. Ведь маршрут к 77.37.128.140 впрямую нигде на сервере VPNKI не прописан, а значит является «неизвестным».
На устройстве 1 необходимо настроить маршрутизацию трафика из VPN туннеля в сеть провайдера Ростелеком.
Начнем...
Это самый простой шаг. Отключите все соединения.
В разделе «Мои настройки» - «Дополнительно» - «Маршрут по умолчанию» выберите туннель, который будет вести к вашему домашнему маршрутизатору. Речь идет о туннеле user101. Теперь этот туннель будет являться «маршрутом по умолчанию» для всего вашего трафика сети VPN. Эта установка будет применяться к серверу VPNKI в тот момент, когда туннель user101 будет подключаться. Эта маршрут будет удаляться с сервера VPNKI тогда, когда туннель user101 разрывает свое соединение.
Давайте проверим.
После выбора «маршрута по умолчанию» на сайте VPNKI установите VPN соединение с вашего домашнего маршрутизатора. Зайдите на страницу «Инструменты» - «Инструменты» и нажмите там кнопку «Таблица маршрутов».
Вы должны будете увидеть новый маршрут, который звучит как default via 172.16.100.100 dev ppp143. Этот маршрут прописывается в системе автоматически, как только осуществляется подключение указанным туннелем.
А вот это самый сложный пункт. Здесь я бы не хотел переписывать предыдущую статью поэтому просто даю ссылку.
Необходимо пройти пункты 3.1, 3.2 и 3.3.
После тяжелой, но успешной настройки давайте проверим.
Конечно, SIP-сервер Onlime пингуется с домашнего маршрутизатора DLink
Но теперь он также успешно пингуется и со страницы «Инструменты».
Это совсем не сложно. Достаточно добавить новый статический маршрут, который будет направлять трафик к SIP серверу Onlime в VPN туннель.
Давайте проверим. О, чудо! Дачный маршрутизатор успешно пингует коммутатор Onlime через VPN туннель. Если не уверены, что пинг идет именно через VPN, то выполните команду traceroute.
Что же, остался последний шаг. Как был настроен Asterisk для внутренней связи было описано в части 1.
Теперь необходимо.
1. Проверить что Raspberry Pi успешно пингует сервер Onlime.
Тут все просто.
2. Добавить в конфигурацию Asterisk параметры для регистрации на сервере Onlime. Ну и создать правила для обработки входящего вызова и правила набора номера в «город».
Внесем изменения в Sip.conf.
Добавим в раздел [general]
следующую строку.
register => =<телефонный_номер_выданный_onlime_с_кодом_города>:<пароль_выданный_onlime>@tel2.moscow.rt.ru:5060/99
Небольшое пояснение.
Кроме этого, в раздел [general]
нужно добавить и описание подключения. Я назвал его [rt].
[rt]
secret=<пароль_выданный_onlime>
remotesecret=<пароль_выданный_onlime>
transport=udp
defaultuser=<телефонный_номер_выданный_onlime_с_кодом_города>
videosupport=no
trunkname=rt
host=tel2.moscow.rt.ru
type=friend
context=dacha
allow=alaw
allow=ulaw
allow=g729
allow=g726
allow=all
allow=gsm
insecure=invite
fromuser=<телефонный_номер_выданный_onlime_с_кодом_города>
fromdomain=tel2.moscow.rt.ru
callerid=<телефонный_номер_выданный_onlime_с_кодом_города>
nat=no
directmedia=no
dtmfmode=rfc2833
Ну и последние дополнения в конфигурацию asterisk нужно сделать в файле extensions.conf.
В контекст [dacha] добавьте следующие строки.
; groups – номер 99 как группа вызова для всех телефонов.
exten => 99,1,Dial(SIP/10&SIP/11&SIP/20&SIP/21&SIP/22&SIP/55)
; Dial out – правило вызова в город через 0.
exten => _0.,1,Dial(SIP/rt/${EXTEN:1})
Все. Теперь перезагрузим Asterisk и смотрим ...
sudo service asterisk stop
sudo service asterisk start
Давайте посмотрим на факт регистрации на коммутаторе SIP Onlime. Перейдите к интерактивному режиму Asterisk при помощи команды.
[code]sudo rasterisk[/code]
В командном режиме можно посмотреть ситуацию с подключенными телефонами.
[code]sip show peers[/code]
Здесь вы должны увидеть факт успешной регистрации Asterisk на коммутаторе Onlime.
Теперь пробуем позвонить в город, набрав 0 и далее код города и номер телефона.
Ну и наконец - вызов из города на ваш номер Onlime. При этом вызов должен поступить на все номера, входящие в группу с номером 99.
Вот и все. Теперь московский номер можно иметь в любой точке мира.
Если что-то пошло не так, то воспользуйтесь командами работы с Asterisk, которые есть в конце предыдущей статьи.