如何为SIP呼叫配置NAT通过SSH端口转发,无法将pjsua SIP呼叫上的媒体传输到设备

问题描述

我在专用网络中有一台机器A,我想使用pjsua通过SIP向公用IP地址上的设备B进行VOIP呼叫。由于网络上有防火墙,因此我无法使用机器B来访问A的IP地址,因此需要使用“跳箱”来路由所有数据。我可以从跳转框看到公共互联网,并且可以通过Assh跳转框之间进行连接。因此,我可以通过在B上将目标设备A的IP和端口转发到localhost上的A端口,来从ssh中看到目标设备。

使用这样的设置将设备B的端口5060从跳转框转发到机器localhost:5060上的A,我可以在{{1 }},然后致电pjsua。我可以看到SIP交易成功,并且从设备A收到了B消息。

但是,即使我也以相同的方式转发了4000-4050的端口以进行RTP传输,也无法将媒体文件发送到设备200 OK进行音频播放。我已经确认可以通过另一台不在B防火墙后面的机器来做到这一点,所以我知道设备B可以接收通过A发送的文件

我相信正在发生的事情是,从设备B收到的SIP消息包含pjsua的IP地址,以及将媒体文件发送到的RTP端口。因此,B不会直接发送到正确的IP地址,而是发送给他们说B,而是尝试直接发送到localhost:4000的IP地址,该地址将被防火墙阻止。 (我不确定如何确认这种怀疑。)我认为我需要在pjsua上或为B上专门配置某种NAT。但是,我对SIP / pjsip或类似的网络配置相对缺乏经验。我尝试使用A命令,如下所示:

pjsua

但无济于事。谁能指出我正确的方向以使此通话正常进行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)