预配置检查清单

在开始配置SIP trunk之前,请确保以下条件已满足:

检查项要求验证方法
网络带宽G.711: 87kbps/路, G.729: 31kbps/路带宽计算: 路数 × 单路带宽 × 1.3冗余
SIP信令端口5060 UDP/TCP 或 5061 TLStelnet/traceroute测试端口可达性
RTP媒体端口10000-65535 UDP(按需开放子范围)防火墙规则确认
DNS解析SIP域名可正常解析nslookup/dig验证
静态IP推荐使用静态公网IPcurl ifconfig.me确认
时间同步NTP同步,误差<1秒ntpstat检查

Asterisk 配置

sip.conf 配置示例

; /etc/asterisk/sip.conf

[cainiao-trunk]
type=peer
host=sip.cainiaovoice.com
port=5060
transport=udp
context=from-cainiao
disallow=all
allow=g711
allow=g729
allow=g722
dtmfmode=rfc2833
insecure=port,invite
qualify=yes
qualifyfreq=60
nat=force_rport,comedia
canreinvite=no

; SIP注册(如需要)
register => username:password@sip.cainiaovoice.com:5060/100

extensions.conf 拨号计划

; /etc/asterisk/extensions.conf

[from-cainiao]
; 入站呼叫处理
exten => _X.,1,NoOp(入站呼叫来自 ${CALLERID(num)})
exten => _X.,n,Dial(SIP/1001,30)
exten => _X.,n,Hangup()

[outbound-cainiao]
; 出站呼叫 - 国内
exten => _0XXXXXXXXXX,1,NoOp(拨打 ${EXTEN})
exten => _0XXXXXXXXXX,n,Dial(SIP/cainiao-trunk/${EXTEN})
exten => _0XXXXXXXXXX,n,Hangup()

; 出站呼叫 - 国际
exten => _00X.,1,NoOp(国际拨打 ${EXTEN})
exten => _00X.,n,Dial(SIP/cainiao-trunk/${EXTEN:2})
exten => _00X.,n,Hangup()

关键配置说明

  • dtmfmode=rfc2833:推荐使用RFC2833传输DTMF,兼容性最好
  • nat=force_rport,comedia:NAT穿透配置,解决单向音频问题
  • qualify=yes:启用心跳检测,实时监控网关连通性
  • canreinvite=no:禁止直接RTP连接,确保媒体流经过Asterisk

FreeSWITCH 配置

网关配置

<!-- /etc/freeswitch/sip_profiles/external/cainiao.xml -->
<include>
  <gateway name="cainiao-trunk">
    <param name="realm" value="sip.cainiaovoice.com"/>
    <param name="username" value="your_username"/>
    <param name="password" value="your_password"/>
    <param name="register" value="true"/>
    <param name="caller-id-in-from" value="true"/>
    <param name="ping-interval" value="30"/>
    <param name="extension" value="100"/>
  </gateway>
</include>

拨号计划

<!-- /etc/freeswitch/conf/dialplan/default.xml -->
<extension name="outbound-cainiao">
  <condition field="destination_number" expression="^(.+)$">
    <action application="set" data="effective_caller_id_number=your_did"/>
    <action application="bridge" data="sofia/gateway/cainiao-trunk/$1"/>
  </condition>
</extension>

3CX 快速配置

  1. 进入3CX管理后台 → SIP Trunks → Add SIP Trunk
  2. 选择"Generic SIP Trunk"模板
  3. 填写:主服务器=sip.cainiaovoice.com, 端口=5060
  4. 认证ID=your_username, 密码=your_password
  5. 选择Bridge模式,配置STUN服务器(stun.3cx.com)
  6. 编解码器选择G.711和G.729
  7. 创建入站/出站路由规则

Cisco CUCM 配置

  1. 创建SIP Trunk Security Profile: Device → Device Settings → SIP Trunk Security Profile
  2. 创建SIP Profile: 选择标准SIP Profile,启用SIP OPTIONS Ping
  3. 创建SIP Trunk: Device → Trunk,选择上方创建的Security Profile和SIP Profile
  4. 配置Destination Address: sip.cainiaovoice.com:5060
  5. 创建Route Pattern: Call Routing → Route/Hunt → Route Pattern
  6. 设置Calling Search Space和Partition权限

故障排查清单

问题可能原因排查步骤
单向音频NAT问题,RTP端口未开放1)检查防火墙RTP端口 2)配置nat参数 3)确认SDP中IP可达 4)使用rtp debug排查
注册失败密码错误,端口不通,防火墙拦截1)sip debug查看401/403响应 2)telnet测试5060端口 3)检查用户名密码
DTMF无效DTMF模式不匹配1)确认两端dtmfmode一致 2)推荐rfc2833 3)避免使用SIP INFO
编解码协商失败两端无共同编解码器1)sip debug查看488响应 2)检查disallow/allow配置 3)确保G.711启用
通话中断SIP超时,路由不稳定1)检查qualify心跳 2)查看BYE原因值 3)检查网络抖动和丢包
SIP 503错误服务不可用,并发超限1)检查并发通道数 2)联系服务商确认容量 3)配置failover路由

安全加固清单

  • IP白名单:防火墙只允许SIP服务商IP访问5060/5061和RTP端口
  • SIP TLS加密:使用TLS(端口5061)加密SIP信令
  • SRTP加密:启用SRTP加密RTP媒体流
  • 强密码:使用16位以上随机密码,定期更换
  • fail2ban:配置fail2ban自动封禁恶意IP
  • 国际呼叫权限:设置国际呼叫白名单,防止toll fraud
  • 消费上限:配置每日/每月消费上限和异常告警
  • 禁用外网AMI/HTTP:不要将管理接口暴露到公网

菜鸟语音安全提示:菜鸟语音SIP trunk服务默认支持IP白名单认证,可选SIP TLS + SRTP加密,并提供实时流量监控和异常告警,帮助企业防范通信安全风险。

常见问题

Q: Asterisk对接SIP trunk需要开放哪些端口?

A: 需要开放SIP信令端口5060(UDP/TCP)或5061(TLS),以及RTP媒体端口范围(通常10000-20000 UDP)。建议在防火墙配置IP白名单,只允许SIP服务商的IP地址访问。

Q: FreeSWITCH如何配置SIP trunk网关?

A: 在/etc/freeswitch/sip_profiles/external/目录下创建XML网关配置文件,设置realm(服务器地址)、username、password、register(是否注册)等参数。然后在dialplan中通过sofia/gateway/网关名/号码格式进行呼叫。

Q: 出现单向音频怎么排查?

A: 单向音频通常由NAT问题导致。排查步骤:1)检查RTP端口是否正确开放;2)在Asterisk中配置nat=force_rport,comedia;3)在FreeSWITCH中配置ext-rtp-ip和ext-sip-ip;4)确认SDP中的IP地址可达。

Q: 如何选择DTMF传输模式?

A: 推荐使用RFC2833(在Asterisk中配置dtmfmode=rfc2833)。SIP INFO模式兼容性较差,INBAND模式需要G.711编解码器。大多数SIP trunk服务商支持RFC2833。

Q: 如何防止SIP toll fraud?

A: 防护措施包括:1)配置IP白名单只允许服务商IP;2)设置国际呼叫权限白名单;3)配置每日消费上限;4)启用fail2ban防止暴力破解;5)使用强密码(16位以上随机字符);6)监控异常呼叫模式。

需要SIP Trunk对接技术支持?

菜鸟语音技术团队可免费协助Asterisk/FreeSWITCH/3CX配置

免费咨询