First time here? Check out the FAQ!

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

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

0

Всем привет!

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

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

спросил Apr 27 '16

MetrS Gravatar MetrS
1 1

Comments

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

MetrS (Apr 27 '16)edit

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

Out (Apr 27 '16)edit

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

awsswa (Apr 27 '16)edit

Как получить 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 (Apr 27 '16)edit

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

Out (Apr 27 '16)edit

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

MetrS (Apr 27 '16)edit

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

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

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

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

Out (Apr 27 '16)edit

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 (Apr 27 '16)edit

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

Out (Apr 27 '16)edit

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

MetrS (Apr 27 '16)edit

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

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

MetrS (Apr 28 '16)edit

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

MetrS (Apr 28 '16)edit

3 Ответа

1

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

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

ответил Apr 27 '16

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 возможно потребуется добавить адреса транков или пустой адрес. Если надо то же для других протоколов - надо делать условие по протоколу, но вобщемто также.

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

ответил Apr 28 '16

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

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

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

ответил Apr 27 '16

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

Comments

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

meral (Apr 28 '16)edit

Ваш ответ

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 ленту новостей

Статистика

Задан: Apr 27 '16

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

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

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