我启动了red5,
然后我启动red5phone
我尝试注册 SIP 用户,我提供的详细信息是
用户名 = 999999 密码 = **** ip = asteriskserverip
我得到了
-- 注册联系人 -- sip:[电子邮件保护]:5072
正确的联系方式可能是
-- 注册联系人 -- sip :99999@asteriskserverip
这是日志:
SipUserAgent - listen -> Init...
Red5SIP register
[SIPUser] register
RegisterAgent: Registering contact <sip:[email protected]:5072> (it expires in 3600 secs)
RegisterAgent: Registration failure: No response from server.
[SIPUser] SIP Registration failure Timeout
RegisterAgent: Failed Registration stop try.
Red5SIP Client leaving app 1
Red5SIP Client closing client 35C1B495-E084-1651-0C40-559437CAC7E1
Release ports: sip port 5072 audio port 3002
Release port number:5072
Release port number:3002
[SIPUser] close1
[SIPUser] hangup
[SIPUser] closeStreams
RTMPUser stopStream
[SIPUser] unregister
RegisterAgent: Unregistering contact <sip:[email protected]:5072>
SipUserAgent - hangup -> Init...
SipUserAgent - closeMediaApplication -> Init...
[SIPUser] provider.halt
RegisterAgent: Registration failure: No response from server.
[SIPUser] SIP Registration failure Timeout
如果我做错了什么,请告诉我。
答案1
我建议在手机和服务器端都进行数据包捕获,然后使用 WireShark 分析捕获的内容。
Wireshark 对 VoIP 流量的解释非常好,并且会将 SIP 数据包分解为易于阅读的块。
从那里,您可以判断您的 STUN 服务器是否不正确(如果您使用 STUN),或者连接数据包是否存在异常,然后使用它来缩小情况范围。
在两端运行捕获的原因在于,我见过一些善意的“SIP 感知”防火墙错误地操纵 SIP 数据包,从而导致无尽的麻烦,但我可以判断进入防火墙的数据包与离开防火墙的数据包不同,这是一个赠品。
答案2
数据包捕获(thsark/ngrep)保存着您寻求的答案。
我想说的是,服务器没有收到用于注册的 SIP 数据包,或者客户端无法收到响应,根据以下情况判断
‘RegisterAgent:注册失败:服务器没有响应。’
在您尝试注册的服务器上使用 tshark/ngrep/tcpdump 来验证这一点。如果您看到它登陆服务器但服务器从未响应,请检查它的日志文件。验证服务器上没有防火墙规则阻止它。它会显示嗅探,但应用程序不会响应它。
标准 SIP 将在端口 5060 上,最有可能是 UDP,但偶尔也会是 TCP(我正在看微软...)。
例子:
tshark -i eth0 “端口 5060”
ngrep -q -W byline “” “端口 5060”
tcpdump “端口 5060”
如果您有大量其他有效的 SIP 流量但需要快速读取其中一些,ngrep 会很方便。
ngrep -q -W 署名“5025851212”“端口 5060”
例如,这将寻找特定的电话号码,或
ngrep -I CAPTURED.PCAP -q -W 署名”[电子邮件保护]“端口 5060”
预先捕获的文件中的特定呼叫 ID:CAPTURED.PCAP