Всем привет! Все помнят, что Asterisk не поддерживает раздельную аутентификацию, когда username отличается от auth username. Тема поднималась, например, тут. Но я бы хотел снова поднять эту тему.
Читаем http://www.voip-info.org/wiki/view/Asterisk+SIP+channels:
Incoming SIP Connections When Asterisk receives an incoming SIP call, the SIP Channel Module
- first tries to find a [user] section matching the caller name (From: username),
- then tries to find a [peer] section matching the caller's IP address.
If no matching user or peer is found, the call is sent to the context defined in the [general] section of sip.conf.sip.conf.
Читаем http://www.voip-info.org/wiki/view/Asterisk+SIP+user+vs+peer
The only benefit of type=user is when you want to match on username regardless of IP the calls originate from. If the peer is registering to you, you don't need it. If they are on a fixed IP, you don't need it. 'type=peer' is never matched on username for incoming calls, only matched on IP address/port number (unless you use insecure=port or higher).
Далее, чего нет в вики на voip-info, а есть только в sip.conf в примере:
;match_auth_username=yes ; if available, match user entry using the
; 'username' field from the authentication line
; instead of the From: field.
match auth username - это уже ближе. Проделаем испытания:
[max]
secret=supersecret
type=peer
host=dynamic
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0
context=from-max
defaultuser=maxauth
В Ekiga в поле user ставим max, в поле Authentication login - maxauth. Лог звонка - http://pastebin.ca/2075412
check_auth: username mismatch, have <max>, digest has <maxauth>
Как я ни перебирал разные параметры, не работает. Единственный способ разделить username от authusername - перейти от динамических регистраций к статическим:
[192.168.10.33]
secret=supersecret
type=peer
host=192.168.10.33
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0
context=from-max
defaultuser=maxauth
insecure=port
При этом, неважно, что указывать в username софтона, (поиск пира проходит по ip) главное, указать свой статический ip адрес в поле Authentication login.
Люди, кто-то раскурил тему или дохлый номер?
Проблема по данному логу понятна, видима нужна модификация Астериск, чтобы он второй раз отвечал еще раз 401 вместо 403. Подробнее:
fromuser=XXXX
пробывали?
На версии 1.6.2.18.2 все успешно работает! Только необходимо применить патч http://www.bertera.it/software/asterisk-stuff/asterisk-1.6.2.2-sip-peer-authuser-patch.diff и пересобрать + перегрузить!
Если все хорошо, то в описании пира добавиться параметр Auth User :
Интересно, почему бы это не добавить в транк Asterisk'a :-(
litnimax ( 2012-09-13 17:56:35 +0400 )редактироватьЗадан: 2011-06-06 10:56:48 +0400
Просмотрен: 10,817 раз
Обновлен: Sep 13 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.