Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Запретить исходящие звонки пользователям VPN

0

Всем привет!

Имеется Asterisk FreePBX 13, все телефоны внутри. Снаружи если кто и подключается, то VPN пользователи (подсеть 10.0.1.*) с софтфонами. Им нужно разрешить только звонки между сотрудниками (внутри офиса). Запретить исходящие куда-либо во внешку. Входящие можно оставить.

Подскажите пожалуйста, как это грамотно реализовать в FreePBX?

удалить закрыть спам изменить тег редактировать

спросил 2016-04-27 13:23:17 +0400

MetrS Gravatar MetrS
1 1

Comments

Подозреваю, что это можно реализовать через custom contexts (custom destination), только вот как делать проверку IP адреса SIP-клиента? На уровне extensions_custom.conf?

MetrS ( 2016-04-27 13:45:11 +0400 )редактировать

Это определенные номера, или разные?

Out ( 2016-04-27 14:06:54 +0400 )редактировать

даже если и одинаковые - достаточно php скриптом перед звонком смотреть ip адрес клиента и в зависимости от ответа - давать звонить или нет

awsswa ( 2016-04-27 15:20:52 +0400 )редактировать

Как получить IP телефона я уже нашел, в extensionscustom.conf прописал exten => s,1,Set(telip=${CUT(CUT(SIPHEADER(Via), ,2),:,1)}) и получаю в консоли при звонке:

-- Executing [s@check-tel-ip:1] Set("SIP/1002-0000000a", "telip=192.168.0.175") in new stack Интересно, как в outbound routes засунуть этот кастомный конфиг.

Пытаюсь обрезать строку: exten => s,n,GotoIf($[ $["${telip:0:9}" = "192.168.4"] | $["${telip:0:9}" = "192.168.3"] ]?vpntel) Но получаю ноль: -- Executing [s@check-tel-ip:2] GotoIf("SIP/1002-0000000a", "0?vpntel") in new stack

MetrS ( 2016-04-27 15:47:44 +0400 )редактировать

awsswa, если одни и те же номера, то достаточно в custom-contexts пихнуть, с нужными разрешениями :)

Out ( 2016-04-27 16:07:26 +0400 )редактировать

Out, не подскажете как это сделать?

MetrS ( 2016-04-27 16:29:12 +0400 )редактировать

Ставьте Custom Contexts модуль, он находится в "Module Administration">>"Unsupported"

Создайте Custom Contexts, и откройте его, откроется много полей, думаю разберетесь.

Если надо, могу помочь бесплатно.

Подробно http://voxlink.ru/kb/freepbx/custom-context-freepbx/

Out ( 2016-04-27 18:28:07 +0400 )редактировать

Out, это немножко не подойдет. Мы не знаем какие номера выйдут через VPN сегодня, а какие завтра, а значит - привязка по номеру телефона не подойдет.

У меня почти получилось сделать все через custom destination:

extensions_custom.conf

[check-tel-ip] exten => s,1,Set(telip=${CUT(CUT(SIP_HEADER(Via), ,2),:,1)}) exten => s,n,GotoIf($["${telip:8:1}" = "0"]?officetel) exten => s,n,GotoIf($["${telip:8:1}" = "1"]?vpntel) exten => s,n(officetel),Goto(from-internal-trunk) exten => s,n(vpntel),Hangup

Далее, иду в Admin-Custom destinations и добавляю "check-tel-ip,s,1" пункт.

Далее, в Outbound Routes убираю Trunk Sequence for Matched Routes и снизу Optional Destination on Congestion ставлю Custom destination. Идея в том, что проверка IP телефона отдает ложь или правду для определенного exten, а если где-то правда - то вызов идет на другой Outbound route - в котором прописан нормально Trunk. Но пока это не работает, т.к. не передается набранный номер, а вместо него передается символ "s"

MetrS ( 2016-04-27 19:03:23 +0400 )редактировать

Ну так выдавайте определенный диапазон ext для них, тех которые по vpn коннектиться могут.

Out ( 2016-04-27 19:11:25 +0400 )редактировать

Они могут из офиса тоже с этими учетными записями звонить, и получится так, что в офисе постоянно включенный IP телефон с ext 101, пользователь приходит домой, включает на смартфоне софтфон через VPN с учеткой 101 - и спокойно звонит. Нужна проверка именно по IP адресу телефона (например, получать через SIP Head, пример я выше привел.).

MetrS ( 2016-04-27 19:21:38 +0400 )редактировать

zavulon, у пользователей должны оставаться одинаковые номера (учетные записи) как в офисе, так и при использовании VPN. Если я сделаю экстеншены для впн и буду их блочить на исходящие - то мне придется каждый раз (по запросу юзера) менять на эти экстеншены пользователей. Например: вася 1001 подключен в офисе. Приходит домой и звонит от Вася 1010 через впн - как тогда идентифицировать юзеров? У каждого будет по 2 учетки?

И на какой номер звонить потом Васе, если у него 2 номера? Играть в угадайку не каждый захочет. Можно сделать переадресацию с васи 1001 на васю 1010, но это долго. Или заставлять Васю делать DND при уходе с работы... В общем, легче замутить проверку, только как корректно - непонятно.

MetrS ( 2016-04-28 10:36:14 +0400 )редактировать

Meral, спасибо. Код понятен. Где мне делать обработку исходящих? В Outband routes убрать Trunk Sequence for Matched Routes и указать Optional Destination on Congestion = Custom destination? Сделать возврат управления в Custom destination?

MetrS ( 2016-04-28 14:33:00 +0400 )редактировать

3 Ответа

1

ну вы привяжите vpn пользователей к определенным экстеншенам, и не пускайте их наружу. Не понимаю в чем проблема то? Если сами аппараты внутри, то все ок. А софтфоны резать.

ссылка удалить спам редактировать

ответил 2016-04-27 22:10:18 +0400

zavulon Gravatar zavulon
238 17 2 13
1

Подготовка

1) в vpn настраиваете другую подсеть

Реализация

добавляете в extensions_custom.conf строчки

[macro-dialout-trunk-predial-hook]
exten => s,1,Set(peer=${CUT(CHANNEL(name),-,1)})
exten => s,n,Set(peer=${CUT(peer,/,2)})
exten => s,n,Set(ip=${SIPPEER(${peer},ip)})
exten => s,n,Set(subnet=${CUT(ip,.,1-3)})
exten => s,n,ExecIF($[ "${subnet}" == "192.168.22" ]?MacroExit);eсли больше одной разрешенной, добавьте еще такихже
exten => s,n,Playback(option-not-implemented); сеть не разрешена
exten => s,n,Hangup

здесь 192.168.22 - сеть с которой звонить можно Если испоользуете followme возможно потребуется добавить адреса транков или пустой адрес. Если надо то же для других протоколов - надо делать условие по протоколу, но вобщемто также.

ссылка удалить спам редактировать

ответил 2016-04-28 14:07:35 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

В FreePBX никак. В голом Астериске выпендриться можно, но нужно иметь глубокие знания в нескольких областях.

ссылка удалить спам редактировать

ответил 2016-04-27 13:35:41 +0400

amonra Gravatar amonra flag of Ukraine
2301 26 13 65
http://lantec.ua/

Comments

Что значит никак? Давайте если вы не в курсе, вы так и говорите "не знаю достаточно freepbx чтоб ответить на вопрос.

meral ( 2016-04-28 13:43:49 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2016-04-27 13:23:17 +0400

Просмотрен: 597 раз

Обновлен: Apr 28 '16

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.