В качестве транка юзаем 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=alawUSER 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')
[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'
В остальном этот наш транк-экстеншен замечательно регистрируется на вышестоящем прокси, исходящие звонки без проблем идут...
почему
context=context-internal
?контекст должен быть типа
from-pstn , не знаю как в триксбокс, но подозреваю, что звонок вместо того что обрабатываться как входящий, обрабатывается через контекст для внутренних екстеншнов.поменяйте context.
> контекст должен быть типа
> from-pstn , не знаю как в триксбокс, но подозреваю, что звонок вместо
> того что обрабатываться как входящий, обрабатывается через контекст для внутренних екстеншнов.Пробовали from-trunk, from-pstn - тоже самое...
Да, в USER Context чего должно быть по логике, номер?
> Пробовали from-trunk, from-pstn - тоже самое...Что значит пробывал? у тя такие контексты вообще есть?
почитай доки по триксбокс, или посмотри конфиги, найди какой контекст отвечает за входящие, и поставь его.> Да, в USER Context чего должно быть по логике, номер?
По логике должен быть контекст,который обрабатывает входящие.
Или сам напиши контекст в конфигах и используй его.
Судя по твоим вопросам, ты понятия не имеешь что и как обрабатывается, советую сначала изучить доки,а потом уже использовать ПО.
Всё довольно просто решилось:PEER Details:
username=номер
type=peer
secret=пароль
nat=yes
insecure=very
host=IP
fromuser=номер
fromdomain=IP
dtmfmode=rfc2833
disallow=all
allow=alaw
context=from-trunkUSER Context: номер
USER Detail:
username=номер
type=peer
secret=пароль
qualify=yes
nat=yes
insecure=very
context=from-trunk
canreinvite=yes
host=IP