В качестве транка юзаем SIP-proxy, подключаемся как экстеншен... Если включить в General "Allow Anonymous Inbound SIP Calls", входящие замечательно ловятся и направляются через Inbound Route. Если выключить эту опцию (а её очень хочется выключить по понятным причинам), при попытке позвонить на наши номера в трубке слышно астерисковскую говорилку, что "number is not in service". Как побороть? Интересует два варианта - чтобы проходили входящие звонки на любые номера но только с IP прописанного транка, или только прописанный номер только с прописанного IP. Всё без задействования внешнего фаервола, разумеется :) Настройки SIP-транка судя по гуглу самые обычные:
Outbound Caller ID: номер
Dial Rules: |.
Trunk Name: Trunk-номер
PEER Details:
username=номер
type=peer
secret=пароль
nat=yes
insecure=very
host=1.2.3.4
fromuser=номер
fromdomain=1.2.3.4
dtmfmode=rfc2833
disallow=all
allow=alaw
USER Context: номер
USER Details:
type=user
secret=пароль
insecure=very
context=context-internal
Без "Allow Anonymous Inbound SIP Calls" при входящем звонке в лог пишется следующее:
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [номер@from-sip-external:1] NoOp("SIP/Trunk-номер-00000010", "Received incoming SIP connection from unknown peer to номер") in new stack
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [номер@from-sip-external:2] Set("SIP/Trunk-номер-00000010", "DID=номер") in new stack
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [номер@from-sip-external:3] Goto("SIP/Trunk-номер-00000010", "s,1") in new stack
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Goto (from-sip-external,s,1)
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:1] GotoIf("SIP/Trunk-номер-00000010", "0?from-trunk,номер,1") in new stack
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:2] Set("SIP/Trunk-номер-00000010", "TIMEOUT(absolute)=15") in new stack
[Mar 24 20:45:40] VERBOSE[3606] logger.c: Channel will hangup at 2011-03-24 20:45:55.000 MSK.
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:3] Answer("SIP/Trunk-номер-00000010", "") in new stack
[Mar 24 20:45:40] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:4] Wait("SIP/Trunk-номер-00000010", "2") in new stack
[Mar 24 20:45:42] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:5] Playback("SIP/Trunk-номер-00000010", "ss-noservice") in new stack
[Mar 24 20:45:42] VERBOSE[3606] logger.c: -- <sip trunk-номер-00000010>="" playing="" 'ss-noservice.gsm'="" (language="" 'en')<="" p="">
[Mar 24 20:45:47] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:6] PlayTones("SIP/Trunk-номер-00000010", "congestion") in new stack
[Mar 24 20:45:47] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:7] Congestion("SIP/Trunk-номер-00000010", "5") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: == Spawn extension (from-sip-external, s, 7) exited non-zero on 'SIP/Trunk-номер-00000010'
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Executing [h@from-sip-external:1] NoOp("SIP/Trunk-номер-00000010", "Hangup") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Executing [h@from-sip-external:2] Set("SIP/Trunk-номер-00000010", "DID=s") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Executing [h@from-sip-external:3] Goto("SIP/Trunk-номер-00000010", "s,1") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Goto (from-sip-external,s,1)
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:1] GotoIf("SIP/Trunk-номер-00000010", "0?from-trunk,s,1") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:2] Set("SIP/Trunk-номер-00000010", "TIMEOUT(absolute)=15") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: Channel will hangup at 2011-03-24 20:46:04.000 MSK.
[Mar 24 20:45:49] VERBOSE[3606] logger.c: -- Executing [s@from-sip-external:3] Answer("SIP/Trunk-номер-00000010", "") in new stack
[Mar 24 20:45:49] VERBOSE[3606] logger.c: == Spawn extension (from-sip-external, s, 3) exited non-zero on 'SIP/Trunk-номер-00000010'
В остальном этот наш транк-экстеншен замечательно регистрируется на вышестоящем прокси, исходящие звонки без проблем идут...
попробовать type=peer заменить на type=friend
и подключайтесь не как экстеншн, а как транк. Проще и понятнее будет рутинг.
И попробовать host=1.2.3.4 заменить на host=dynamic
как как.стандартным методом. включаете guest. смотрите с какого адреса приходит запрос на соединение. создаете транк с этим адресом и параметром insecure=port если не помогло, повторяете пока не заполните все адреса с которых приходят звонки. вообще это сотни раз везде описано.
Задан: 2011-03-24 20:41:51 +0400
Просмотрен: 1,730 раз
Обновлен: Mar 25 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.