2016-08-01 19 views
1

这可能是一个新手问题。我正在为没有ICE/TURN/STUN的环境开发SIP端点。 SIP端点将位于具有已知公共地址的NATing防火墙后面。我的端点可以直接从另一个可位于防火墙内部或外部的端点拨入(无代理)。 我的端点如何检测传入的INVITE是否来自防火墙内部或外部的端点?这需要将私人或公共IP放入Contact标题和SDP中的媒体描述中,以响应INVITE? 同样,它不是如何检测其公共IP,而是如何区分发送给调用者的IP地址。 谢谢!SIP响应 - 包括私人或公共IP?

回答

0

有没有通用的方式,它取决于防火墙,如果你使用相同的接口公共和私人。最好的方法是公共和私人(以及不同的SIP提供商)使用不同的接口,以供公共和私人使用。

如果远程方给出正确的Via,则可以使用Via标头。 如果您的防火墙允许,并且您拥有一组您知道的IP,那么您可以在NIST实施中获取传入消息的物理源IP,那么您可以将入站消息转换为gov.nist.javax.sip.message.SIPMessage,然后使用getRemoteAddress()用您的应用逻辑检查地址。我认为这是你想要做的。我不建议这样做,因为您的应用可能会发现自己位于自定义网络,ALG或其他标记提示的节点后面(如X-Auth-IP)。如果您将接口分开,则您的应用程序将更具可移植性。