freeswitch INCOMPATIBLE_DESTINATION 报错
今天发生了一个故障,web端通过JSSIP接入汇呼产品客户反馈了一个报错remote - Incompatible SDP,花了不少时间特此记录一下 关键字: freeswitch,sdp,webrtc,jssip,candidate
相关介绍
问题说明
客户再使用JSSIP客户端时反馈一个报错
remote - Incompatible SDP
freeswitch的报错代码是 INCOMPATIBLE_DESTINATION
于是网络查了很多关键字,都没有解决问题
最后还在日志中发现如下异常
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4295 Save audio Candidate cid: 1 proto: udp type: host addr: 172.168.1.14:50241
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4340 Searching for rtp candidate.
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4340 Searching for rtcp candidate.
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4387 Look for Relay Candidates as last resort
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4340 Searching for rtp candidate.
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4340 Searching for rtcp candidate.
2022-06-08 12:00:57.412493 [DEBUG] switch_core_media.c:4393 sofia/internal/XXXXX no suitable candidates found.
这里查了一下 candidate
从日志中,可以看到在媒体协商的过程,有一个“no suitable candidates found”的信息。意思是webrtc中的ice框架没有找到合适的可选媒体地址。
同时,SDP中又有“a=candidate: udp 172.168.1.14 50241”的信息。
日志看起来比较奇怪,明明打印出来的有candidate信息,为什么又说找不到合适的candidate。
后来了解到Rfc1918规定的地址段如下,一般情况下,内网地址都要按照这3个网段来配置: 10.0.0.0 - 10.255.255.255 (10/8 prefix) 172.16.0.0 - 172.31.255.255 (172.16/12 prefix) 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
所以 172.168.1.14 实际上被认为是 公网ip,而且是属于美国:worried:,所以解决思路只要放行公网ip就可以了
于是最后修改 internal 配置
<param name="apply-candidate-acl" value="rfc1918.auto"/>
<!--增加-->
<param name="apply-candidate-acl" value="wan.auto"/>
重启问题解决!:grinning: