Вопрос или проблема
У меня возникли проблемы с регистрацией расширения, настроенного на Huawei HG8240H с сервером Asterisk.
Проблема, с которой я сталкиваюсь, заключается в том, что маршрутизатор пытается зарегистрироваться с именем пользователя, как username@domain, и Asterisk не аутентифицирует его.
Версия Asterisk – 13.17.2, я знаю, что это старая версия, но нам нужен chan_sip, и мы пытаемся избежать pjsip на данный момент, поскольку он интегрирован в систему со «старым» генератором конфигурации.
2024/11/25 11:31:24.203851 10.133.0.2:5070 -> 10.133.0.1:5060
REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 10.133.0.2:5070;branch=z9hG4bKslppl010ki81pziij034s8kjn
Call-ID: [email protected]
From: <sip:[email protected]>;tag=m4p3zp4p
To: <sip:[email protected]>
CSeq: 2 REGISTER
Contact: <sip:[email protected]:5070;transport=udp>
Supported: 100rel,replaces,timer,privacy,in-dialog
Expires: 600
Accept: application/sdp
Authorization: Digest username="[email protected]",realm="asterisk",nonce="0eea25cd",uri="sip:example.com",response="80a8aa08cb37b9cd98f07c2bfb585610",algorithm=MD5
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER
Max-Forwards: 70
User-Agent: HUAWEI-EchoLife HG8240H/V3R015C10S130
Session-ID: 6a386963313133316369333473386b6a
Content-Length: 0
А вот лог Asterisk:
[2024-11-25T11:31:24.204385+0100] WARNING[4862]: chan_sip.c:17235 check_auth: несоответствие имени пользователя, имеем <extn-1000>, digest имеет <[email protected]>
[2024-11-25T11:31:24.204791+0100] NOTICE[4862]: chan_sip.c:28627 handle_request_register: Регистрация с '<sip:[email protected]>' не удалась для '10.133.0.2:5070' - Несоответствие имени пользователя/имени для аутентификации
И мой файл sip.conf:
[general]
context=default
dtmfmode=auto
relaxdtmf=yes
port=5060
bindaddr=0.0.0.0
tcpenable=no
nat=force_rport,comedia
srvlookup=yes
allow=!all,alaw
allowguest=no
alwaysauthreject=yes
prefixlanguage=yes
accept_outofcall_message=no
useragent=Test PBX
send_diversion=yes
videosupport=no
notifyringing=yes
notifyhold=yes
allowsubscribe=no
callcounter=no
tonezone=es
directmedia=no
[extn-1000]
defaultuser=extn-1000
context=local
secret=uRikmQvkvqxqyGor
dtmfmode=rfc2833
callerid=1000 <1000>
mailbox=1000@local
host=dynamic
type=friend
directmedia=yes
language=es
qualify=1000
qualifyfreq=30
accountcode=1000
call-limit=2
Редактировать: Если я устанавливаю “secret=” (пустой секрет) для расширения, оно регистрируется корректно, но таким образом это небезопасно, и я хотел бы этого избежать.
Ответ или решение
Вопрос: Несоответствие имени пользователя в Asterisk
Вы столкнулись с проблемой регистрации расширения на сервере Asterisk, который использует chan_sip
. Проблема, судя по предоставленным данным, связана с тем, что роутер Huawei HG8240H пытается зарегистрироваться с именем пользователя в формате username@domain
, в то время как сервер Asterisk ожидает определенное имя пользователя, настроенное в sip.conf
. Рассмотрим шаги по решению данной проблемы.
1. Анализ логов Asterisk
Логи сервера показывают следующие ошибки:
-
Неверное имя пользователя:
WARNING[4862]: chan_sip.c:17235 check_auth: username mismatch, have <extn-1000>, digest has <username@example.com>
Это говорит о том, что Asterisk не может сопоставить переданное имя пользователя
username@example.com
с тем, что он ожидает, в данном случае сextn-1000
. -
Ошибка регистрации:
NOTICE[4862]: chan_sip.c:28627 handle_request_register: Registration from '<sip:username@example.com>' failed for '10.133.0.2:5070' - Username/auth name mismatch
Это также подтверждает, что имя пользователя в пакете регистрации не совпадает с тем, что настроено в конфигурации.
2. Исправление конфигурации
Для решения проблемы необходимо настроить роутер (Huawei HG8240H) так, чтобы он использовал правильное имя пользователя, которое соответствует конфигурации в Asterisk.
-
Проверьте настройки SIP на роутере: Убедитесь, что роутер настроен на использование правильного имени пользователя. Это имя должно соответствовать тому, что указано в
sip.conf
:[extn-1000] ... defaultuser=extn-1000
-
Использование правильного формата: Попробуйте задать имя пользователя в формате
extn-1000
без домена. Если роутер поддерживает, настройте его для использования толькоextn-1000
вместоusername@example.com
.
3. Альтернативное решение
Если вы не можете изменить настройки роутера, можно рассмотреть возможность использования специального параметра в настройках Asterisk.
- Параметр
fromuser
: Вместо того чтобы полагаться только наusername
, вы можете настроить параметрfromuser
в конфигурации Asterisk для вашего расширения:[extn-1000] ... fromuser=extn-1000
4. Информация о безопасности
Вы упомянули, что при установке пустого secret=
регистрация проходит корректно, однако это создаёт уязвимость. Подходите ответственно к безопасности, всегда используйте сильные пароли.
-
Генерация надежного пароля: Убедитесь, что пароль для расширения
uRikmQvkvqxqyGor
является достаточно сложным и длинным, чтобы защитить вашу систему. -
Проверка шифрования: Если возможно, используйте шифрование для SIP-трафика, чтобы защитить ваши учетные данные.
Заключение
Проблема с несоответствием имени пользователя в Asterisk чаще всего связана с неправильными настройками на стороне клиента, в вашем случае — роутера Huawei. Обязательно убедитесь, что используете согласованные и безопасные параметры в конфигурациях. Проверяйте логи на наличие других возможных ошибок, и в случае необходимости консультуйтесь с документацией вашего оборудования.