Что значит "полный лог"?
В файле radius.log (при включенном в log4j-radius.xml режиме DEBUG) появляется только вот это:
Цитата:
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusProcessor - Create new radius session.
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] VoiceIpRadiusProcessor - Process outgoing auth Packet type: Access-Request
Identifier: 78
Authenticator: {BB 08 59 13 CD C6 C4 E0 4C 24 B9 FA E3 3A C4 34}
Attributes:
User-Name=888
Digest-Response=7feee567aec030a90215b47eb2abde47
NAS-IP-Address=192.168.50.14
NAS-Port=52776
Service-Type=1
Framed-Protocol=2
Digest-Qop=auth
Digest-Algorithm=MD5
Digest-Method=REGISTER
Digest-URI=sip:192.168.50.14:5060
Digest-Realm=192.168.50.14
Digest-Nonce=c0d41ee113649c90a96eacaea3f07a4c
Digest-Username=888
Message-Authenticator={B9 E5 56 DB 39 6C 3C 85 E9 03 48 46 1A CA E4 20}
Digest-Nonce-Count=00000001
Digest-CNonce=43490e8fab3f38499c5ff88cf1d3aa02
SIP-AOR=sip:888@192.168.50.14
NAS-Port-Type=0
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] AbstractRadiusProcessor - Finding login..
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] VoiceIpRadiusProcessor - Found login type 2
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] AbstractRadiusProcessor - Login found: 1137
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] AbstractRadiusProcessor - Checking access allow...
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] AbstractRadiusProcessor - Checking password...
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusUtils - try checkDigestMD5Password
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusUtils - digestAttributes=null
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusUtils - digestResponse=null
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusUtils - user =null realm =null nonce = null method = null uri = null
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusUtils - try all in one string
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] RadiusUtils - digestAttribute=null
03-15/14:33:44 DEBUG [radiusListener-p-3-t-16] AbstractRadiusProcessor - Login password error
03-15/14:33:44 INFO [radiusListener-p-3-t-16] RadiusListenerWorker - RESPONSE:
Packet type: Access-Reject
Identifier: 78
Authenticator: {D9 6C 7D 4B FD CA E4 57 28 E0 B2 D9 C4 DB D3 F9}
Attributes:
Reply-Message=2
Message-Authenticator={00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00}
h323-return-code=2
Process time auth: 34
Пароль для логина 888: a9564ebc3289b7a24552baf8ad5ec60a
В пакете содержится "Digest-Qop=auth", согласно
RFC-2617 (
вот тут wiki со сводной инфой по разным RFC)
расчет "Digest-Response" необходимо вести следующим образом:
HA1=MD5(username:realm:password)
HA2=MD5(method:digestURI)
responce=MD5(HA1:nonce:nonceCount:clientNonce:qop:HA2)
Наша станция присылает правильно. Вот простенький скрипт для проверки вышеуказанного пакета:
Код:
#!/bin/sh
v_username='888'
v_realm='192.168.50.14'
v_password='a9564ebc3289b7a24552baf8ad5ec60a'
v_method='REGISTER'
v_digest_uri='sip:192.168.50.14:5060'
v_nonce='c0d41ee113649c90a96eacaea3f07a4c'
v_nonce_cnt='00000001'
v_client_nonce='43490e8fab3f38499c5ff88cf1d3aa02'
ha1=`echo -n "$v_username:$v_realm:$v_password" | md5sum | cut -d ' ' -f 1`
echo "HA1=$ha1"
ha2=`echo -n "$v_method:$v_digest_uri" | md5sum | cut -d ' ' -f 1`
echo "HA2=$ha2"
resp1=`echo -n "$ha1:$v_nonce:$ha2" | md5sum | cut -d ' ' -f 1`
echo "RESP1=$resp1"
resp2=`echo -n "$ha1:$v_nonce:$v_nonce_cnt:$v_client_nonce:auth:$ha2" | md5sum | cut -d ' ' -f 1`
echo "RESP2=$resp2"
Результат работы скрипта:
Цитата:
HA1=8314936349bcdf4429bf05299473598b
HA2=a70b9cf5a8762980db46482b776dfd0c
RESP1=0cd8e5bd682cf54d18fc07a236628118
RESP2=7feee567aec030a90215b47eb2abde47
Нас интересует RESP2 и он совпадает с переданным "Digest-Response". RESP1 расчитано для пакета по
RFC-2069 (при отсутсвии "Digest-Qop=auth").
В скрипте предобработки радиус-пакета пробовали заменить "Digest-Response" значением, рассчитанным как RESP1.
Биллинг одинаково реагирует на все ситуации...