Asterisk一直混淆公共IP和私人IP,因此当软电话落后于NAT时,呼叫没有音频

Asterisk一直混淆公共IP和私人IP,因此当软电话落后于NAT时,呼叫没有音频,asterisk,sip,voip,rtp,nat,Asterisk,Sip,Voip,Rtp,Nat,我正在尝试建立一个voip系统,使用星号和定制的移动应用程序在用户之间进行通话。 当在同一网络上设置时,系统工作正常,但一旦部署到在线服务器上,由于软电话位于NAT之后,音频无法通过,但所有SIP数据包都被正确接收,软电话会响,但当呼叫打开时,两个端点上都听不到音频。 我到处都看过如何设置asterisk来处理NAT后面的端点,但是网上的所有内容都在谈论asterisk的旧版本上的sip。但是我使用的是Asterisk的最新版本,它使用Pjsip.conf,我尝试了不同的端点设置,但是RTP仍然

我正在尝试建立一个voip系统,使用星号和定制的移动应用程序在用户之间进行通话。 当在同一网络上设置时,系统工作正常,但一旦部署到在线服务器上,由于软电话位于NAT之后,音频无法通过,但所有SIP数据包都被正确接收,软电话会响,但当呼叫打开时,两个端点上都听不到音频。 我到处都看过如何设置asterisk来处理NAT后面的端点,但是网上的所有内容都在谈论asterisk的旧版本上的sip。但是我使用的是Asterisk的最新版本,它使用Pjsip.conf,我尝试了不同的端点设置,但是RTP仍然混淆了IP,并尝试将RTP数据包路由到私有IP而不是公共IP。 我尝试过重写联系人、直接媒体、强制端口、ice支持、rtp对称以及不同的选项,但似乎没有找到完美的设置


以前有人这样做过吗?您有任何文档可以让我查看最新版本的Asterisk吗?

当然很多人以前都这么做过

官方网站上有这方面的文件


当然很多人以前都这样做过

官方网站上有这方面的文件


显然,星号部署不需要做任何事情。这是一个客户端问题,客户端sip电话需要启用RPORT for media,而我使用的是MizuDroid,它没有该功能。一旦我切换到Zoiper并打开该选项,一切都开始正常工作。

显然,在asterisk部署上不需要做任何事情。这是一个客户端问题,客户端sip电话需要启用RPORT for media,而我使用的是MizuDroid,它没有该功能。一旦我切换到Zoiper并打开该选项,一切都开始正常工作。

在pjsip传输中(类型=扩展使用的传输),您必须设置本地网络、外部媒体地址、外部信令地址:

[transport-udp-nat]
type = transport
protocol = udp
bind = 0.0.0.0
local_net = (your local network like 192.168.0.0/24)
external_media_address = (your external IP)
external_signaling_address = (your external IP)
此外,您还必须在扩展中使用:

rewrite_contact = yes
direct_media = no 
force_rport = yes
rtp_symmetric = yes

在pjsip传输中(类型=扩展使用的传输),必须设置本地\u网络、外部\u媒体\u地址、外部\u信令\u地址:

[transport-udp-nat]
type = transport
protocol = udp
bind = 0.0.0.0
local_net = (your local network like 192.168.0.0/24)
external_media_address = (your external IP)
external_signaling_address = (your external IP)
此外,您还必须在扩展中使用:

rewrite_contact = yes
direct_media = no 
force_rport = yes
rtp_symmetric = yes

是的,这使用的是静态配置,但我使用的是实时配置,我尝试为那篇文章中提到的字段设置不同的值,但没有一个有效。在我的情况下,只有软电话在NAT后面,星号服务器有一个公共IP。如果你使用实时,你应该是专家。如果您是专家,您可以阅读源代码并知道如何调试它。实时不适合乞丐。简而言之,您需要实时添加传输部分。顺便说一句,你根本没有把这写在你的问题中。我不是专家。不,但我已经阅读了文档并学会了如何启用实时,是的,如果没有人知道如何修复它,这可能是一种方法。如果你不是专家,请使用静态。这甚至不是实时问题的开始。是的,这使用静态配置,但我使用的是实时,我尝试为文章中提到的字段设置不同的值,但没有一个有效。在我的情况下,只有软电话在NAT后面,星号服务器有一个公共IP。如果你使用实时,你应该是专家。如果您是专家,您可以阅读源代码并知道如何调试它。实时不适合乞丐。简而言之,您需要实时添加传输部分。顺便说一句,你根本没有把这写在你的问题中。我不是专家。不,但我已经阅读了文档并学会了如何启用实时,是的,如果没有人知道如何修复它,这可能是一种方法。如果你不是专家,请使用静态。这甚至不是实时性问题的开始。显然,在asterisk部署中不需要做任何事情。这是一个客户端问题,客户端sip电话需要启用RPORT for media,而我使用的是MizuDroid,它没有该功能。一旦我切换到Zoiper并打开该选项,一切都开始正常工作。显然,在asterisk部署中不需要做任何事情。这是一个客户端问题,客户端sip电话需要启用RPORT for media,而我使用的是MizuDroid,它没有该功能。一旦我切换到Zoiper并打开该选项,一切都开始正常工作。