Страница 1 из 3

Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 14:19
Finn
Настройка пира:

username=2122167091985
type=peer
secret=********
qualify=yes
nat=force_rport,comedia
insecure=invite,port
host=11509.voice.plusofon.ru
fromuser=2122167091985
fromdomain=11509.voice.plusofon.ru
dtmfmode=auto
disallow=all
directmedia=no
allow=alaw&ulaw

Регистрация проходит - проверял. 200 ОК. Смотрю пакеты на входящем вызове:

INVITE
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:s@178.218.112.21:5060 SIP/2.0
Method: INVITE
Request-URI: sip:s@178.218.112.21:5060
Request-URI Host Part: 178.218.112.21
Request-URI Host Port: 5060
[Resent Packet: False]
Message Header
Record-Route: <sip:185.54.49.80;lr=on;ftag=B90Q9S1mBgQUc>
Record-Route URI: sip:185.54.49.80;lr=on;ftag=B90Q9S1mBgQUc
Record-Route Host Part: 185.54.49.80
Record-Route URI parameter: lr=on
Record-Route URI parameter: ftag=B90Q9S1mBgQUc
Via: SIP/2.0/UDP 185.54.49.80;branch=z9hG4bK1a51.81d70bc1a9d5a9a2d29bbb1e5ee8d215.0
Transport: UDP
Sent-by Address: 185.54.49.80
Branch: z9hG4bK1a51.81d70bc1a9d5a9a2d29bbb1e5ee8d215.0
Via: SIP/2.0/UDP 185.54.49.82:11000;received=185.54.49.82;rport=11000;branch=z9hG4bKep2taQmacac4r
Transport: UDP
Sent-by Address: 185.54.49.82
Sent-by port: 11000
Received: 185.54.49.82
RPort: 11000
Branch: z9hG4bKep2taQmacac4r
Max-Forwards: 48
From: "79266990909" <sip:79266990909@11509.voice.plusofon.ru>;tag=B90Q9S1mBgQUc
SIP from display info: "79266990909"
SIP from address: sip:79266990900@11509.voice.plusofon.ru
SIP from address User Part: 79266990909
SIP from address Host Part: 11509.voice.plusofon.ru
SIP from tag: B90Q9S1mBgQUc
To: <sip:2122167091985@11509.voice.plusofon.ru>
SIP to address: sip:2122167091985@11509.voice.plusofon.ru
SIP to address User Part: 2122167091985
SIP to address Host Part: 11509.voice.plusofon.ru
Call-ID: b3b6670c-2967-11ef-a214-2f4e88e8e218
[Generated Call-ID: b3b6670c-2967-11ef-a214-2f4e88e8e218]
CSeq: 84581750 INVITE
Sequence Number: 84581750
Method: INVITE
Contact: <sip:mod_sofia@185.54.49.82:11000>
Contact URI: sip:mod_sofia@185.54.49.82:11000
Contact URI User Part: mod_sofia
Contact URI Host Part: 185.54.49.82
Contact URI Host Port: 11000
User-Agent: 2600hz
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 268
Diversion: <sip:8864852608608@185.54.49.80>;reason=unconditional
Remote-Party-ID: "79266990909" <sip:79266990909@11509.voice.plusofon.ru>;party=calling;screen=yes;privacy=off
[Expert Info (Note/Undecoded): Unrecognised SIP header (remote-party-id)]
[Unrecognised SIP header (remote-party-id)]
[Severity level: Note]
[Group: Undecoded]
Message Body

В ответ моя PBX отдает
SIP 750 Status: 401 Unauthorized |

На Астериске
send_check_user_failure_response: Failed to authenticate device "79266990909" <sip:79266990909@11509.voice.plusofon.ru>;

Я подозреваю, что с той стороны как-то очень своеобразно формируют SIP пакеты и моя PBX не может понять кто и как с ней общается.
С другим провайдером проблем не было - по образцу настроил и все работает. А с этим прям беда какая-то.
Может кто по приведенным данным поймет в чем проблема и напишет как поправить?

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 14:41
Glukinho
С какого IP-адреса приходит INVITE? Если НЕ с того, который 11509.voice.plusofon.ru (185.54.49.83), то астериск не может сопоставить этот INVITE с пиром, считает звонок непонятно от кого и отвечает 401 Unauthorized.

Судя по этой строчке: Sent-by Address: 185.54.49.82 - так и происходит.

Выясните у провайдера все IP-адреса, с которых может приходить INVITE от них, и создайте одинаковые пиры, которые отличаются только host=<IP-адрес>

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 14:57
Finn
Провайдер сказал так:
185.54.49.80/30
80 и 83 - регистрация, 81,82 - голос.

nslookup кажет
Не заслуживающий доверия ответ:
11509.voice.plusofon.ru internet address = 185.54.49.80
11509.voice.plusofon.ru internet address = 185.54.49.83

Смотрю пакеты:
8 14:55:07.150129 185.54.49.83 192.168.10.2 SIP/SDP 1452 Request: INVITE sip:s@178.218.112.21:5060 |
9 14:55:07.150529 192.168.10.2 185.54.49.83 SIP 750 Status: 401 Unauthorized |

Вроде, все верно - с .83 прилетел.

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 14:59
Glukinho
покажите sip show peers
и sip show <peer_name>

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 15:27
Finn
Похоже, вы были правы. Спасибо за подсказку!

Сделал второй транк, host в обоих транках указал через IP, регистрацию оставил в одном транке. (Что характерно: регистрация проходит только по доменному имени.)

Звонок был принят АТС, но:

Executing [s@from-trunk:1] NoOp("SIP/PF_New_1-00009bf1", "No DID or CID Match") in new stack

Видимо, это как раз о чем провайдер говорил - он DID передает в поле
Diversion: <sip:8864852608608@185.54.49.83>;reason=unconditional

И как его оттуда выковыривать не знаю. Тем более, что у меня не asterisk, а Issabel...

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 15:36
ded
Строка регистрации должна заканчиваться /4991234567 где 4991234567 - городской номер, он же DID, который вам выдал провайдер. Вот по нему и разруливать.
Diversion: <sip:8864852608608 - это номер с которого был перенаправлен.
Выковыривать через SIP_HEADER в диалплане. Найдите примеры.
CLI> core show function SIP_HEADER
[Syntax]
SIP_HEADER(name[,number])

[Arguments]
number
If not specified, defaults to '1'.

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 15:41
Glukinho
Если провайдер действительно не умеет присылать звонок на нормальный DID (как написал сейчас ded), то направьте звонки от этих пиров в какой-нибудь custom контекст, где уже доставайте нужный номер из заголовка Diversion, как-то так:

Код: Выделить всё

[from-provider-custom]
exten => _X.,1,NoOp(${CONTEXT} / ${EXTEN})
same => n,Set(REAL_DID=${CUT(SIP_HEADER(Diversion),@,1)})
same => n,Set(REAL_DID=${CUT(REAL_DID,:,2)})
same => n,Goto(from-trunk,${REAL_DID},1)
тут делается в два шага:
1) сначала из строки <sip:8864852608608@185.54.49.83>;reason=unconditional выделяется первая часть до @: <sip:8864852608608
2) потом из строки <sip:8864852608608 выделяется вторая часть после двоеточия, получается 8864852608608
3) переходим дальше в обычный диалплан, как будто этот номер пришел от провайдера в обычном месте в строке запроса INVITE.

Для пиров укажите context=from-provider-custom


PS но 99% просто сделайте как написал ded и всё получится само

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 16:01
Finn
ded писал(а):Строка регистрации должна заканчиваться /4991234567 где 4991234567 - городской номер, он же DID, который вам выдал провайдер. Вот по нему и разруливать.
Так у меня в транке три десятка номеров от провайдера - на каждый номер отдельный транк заводить?
ded писал(а):Выковыривать через SIP_HEADER
Это уже надо глубоко изучать сам asterisk. А я через GUI настраиваю. Но за подсказку спасибо - поищу что и как...

Glukinho писал(а):Если провайдер действительно не умеет присылать звонок на нормальный DID (как написал сейчас ded), то направьте звонки от этих пиров в какой-нибудь custom контекст, где уже доставайте нужный номер из заголовка Diversion, как-то так:
Да, механику я понял. Я только не пойму на фига провайдер такую шнягу сделал. У меня есть и другие провайдеры - написал, что хочу перейти на транки с регистрацией, прислали настройки, я подготовил транки, в час Х переключили режим работы с обеих сторон - и все работает. А с этим - проблемы на ровном месте...

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 16:05
Glukinho
Покажите строку регистрации, которая у вас сейчас есть.
Так у меня в транке три десятка номеров от провайдера - на каждый номер отдельный транк заводить?
Если провайдер дал на каждый номер свою пару логин-пароль - то да, нужно 30 регистраций (для входящих) и 30 транков (для исходящих).
Если провайдер дал одни данные на все номера - нужно смотреть, в каком виде отправлять и принимать.
Я только не пойму на фига провайдер такую шнягу сделал.
Это за рамками данного форума )

Re: Транк с регистрацией, не проходят входящие.

Добавлено: 13 июн 2024, 16:35
Finn
Glukinho писал(а):Покажите строку регистрации, которая у вас сейчас есть.
2122167091985:xxxxxxxxxxx@11509.voice.plusofon.ru
Только вот я сейчас понял, что я ее сам сочинил... :)
Glukinho писал(а):Если провайдер дал на каждый номер свою пару логин-пароль - то да, нужно 30 регистраций (для входящих) и 30 транков (для исходящих).
Если провайдер дал одни данные на все номера - нужно смотреть, в каком виде отправлять и принимать.
Это не он, это я просил сделать. Номеров много - и зачем мне регистрации на каждый номер? Только FOP загромождать.
Сейчас у меня статика и с этим провом есть несколько договоров по разным юрлицам. А транков всего два - по двум IP. Настроена пересылка звонков по SIP-URI DID@pbx.domain. И замечательно работает.

Но я хочу сейчас малость перенастроить АТС, вывести из-под NAT, поменять IP прова и т.д.. Для этого и перехожу на транки с регистрацией - чтобы я мог работать с любого IP. И вот тут собака и порылась...
Glukinho писал(а):Это за рамками данного форума )
Да понятно...