以下是 FreeSWITCH 中 verto.conf
配置文件的详细解释:
1. 配置文件概述
verto.conf
是用于配置 Verto 模块 的配置文件。Verto 是 FreeSWITCH 的一个协议,用于支持 WebRTC(Web 实时通信),允许浏览器与 FreeSWITCH 进行实时音视频通信。
2. 配置结构
配置文件分为两部分:
- 全局设置(
<settings>
):适用于所有 Verto 配置文件的通用设置。 - 配置文件(
<profiles>
):定义具体的 Verto 配置(如绑定地址、安全设置、编解码器等)。
3. 全局设置
<settings>
<param name="debug" value="0"/>
<!-- <param name="kslog" value="true"/> -->
<!-- <param name="detach-timeout-sec" value="120"/> -->
<!-- <param name="enable-fs-events" value="false"/> -->
<!-- <param name="enable-presence" value="true"/> -->
</settings>
debug
:设置调试级别。0
表示关闭调试,1
或更高值表示启用调试日志。kslog
(注释):启用 SignalWire 核心库的日志记录。detach-timeout-sec
(注释):设置断开连接后挂断通道的超时时间(秒)。enable-fs-events
(注释):是否将所有 FreeSWITCH 事件广播到 Verto 客户端。enable-presence
(注释):是否启用 FreeSWITCH 的 Presence 事件广播。
4. 配置文件(<profiles>
)
4.1 配置文件名称
<profile name="default-v4">
name="default-v4"
:配置文件的名称,用于区分不同的 Verto 配置。
4.2 绑定地址
<param name="bind-local" value="$${local_ip_v4}:8081"/>
<param name="bind-local" value="$${local_ip_v4}:8082" secure="true"/>
bind-local
:定义 Verto 服务的绑定地址和端口。value="$${local_ip_v4}:8081"
:绑定到本地 IPv4 地址的8081
端口(HTTP)。secure="true"
:绑定到8082
端口并使用安全连接(HTTPS/WSS)。
4.3 强制注册域
<param name="force-register-domain" value="$${domain}"/>
force-register-domain
:强制 Verto 客户端使用指定的域进行注册。
4.4 安全证书
<param name="secure-combined" value="$${certs_dir}/wss.pem"/>
<param name="secure-chain" value="$${certs_dir}/wss.pem"/>
secure-combined
:指定包含私钥和证书的 PEM 文件路径。secure-chain
:指定包含证书链的 PEM 文件路径。
4.5 用户认证
<param name="userauth" value="true"/>
<param name="blind-reg" value="false"/>
userauth
:是否启用用户认证(true
表示启用)。blind-reg
:是否允许匿名注册(false
表示禁用,需提供有效账户)。
4.6 组播设置
<param name="mcast-ip" value="224.1.1.1"/>
<param name="mcast-port" value="1337"/>
mcast-ip
:组播 IP 地址。mcast-port
:组播端口。
4.7 RTP 设置
<param name="rtp-ip" value="$${local_ip_v4}"/>
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
rtp-ip
:本地 RTP 地址。ext-rtp-ip
:外部 RTP 地址(用于 NAT 穿透)。
4.8 本地网络
<param name="local-network" value="localnet.auto"/>
local-network
:定义本地网络范围(用于 NAT 和 ACL 配置)。
4.9 编解码器
<param name="outbound-codec-string" value="opus,h264,vp8"/>
<param name="inbound-codec-string" value="opus,h264,vp8"/>
outbound-codec-string
:出站呼叫的编解码器优先级。inbound-codec-string
:入站呼叫的编解码器优先级。
4.10 ACL 设置
<param name="apply-candidate-acl" value="localnet.auto"/>
<param name="apply-candidate-acl" value="wan_v4.auto"/>
<param name="apply-candidate-acl" value="rfc1918.auto"/>
<param name="apply-candidate-acl" value="any_v4.auto"/>
apply-candidate-acl
:定义允许的候选地址范围(用于 ICE 和 NAT 穿透)。
4.11 定时器
<param name="timer-name" value="soft"/>
timer-name
:设置 SIP 定时器类型(soft
表示软定时器)。
5. 总结
- Verto 配置:
verto.conf
用于定义 Verto 服务的绑定地址、安全设置、编解码器、RTP 参数等。 - WebRTC 支持:通过 Verto 模块,FreeSWITCH 可以与浏览器进行实时音视频通信。
- 安全性:通过
secure-combined
和secure-chain
配置 HTTPS/WSS 加密通信。
注意事项
- 证书配置:确保
wss.pem
文件存在且有效。 - NAT 穿透:正确配置
rtp-ip
和ext-rtp-ip
以实现 NAT 穿透。 - 调试:启用
debug
日志以排查问题。
以下是关于 mcast-ip
和 mcast-port
参数的详细解释:
1. mcast-ip
和 mcast-port
的作用
这两个参数用于配置 FreeSWITCH 的 组播(Multicast)通信:
mcast-ip
:指定组播的 IP 地址(属于 D 类 IP 地址范围:224.0.0.0
~239.255.255.255
)。mcast-port
:指定组播的端口号。
组播允许 FreeSWITCH 将事件或媒体流广播到多个订阅者(如多个客户端或服务器),适用于以下场景:
- 事件分发:将 FreeSWITCH 事件(如呼叫状态、注册事件)广播到多个监听节点。
- 媒体流分发:实时音视频流的多播(如会议系统)。
2. IP 地址 224.1.1.1
是固定的吗?
- 不是固定的:
224.1.1.1
是示例配置中的默认值,可以自由修改。 - 组播地址范围:组播地址必须属于 D 类 IP 地址(
224.0.0.0
~239.255.255.255
),但需注意以下规则:224.0.0.0
~224.0.0.255
:保留用于本地网络控制(如路由协议),不可随意使用。224.1.1.1
:属于通用组播地址范围,用户可自由分配。
3. 为什么选择 224.1.1.1
?
- 避免冲突:
224.1.1.1
不属于保留地址范围,适合自定义组播应用。 - 示例用途:配置文件中通常使用简单易记的地址(如
224.1.1.1
)作为默认值。 - 灵活性:用户可以根据网络规划自由选择其他 D 类地址(如
239.255.255.250
)。
4. 如何修改组播地址?
在 verto.conf
中直接修改 mcast-ip
和 mcast-port
:
<param name="mcast-ip" value="239.255.255.250"/>
<param name="mcast-port" value="5000"/>
5. 注意事项
- 网络设备支持:确保路由器、交换机支持 IGMP(Internet Group Management Protocol),否则组播流量无法跨子网传输。
- 避免地址冲突:在同一网络中,不同组播应用应使用不同的组播地址。
- 防火墙配置:开放组播端口(如
1337
或自定义端口)的 UDP 流量。
6. 组播地址的常见用途
地址 | 用途 |
---|---|
224.0.0.1 | 所有主机(本地网络) |
224.0.0.2 | 所有路由器(本地网络) |
224.1.1.1 | 用户自定义组播(示例) |
239.255.255.250 | 通用组播地址(推荐用于自定义应用) |
总结
mcast-ip
和mcast-port
可修改:只要符合 D 类地址范围和网络规划即可。- 默认值仅为示例:
224.1.1.1:1337
是默认配置,实际应用中建议根据需求调整。 - 网络环境要求:确保网络设备和防火墙支持组播通信。