1.检查网络
1.1本地防火墙
这点做过开发一般都比较清楚。检查fireWall,或者iptables。需要注意的是要确保TCP和UDP都要开放;
1.2云服务器出入规则
云服务器配置出去的规则同时还要配置入的规则。有些新手在发现freeswitch之间已经完成通信,但是ack应答失败,忽略了出 规则。导致看到的表象:408 Request Timeout;汽车还需要注意配置的网段,在建立chanell通道的时候,配置流媒体比如录音会额外使用到一些ip,因此出入规则需要配置接口段。
1.3检查双方acl.xml
这里有一个注意得点,后面的规则会覆盖前面的规则。因此在实际的配置过程中未了网络通畅一般先配置 deny ,然后在配置allow,加载需要reload生效。
2.错误码
RECOVERY_ON_TIMER_EXPIRE
媒体超时, 异常
CALLFLOW|2025-04-29 17:46:16.141514|EP2->SERVER|xxxx.226:50601|408equest Timeout|10.0.0.11:5768|
SIP/2.0 408 Request Timeout
Via:SIP/2.0/UDP10.0.0.11:5768;branch=z9hG4bK4015cd4b128295d2;received=xxxxx.237
Max-Forwards: 69
From: <sip:18620404374@10.0.0.11>;tag=14e15cff1e64c783
To: <sip:0453173113xxxx@xxx.226>;tag=ajp0K7c1rU5cm Call-ID: 74fc7c3863616c6c0000004d@10.0.0.11 CSeq: 21600 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.6.20~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, refer
Reason: Q.850;cause=102;text="RECOVERY_ON_TIMER_EXPIRE"
Content-Length: 0
Remote-Party-ID: "0453173113xxxx" <sip:0453173xxxx@xxxxx226>;
party=calling;privacy=off;screen=no
这种表象可能被认为是网络问题,timeout连接超时,因此肯能会被带入端口未开放的坑。可能原因如下:NAT公网地址和内外地址转换失败;编码配置是否一样;多网卡场景切换导致链接无法建立;
正常的流程如下:
[NOTICE] New Channel ... [CS_NEW]
[INFO] Sending early media
[NOTICE] Channel ... [CS_EXECUTE]
[NOTICE] Channel ... [CS_CONSUME_MEDIA]
[NOTICE] Channel ... [CS_EXCHANGE_MEDIA] <!-- 媒体流成功建立 -->
[NOTICE] Channel ... [CS_HANGUP] after 180s <!-- 正常通话结束 -->
CALL_REJECTED
呼叫链接被拒绝
这个其中服务端口是否启用成功;
netstat -tuln 5060 # 查询对应的端口
然后检查北向的返回是否正确,如:
CALLFLOW|2025-04-30 09:21:58.967144|EP2->SERVER|xxx226:50601|403 Forbidden|10.0.0.11:5768|
SIP/2.0 403 Forbidden
Via: SIP/2.0/UDP 10.0.0.11:5768;branch=z9hG4bK26e6f556213fd5b9;received=xxxx.237
Max-Forwards: 69
From: <sip:18620404374@10.0.0.11>;tag=5075b2db09d909be
To: <sip:0453173xxx5@1xxx.226>;tag=Q3ecUm6NKKa6e
Call-ID: 4633958b63616c6c0000000e@10.0.0.11
CSeq: 21600 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.6.20~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, refer
Reason: Q.850;cause=21;text="CALL_REJECTED"
Content-Length: 0
Remote-Party-ID: "04xxx325" <sip:045317xxx5@1xxx.226>;party=calling;privacy=off;screen=no
排查的时候去问有没有对应的话单记录,没有一直认为是哪里配置导致连接被拒。而且使用的几个测试号码都在北线的黑名单里,导致误判。总结:这种大概率是北向线路方错误导致,403 Forbidden这个导致的误判。
这个USER_BUSY 错误码,导致打不通也可能是线路方的问题。
其他常见错误码:
NORMAL_RELEASE 正常释放
NORMAL_CLEARING 双方都由运营商挂断, 正常
USER_BUSY 用户占线繁忙, 正常
NO_ANSWER 呼叫未应答, 正常
NO_USER_RESPONSE 呼叫未应答超时, 正常
NORMAL_TEMPORARY_FAILURE 呼叫线路超时
TIMEOUT 超时(一般是SIP超时)
NO_ROUTE_DESTINATION 呼叫不可达(空号/无法路由)
USER_NOT_REGISTERED 未注册(网关、电话卡)
UNALLOCATED_NUMBER 一般是线路不通, 可能盲区