You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决FreeSWITCH在SDP中暴露私有IP地址的问题

解决AWS ALB转发WebRTC到FreeSWITCH时SDP返回私有IP的问题

核心问题分析

因为ALB和FreeSWITCH所在EC2同属一个VPC,FreeSWITCH会把ALB的内网IP当成客户端来源,默认在SDP里返回私有IP,导致公网WebRTC客户端连不上。你之前加的apply-nat-acl只完成了NAT场景识别,缺了强制替换为公网IP的关键配置,这就是返回IP随机的原因。

具体解决方案

1. 修正SIP Profile配置

在对应WebRTC的SIP配置文件(比如conf/sip_profiles/internal.xml或自定义profile)里加以下参数,强制把SDP地址换成公网IP:

<param name="ext-sip-ip" value="你的EC2公网IP"/>
<param name="ext-rtp-ip" value="你的EC2公网IP"/>
<param name="auto-nat" value="true"/>
<param name="apply-nat-acl" value="rfc1918"/>
<param name="rewrite-sdp" value="true"/>
<param name="disable-ip-detection" value="true"/>
  • ext-sip-ip/ext-rtp-ip:指定对外暴露的公网IP,不需要FreeSWITCH绑定这个IP,只是用来替换SDP里的私有IP
  • rewrite-sdp:强制重写SDP里的媒体地址,确保返回的是公网IP
  • disable-ip-detection:关掉FreeSWITCH自动检测IP的逻辑,避免随机返回私有IP

2. 配置ALB的UDP端口转发

WebRTC靠UDP传RTP/RTCP流,得在ALB里配置对应的端口转发规则:

  • 新建或修改目标组,添加UDP端口范围(默认FreeSWITCH用16384-32768),转发到EC2的对应UDP端口
  • 确保EC2安全组允许ALB所在VPC的IP段访问这些UDP端口

3. 调整FreeSWITCH RTP基础配置

修改conf/autoload_configs/rtp.conf.xml,让RTP监听在EC2私有IP(机器实际绑定的IP),同时开启NAT映射:

<param name="rtp-ip" value="你的EC2私有IP"/>
<param name="rtp-port-min" value="16384"/>
<param name="rtp-port-max" value="32768"/>
<param name="nat-map" value="true"/>

nat-map会自动把RTP流的源地址映射到ext-rtp-ip配置的公网IP,解决RTP流回传的问题。

4. 验证配置

  • 查看FreeSWITCH返回的SDP内容,确认c=和m=行的地址是公网IP
  • 用公网WebRTC客户端测试连接,检查音视频流是否正常传输

内容的提问来源于stack exchange,提问作者Pavan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:17:30