问题描述
我在专用网络中有一台机器A
,我想使用pjsua
通过SIP向公用IP地址上的设备B
进行VOIP呼叫。由于网络上有防火墙,因此我无法使用机器B
来访问A
的IP地址,因此需要使用“跳箱”来路由所有数据。我可以从跳转框看到公共互联网,并且可以通过A
在ssh
和跳转框之间进行连接。因此,我可以通过在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 (将#修改为@)