使用 public wifi 的 SIP 信号?

SIP signal with public wifi?

我对 Jain SIP 有疑问。我的应用程序用于拨打 VOIP 电话。它适用于以太网,但在 public Wifi 中失败。

下面是我发送的用于登录SIP服务器的包。似乎服务器没有响应任何数据(它在以太网上工作)

REGISTER sip:sip.linphone.org:5060 SIP/2.0
Call-ID: 56866e2b305987eac0d6e8bee07c6f69@192.168.56.1
CSeq: 1 REGISTER
From: "myaccount" <sip:myaccount@sip.linphone.org>;tag=647554
To: "myaccount" <sip:myaccount@sip.linphone.org>
Via: SIP/2.0/UDP 192.168.56.1:5075;branch=z9hG4bK-333032-33f14b15adbdc0cd848ccd102acb2b45
Max-Forwards: 70
Contact: <sip:192.168.56.1:5075>
Expires: 60000
Content-Length: 0

有没有人有什么想法?

这很可能是 NAT/firewall 问题。首先检查 DNS 是否 sip.linphone.org 在您的 Wifi 上正确解析。其次,您在 NAT 后面并正在通告私有 IP 192.168.56.1,因此远程端必须能够找到您的 public IP,这并不总是可能的。您需要查看 STUN 和 STUN4j(如果这还不够,然后是 TURN 和 ICE)以找到您自己的 public IP 和端口,linphone 已经在 stun.linphone.org 托管了一个 stun 服务器来帮助您。 NAT 穿越可能相当复杂。如果您有 public IP 和端口,只需输入 public IP 即可。

另一件事是您没有在此处发送任何 SDP,因此 SDP 可能无关紧要。但是,如果您稍后有 SDP 和 RTP,那么您可能需要查看 TURN 和 ICE 以放入 SDP 并通过第三方中继 RTP。这取决于远程端支持什么,也取决于您的 NAT 配置。有时,远程服务器会按照您现在发送 REGISTER 的方式正常工作,但有时他们需要很多额外的东西,或者他们可能根本无法工作。

这不是 peivate/public IP 问题。至于您的 SIP 服务器托管在 public IP(这很正常),您的客户端是否在私有 IP 中并不重要。

查看您的 SIP 消息。您正在向 SIP 服务器提供您的私有 IP。

Call-ID: 56866e2b305987eac0d6e8bee07c6f69@192.168.56.1

只需将 IP 地址更改为您的 public IP。如果您不知道自己的外部 IP,那么您需要学习如何获取它。