我们使用混淆软件对位于星号之前的 SIP/RTP 进行加密/破坏。有时会发生这种情况,我们听不到任何声音。经过一些“rtp 设置调试”后,我们发现当 rtp 流的接收 IP 是路由器的公共 IP 时,一切都正常。但有时我们会将客户端的私有 IP 作为 rtp 流中的接收地址,这会导致“无声音”。似乎由于某些未知原因,星号无法遍历媒体流的 nat。
我不知道 Aterisk 如何管理 nat。但常见的 SIP nat 遍历方法规定,首先修改 SDP,将其地址作为双方的目标地址。然后等待 rtp 数据包(对称 rtp)以知道应该将媒体发送到哪个端口。
我不明白它在哪个阶段失败了。由于显示的 IP 错误,我怀疑这是因为没有正确写入 SDP。至于为什么会发生这种情况,我们仍然不知道。
有什么指示指出应该如何调试吗?
这种奇怪行为背后的原因我们仍然不得而知。
答案1
您是否尝试过设置外部选项?
http://www.voip-info.org/wiki/view/Asterisk+SIP+externip
另外,也许可以看看http://www.voip-info.org/wiki/view/Asterisk+sip+nat
如果对等端配置了 nat=yes,则会导致 Asterisk 忽略来自该对等端的 SIP 和 SDP 标头中的地址信息,并回复发送者的 IP 地址和端口
(我有一段时间没有看过 Asterisk 了,但是我记得 NAT 可能是一个 PITA。)