Прежде всего я уже взглянул на подобные вопросы, такие как:Звездочка NAT SIP 2.0 Неразрешенные 401 Weird сценарий
https://serverfault.com/questions/392979/asterisk-sip-2-0-401-unauthorized или https://serverfault.com/questions/574166/asterisk-401-unauthorized-when-trying-to-register-sip-clients
пока они не относятся к моей ситуации или решению не решайте мою проблему.
У меня есть одна звездочка 1.8 коробка, сидящая на сайт A. Сайт A имеет открытый статический IP-адрес и локальный класс c сеть 192.168.1.X, звездочка находится за NAT. Некоторые телефоны находятся в одной локальной сети, а другие находятся в сайте B. Сайт B имеет другой открытый статический IP-адрес и локальную сеть класса c 192.168.2.X. Итак, телефоны на сайте B находятся за пределами nat.
Странно, некоторые телефоны на сайте B могут зарегистрироваться, а другие нет. Наиболее интересным примером является один Grandstream GXP 2100. Этот телефон имеет 3 счета со следующими конфигурациями конфигурации:
[1000]
deny=0.0.0.0/0.0.0.0
secret=xxxxxx
dtmfmode=rfc2833
canreinvite=no
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend
nat=yes
port=5060
qualify=3000
qualifyfreq=60
transport=udp
encryption=no
callgroup=
pickupgroup=
dial=SIP/1000
[email protected]
permit=0.0.0.0/0.0.0.0
callerid=TONY - Lab Line 1 <1000>
callcounter=yes
faxdetect=no
cc_monitor_policy=generic
[3000]
deny=0.0.0.0/0.0.0.0
secret=xxxxxxx
dtmfmode=rfc2833
canreinvite=no
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend
nat=yes
port=5060
qualify=3000
qualifyfreq=60
transport=udp
encryption=no
callgroup=
pickupgroup=
dial=SIP/3000
[email protected]
[9000]
deny=0.0.0.0/0.0.0.0
secret=xxxxxxxxxxx
dtmfmode=rfc2833
canreinvite=no
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=no
type=friend
nat=yes
port=5060
qualify=3000
qualifyfreq=60
transport=udp
encryption=no
callgroup=
pickupgroup=
dial=SIP/9000
[email protected]
только 1000 и учитывающие 3000 могут регистрироваться, в то время как счета 9000 встречает следующее сообщение об ошибке:
<--- SIP read from UDP:95.254.61.X:5064 --->
REGISTER sip:95.231.94.6 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.190:5064;branch=z9hG4bK1380984150;rport
From: <sip:[email protected]>;tag=1294836145
To: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 2672 REGISTER
Contact: <sip:[email protected]:5064>;reg-id=3;+sip.instance="<urn:uuid:00000000-0000-1000-8000-000B8251202A>"
X-Grandstream-PBX: true
Max-Forwards: 70
User-Agent: Grandstream GXP2100 1.0.5.23
Supported: path
Expires: 3600
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, UPDATE, MESSAGE
Content-Length: 0
<------------->
--- (14 headers 0 lines) ---
Sending to 95.254.61.X:5064 (NAT)
<--- Transmitting (NAT) to 95.254.61.X:5064 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.2.190:5064;branch=z9hG4bK1380984150;received=95.254.61.248;rport=5064
From: <sip:[email protected]>;tag=1294836145
To: <sip:[email protected]>;tag=as54ceb003
Call-ID: [email protected]
CSeq: 2672 REGISTER
Server: FPBX-2.10.1(1.8.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="47737672"
Content-Length: 0
<------------>
Как вы думаете, что вызывает эту проблему? Заранее благодарю за вашу любезную поддержку и помощь!
О, спасибо! Могу ли я спросить вас, почему в строке «Via: SIP/2.0/UDP 192.168.2.190:5064» он отправляет внутренний ip и отправляет публичный ip «
Через заголовки, используемые для лучшего обхода. Это нормально. – arheops
Да, захватите телефонную сторону, чтобы узнать, есть ли у телефона A) получение ответа и B) отправка нового РЕГИСТРА с соответствующим заголовком авторизации. Протокол аутентификации указан здесь: http://tools.ietf.org/html/rfc3261#section-22.2 – korvus