Маршрутизация входящих SIP-звонков Asterisk – фальшивая аутентификация отклонена

Вопрос или проблема

Мы пытаемся обработать входящие SIP-звонки на нашем сервере Asterisk, но почему-то всегда получаем либо 403, либо 603 (которые должны быть одинаковыми?)

Что должно происходить, если всё работает:

Пользователь звонит на сервисный номер
-> удалённый Asterisk принимает звонок с PSTN и перенаправляет на наш Asterisk -> наш Asterisk принимает входящий SIP-звонок -> в зависимости от DDI/DID согласно плану набора наш сервер начинает внешний звонок на “whatever_target” (это может быть внутренний IP-телефон или внешний номер PSTN)

Что работает на данный момент:

Если мы настраиваем телефон первичного абонента как внутренний номер, это работает правильно, так как наш Asterisk корректно его принимает и перенаправляет

Большая проблема в этом:

Очевидно, что мы не можем настраивать входящие внутренние номера, так как это сервисная линия, на которую будут звонить случайные люди

Ошибка в журнале:

492212XXXXXXXX – реальный номер телефона за сервисным номером

43650XXXXXXX – телефон клиента, который звонит на сервисный номер

<--- SIP прочитано с UDP:remote-server-ip:5060 --->
INVITE sip:492212XXXXXXXX6@our-server-ip:5060 SIP/2.0
Via: SIP/2.0/UDP remote-server-ip:5060;rport;branch=z9hG4bK-6d70-1406058084-1272-462
Call-ID: 64d6-439-6222014194124-inCGN2-2-remote-server-ip
CSeq: 2 INVITE
Max-Forwards: 70
To: <sip:492212XXXXXXXX6@our-server-ip:5060>
From: "43650XXXXXXX"<sip:43650XXXXXXX@remote-server-ip>;tag=95ffcd055e0f78f7d5d397020e89288df0ec4476
User-Agent: Dialogic-SIP/10.5.3.372 inCGN2 2
Contact: <sip:43650XXXXXXX@remote-server-ip:5060>
Allow: INVITE, BYE, REGISTER, ACK, OPTIONS, CANCEL, SUBSCRIBE, NOTIFY, INFO, REFER, UPDATE
Supported: path, replaces, timer, tdialog
Session-Expires: 1800
Expires: 300
Organization: Dialogic
Authorization: Digest username="", realm="asterisk", nonce="10ecaeef", response="69597a5b260ecf8c217193b054463175", algorithm=MD5, uri="sip:our-server-ip"
Content-Type: application/sdp
Content-Length: 434

v=0
o=Dialogic_SDP 1919001 0 IN IP4 remote-server-ip
s=Dialogic-SIP
c=IN IP4 83.125.45.83
t=0 0
m=audio 8228 RTP/AVP 0 8 18 4 96 97 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=yes
a=rtpmap:4 G723/8000
a=fmtp:4 bitrate=6.3
a=rtpmap:96 iLBC/8000
a=fmtp:96 mode=30
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=silenceSupp:off - - - -
<------------->
--- (17 заголовков 19 строк) ---
Отправка на remote-server-ip:5060 (нет NAT)
Использование INVITE-запроса в качестве базового запроса - 64d6-439-6222014194124-inCGN2-2-remote-server-ip
Нет соответствующего пира для '43650XXXXXXX' с 'remote-server-ip:5060'
[Jul 22 19:41:24] УВЕДОМЛЕНИЕ[30280]: chan_sip.c:22518 handle_request_invite: Отправка поддельного отказа в авторизации для устройства "43650XXXXXXX"<sip:43650XXXXXXX@remote-server-ip>;tag=95ffcd055e0f78f7d5d397020e89288df0ec4476

<--- Передача (нет NAT) на remote-server-ip:5060 --->
SIP/2.0 403 Запрещено (Ошибка аутентификации)
Via: SIP/2.0/UDP remote-server-ip:5060;branch=z9hG4bK-6d70-1406058084-1272-462;received=remote-server-ip;rport=5060
From: "43650XXXXXXX"<sip:43650XXXXXXX@remote-server-ip>;tag=95ffcd055e0f78f7d5d397020e89288df0ec4476
To: <sip:492212XXXXXXXX6@our-server-ip:5060>;tag=as52e8819e
Call-ID: 64d6-439-6222014194124-inCGN2-2-remote-server-ip
CSeq: 2 INVITE
Server: Asterisk PBX 1.8.10.1~dfsg-1ubuntu1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0


<------------>
Запланировано разрушение SIP-диалога '64d6-439-6222014194124-inCGN2-2-remote-server-ip' через 32000 мс (Метод: INVITE)

<--- SIP прочитано с UDP:remote-server-ip:5060 --->
ACK sip:492212XXXXXXXX6@our-server-ip:5060 SIP/2.0
Via: SIP/2.0/UDP remote-server-ip:5060;rport;branch=z9hG4bK-6d70-1406058084-1272-462
Call-ID: 64d6-439-6222014194124-inCGN2-2-remote-server-ip
CSeq: 2 ACK
Max-Forwards: 70
To: <sip:492212XXXXXXXX6@our-server-ip:5060>;tag=as52e8819e
From: "43650XXXXXXX"<sip:43650XXXXXXX@remote-server-ip>;tag=95ffcd055e0f78f7d5d397020e89288df0ec4476
User-Agent: Dialogic-SIP/10.5.3.372 inCGN2 2
Content-Length: 0

sip.conf для входящих звонков

name: incoming
defaultuser: 492212XXXXXX
regexten: null
secret: null
context: home
canreinvite: yes
host: remote-server-ip
ipaddr: null
insecure: invite
port: 5060
disallow: all
allow: g729;ilbc;gsm;ulaw;alaw
dtmfmode: rfc2833
fromdomain: our-server-ip (мы также тестировали с IP удаленного сервера)
nat: yes
qualify: yes
type: friend
outboundproxy: our-server-ip (мы также тестировали с IP удаленного сервера)
allowguest: yes (в надежде, что это позволит все звонки, но не сработало)

Конфигурация внутренних номеров:

'297', 'home', '492212XXXXXX', '1', 'Dial', 'SIP/101'
'298', 'home', '492212XXXXXX101', '1', 'Dial', 'SIP/101'
'296', 'home', '_43ZX.', '1', 'Dial', 'SIP/101'

Каков правильный способ реализации общего списка доверенных номеров для входящих звонков на “remote-server-ip”?

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

Могу ли я как-то приложить метод аутентификации, который будет прикреплён к входящим звонкам через настройки remotesecret/proxy?

Я должен признаться, что мой предыдущий опыт работы с Asterisk в основном заключался в настройке нескольких внутренних IP-телефонов и всё ^^

Судя по тому, что я вижу, у вас отсутствует определение пира для вашего “43650XXXXXXX” в sip.conf

Я также отмечаю, что ваши команды “dial” используют “101”, а не “43650XXXXXXX”. Ваша команда “dial” должна ссылаться на ваш SIP-пир, на который вы хотите перенаправить звонок.

Таким образом, вы получаете 403, потому что нет совпадения для попытки SIP-соединения.

Рекомендуемое чтение:

http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/DeviceConfig_id216341.html

Ответ или решение

Ваша проблема заключается в том, что Asterisk не может найти соответствующий SIP-абонент (peer) для входящих вызовов от вашего удаленного SIP-сервера. Причины ошибки 403 ("Forbidden") связаны с отсутствием правильно настроенного SIP-абонента для номера "43650XXXXXXX", который является вызывающим абонентом.

Вот несколько шагов и рекомендаций для решения данной проблемы:

  1. Определение SIP-пира: Вам нужно добавить определение для SIP-пира, который соответствует вызывающему абоненту. Это можно сделать в вашем файле sip.conf. Например:

    [43650XXXXXXX]
    type=friend
    host=dynamic
    context=home
    insecure=invite
    nat=yes

    Это позволит вашему Asterisk принимать вызовы от этого абонента.

  2. Настройка контекста: Убедитесь, что контекст ‘home’, который вы указали в определении пира, содержит соответствующие расширения для обработки входящих вызовов. Это может выглядеть следующим образом в extensions.conf:

    [home]
    exten => _492212XXXXXX,1,Dial(SIP/101)

    Здесь предполагается, что у вас есть внутренний SIP-абонент с номером ‘101’, который должен быть вызван при поступлении вызова на данный номер.

  3. Параметры безопасности: В вашем случае можно рассмотреть возможность использования параметров аутентификации. Если ваш удаленный сервер поддерживает это, вы можете добавить username и secret в вашу конфигурацию SIP-пира:

    [43650XXXXXXX]
    type=friend
    host=dynamic
    context=home
    insecure=invite
    nat=yes
    username=ваш_логин
    secret=ваш_пароль

    Если у вас нет возможности предоставить аутентификацию, необходимо оставить параметр insecure=invite, чтобы Asterisk мог обрабатывать вызовы без аутентификации.

  4. Используйте allowguest с осторожностью: Обратите внимание, что параметр allowguest=yes может оставить вашу систему уязвимой. Лучше четко определить, какие SIP-пиры могут совершать входящие вызовы.

  5. Проверка конфигурации: После внесения изменений проверьте конфигурацию с помощью команды в консоли Asterisk:

    asterisk -rvvvvv

    Это позволит вам увидеть журналы и проверить, принимаются ли ваши вызовы корректно.

  6. Тестирование: Выполните тестовые вызовы от удаленного сервера и следите за журналами Asterisk. Если вызовы продолжают завершаться с ошибкой 403, проверьте, не блокирует ли что-либо ваш Asterisk, такие как проблемы с NAT или IP-фильтрация.

Следуя этим шагам, вы должны быть в состоянии успешно настроить Asterisk для обработки входящих SIP-вызовов от вашего удаленного сервера. Если все еще возникают проблемы, пожалуйста, предоставьте дополнительные логи, чтобы помочь в диагностике.

Оцените материал
Добавить комментарий

Капча загружается...