Skip to content

第一章 关于Asterisk项目(About the Project)

1. Asterisk 项目的简史

1. 背景起点:Linux Support Services 的诞生

在 1999 年,正值互联网泡沫(dot-com bubble)高峰期,Mark Spencer——时任奥本大学(Auburn University)计算机工程专业的学生——洞察到开源操作系统 Linux 正在迅速普及,而企业对商业化技术支持的需求日益增长。这直接促使他创办了 Linux Support Services (LSS),一个专注于为 Linux 提供收费支持热线的公司。

技术与商业背景分析:

  • 技术维度:Linux 是高度模块化的自由软件,其自由可修改的源代码吸引了大量企业。
  • 商业维度:彼时商业 Linux 支持尚属空白,LSS 的成立填补了这个市场空缺。

现实挑战:
随着业务扩展,LSS 需要构建具备呼叫分配能力的电话系统。传统 PBX 系统的高昂成本(报价普遍超出 5 万美元)成为门槛。

2. 解决方案——自研电话系统

在面对成本压力时,Mark 并未选择贷款采购商业 PBX 系统,而是做出了极具远见的决定——自主编写一个电话系统软件。这一决策直接成为 Asterisk 项目的起点。

工程背景:

  • Mark 曾在 Adtran 公司参与电信系统开发,积累了扎实的通信领域实战经验。
  • 初期 Asterisk 的原始核心代码由他一人编写完成。

开源决定:

  • GPL 授权发布:Mark 将 Asterisk 项目源代码通过 GPL(GNU General Public License)协议公开,允许其他开发者查看、修改并贡献代码。
  • 这一开源策略成为项目快速发展的关键——开放协作是 Asterisk 社区生态繁荣的基石。
  • 对比其他项目:尽管当时已有少量开源通信项目存在,但 Asterisk 首次实现了一个功能完整的、可部署的开源 PBX 系统,其影响力远超前者。

3. 商业化演进:Digium 的成立与发展

2001 年,Linux Support Services 更名为 Digium,作为 Asterisk 项目的商业推动者与官方维护机构之一。Digium 在以下方面发挥了关键作用:

  • 为开源社区提供基础设施支持与技术文档;
  • 商业化周边产品(如硬件卡、支持服务);
  • 提供认证版本 Asterisk(如 Certified Asterisk)以供企业部署;
  • 持续推动 Asterisk 核心代码的发展并引导其技术演进。
  • Digium 已于 2018 年被 Sangoma Technologies 收购,但其对 Asterisk 的维护职能依旧延续。

4. Asterisk 的发展现状

Asterisk 不再是一个单纯的 PBX 项目,而是发展成为一套通信开发工具包(communications toolkit),其核心价值体现在灵活性、可定制性与模块化架构。

5. 小结:Asterisk 与传统 PBX 系统的架构对比

特性 传统专有PBX Asterisk
软件开放性 封闭源码,需授权购买 完全开源,GPL 授权
灵活性与可定制性 低,功能固定 高,可通过拨号计划、模块编程扩展功能
硬件依赖性 依赖特定厂商设备 通用 x86 服务器即可
开发者生态 少量闭源开发团队 成千上万开源贡献者组成全球社区

此架构优势使 Asterisk 成为呼叫中心、SIP 中继平台、IVR 系统、软交换(softswitch)等场景中的首选解决方案。

2. Asterisk 的安全漏洞处理机制

1. 安全治理原则

Asterisk 项目非常重视用户系统的安全性。为了确保漏洞响应机制的有效性,官方设立了标准化流程用于接收、分析与修复安全问题。开发团队采用透明但有控制的披露机制,以平衡开源社区的开放性与安全防护之间的关系。

Note

不要将安全漏洞直接发布在公开问题追踪器中!
1. Asterisk Issue Tracker 是公开站点,所有提交的问题默认对外公开可见。
2. 错误提交方式的风险: 如果在未加限制的情境下报告漏洞,恶意行为者可在补丁发布前利用漏洞攻击全网部署的 Asterisk 系统。
3. 在提交安全漏洞时,必须使用 “Report a vulnerability” 链接。该通道会自动限制查看权限,仅允许维护者与漏洞提交者查看和处理相关内容。

2. 高级安全管理策略建议

对于基于 Asterisk 构建的 VoIP 平台,建议结合如下安全治理措施:

  • 启用 fail2ban 自动屏蔽恶意 IP(监控 asterisk.log)
  • 使用 TLS + SRTP 加密 SIP 信令与媒体通道
  • 定期跟踪 安全通告 并主动补丁升级
  • 对 AMI 和 ARI 接口做细粒度权限控制(manager.conf / ari.conf)
  • 部署 WAF 和 IDS 系统监测常见 SIP 攻击(如 INVITE flood)

3. Asterisk 版本管理

1. 版本类型与生命周期策略

Asterisk 项目采用 “版本系列”(Release Series)+ 生命周期管理(Release Lifecycle) 的机制,确保系统的持续更新与长期可维护性。Asterisk 版本分为两大类:

版本类型 支持周期 特点说明
LTS(长期支持) 4 年全功能支持 + 1 年安全维护 适合生产环境,重稳定性与生命周期长度
Standard(标准版) ≥1 年全功能支持 + 1 年安全维护 更快发布节奏,包含最新功能但生命周期较短

2. 当前与历史版本全览

Asterisk 从 1.2.x 开始发布,至今已经历了多个 LTS 与标准版本交替发布的周期。下面是部分重点版本的生命周期特征汇总:

发布系列 类型 发布时间 安全维护至 EOL 当前状态
13.x LTS 2014-10-24 2020-10-24 2021-10-24 EOL
16.x LTS 2018-10-09 2022-10-09 2023-10-09 EOL
18.x LTS 2020-10-20 2024-10-20 2025-10-20 仅安全维护中
20.x LTS 2022-10-19 2026-10-19 2027-10-19 正在全面支持中
22.x LTS 2024-10-16 2028-10-16 2029-10-16 正在全面支持中
21.x Standard 2023-10-18 2025-10-18 2026-10-18 正在全面支持中

观察规律:每年发布一次新版本,奇数年为 Standard,偶数年为 LTS。

3. 如何选择合适的版本

使用场景 建议选择版本
企业生产系统 最新的 LTS 版本(如 20.x 或 22.x)
功能实验、新技术验证 最新的 Standard 版本(如 21.x)
教学/二次开发入门环境 稳定的旧 LTS(如 18.x)或当前 LTS

4. Sangoma 与 Digium 合并常见问答

1. 合并缘由

2018 年,Sangoma Technologies 宣布收购 Digium,将两大开源通信技术厂商合并。这次收购本质上是产业集中与生态整合的战略行为,意图通过资源合并加强在 Unified Communications(统一通信)市场中的竞争力。

Asterisk 是 Digium 的核心资产,FreePBX 是 Sangoma 的旗舰开源 PBX 项目,两者互补性强,是该整合的主要驱动因素之一。

2. 对 Asterisk / FreePBX 项目的影响:逐问详解

常见问题 解答与解释
Asterisk 会消失吗? 不会。Asterisk 是两家公司的核心战略组成部分,仍将长期持续发展。
FreePBX 会消失吗? 不会。FreePBX 作为 GPL 授权的项目,自 2004 年起已建立稳固社区生态。
是否会闭源? 不会。两者都在 GPL 下发布,版权法律保障开源特性不能被更改或私有化。
项目负责人是否更换? 没有更换,开发核心团队保持不变,确保项目连续性。
分发模式是否变化? 没有变化。仍然可通过 tarball 下载源代码,自由构建与集成。

3. 商业合并对开源治理模型的启示

开源项目治理要点体现:

  • 代码授权不可逆(GPL):即便公司并购,项目代码依旧受制于原始协议,社区利益不会丧失。
  • 社区主导开发与公司资源并行:项目继续开放开发流程,同时可享受企业支持资源。
  • 分发策略灵活、面向多层用户群体:
    • 工具链层面:开发者继续通过源代码构建
    • 应用层面:中小企业使用 FreePBX 或 ISO 集成发行版
    • 企业层面:使用 Certified Asterisk 获得 SLA 支持
  • 对开发者的实际建议:
    • 不必担忧 Asterisk/FreePBX 的未来——这些项目具有强大的社区韧性与商业支撑;
    • 对于定制型项目开发者,继续使用源代码构建部署不会受任何限制;
    • 商业部署中可结合 Certified Asterisk 获取技术支持与认证硬件保障。

5. 支持的平台(Supported Platforms)

1. Asterisk 可构建在多种平台上,但官方支持有限

尽管 Asterisk 的代码架构具有高度可移植性,可以在多种 Linux 系统和处理器架构上构建运行,但官方仅支持并测试特定的主流 Linux 发行版与架构,以确保质量控制和构建一致性。

2. 官方支持的发行版与平台

支持类型 描述
CPU 架构 32-bit 和 64-bit x86 平台(x86, x86_64)
操作系统(非 EOL) CentOS、RHEL、Fedora、Ubuntu、Debian

Warning

由于编译器(如 gcc、clang)在新版本中引入的严格语义和行为变化,Linux 发行版升级可能会导致旧版本 Asterisk 无法编译通过。

3. 工程实践建议

应用场景 推荐平台配置
企业级部署 RHEL/CentOS + x86_64,配合系统包管理(如 RPM)
高稳定性集群环境 Debian LTS / Ubuntu LTS,统一版本控制与内核管理
边缘设备或轻量级部署 可通过社区适配构建在 ARM(如 Raspberry Pi)等平台,但需自测
版本迁移/升级测试平台 使用 Fedora 等更新迅速的发行版测试新编译器对 Asterisk 的影响

6. Asterisk 的授权协议

1. 核心授权模式:GNU GPLv2

Asterisk 项目主代码基于 GNU General Public License version 2(GPLv2) 授权发布。GPLv2 授权文档随 Asterisk 源码包一起提供,位于 COPYING 文件中。其核心含义如下:

特性 描述
自由使用 允许任何人使用、运行、复制和传播软件
开放源代码 必须公开完整源代码
衍生作品要求开源 对代码的修改或衍生必须同样以 GPL 方式发布(“传染性”)

2. 多重授权机制(Dual Licensing)

虽然 Asterisk 主体遵循 GPLv2,但 Digium(现 Sangoma)作为主要版权持有者,拥有合法权利以其他授权形式对外发布 Asterisk 的代码或组件,即所谓的“多重授权模型”(Multi-licensing/Dual-licensing):

可行用途包括:

  • 为某些商业客户提供 非 GPL 授权的专有许可
  • 允许第三方开发 与 Asterisk 动态链接 的闭源模块(通过协商获得许可)
  • 前提是该模块动态链接到 Digium 授权覆盖范围的部分,且必须符合其商用许可政策。

3. 接口协议的授权解耦:GPL 的“边界豁免”

Asterisk 定义了多个控制接口(非二进制链接),Digium 明确声明这些协议不构成 GPL 所定义的“衍生作品”,即:

接口 是否受 GPL 约束 说明
AMI(Asterisk Manager Interface) ❌ 否 纯文本 TCP 协议
AGI(Asterisk Gateway Interface) ❌ 否 通过进程通信与脚本语言集成
ARI(Asterisk REST Interface) ❌ 否 纯 HTTP JSON REST 接口

推论:你可以使用任何授权的应用程序(闭源亦可)通过这些接口与 Asterisk 通信而无需 GPL 兼容授权。

保险策略:Digium 特别声明,即便法律裁决这些协议构成衍生作品,它也授予开发者授权使用这些协议,无需 GPL 限制。

4. 商标使用政策和声音资源授权

  • Asterisk 名称和徽标 是 Digium 拥有的注册商标,如要用于商业宣传、集成产品命名等,需要依照 Sangoma 的商标许可政策进行授权申请
  • Asterisk 附带的语音提示、音乐保留了单独授权策略:
  • 语音提示(Voice Prompts)授权信息:
    Asterisk 项目所附带的所有语音提示内容(如系统菜单、IVR 播报、错误提示等),遵循 Creative Commons Attribution-Share Alike 3.0 (CC BY-SA 3.0) 授权协议。
  • 保持音乐(Music On Hold)授权信息:
    Asterisk 系统中内置的“保持音乐”(MOH,Music On Hold)通常在呼叫等待时播放,其音源来源于 opsound.org,并遵循 CC BY-SA 2.5 授权协议。

5. 开源通信系统的法律与商业治理模型

  • Asterisk 的授权模型特征:
  • 核心 GPL 开源保障社区发展
  • 双授权机制保障商业盈利与集成灵活性
  • 开放协议接口减少法律风险,提高平台生态吸引力
  • 商标与语音等非代码资产采用区别授权方式加强品牌控制

对系统集成商与平台开发者的建议:

角色 法律建议
平台开发者 确保模块未直接链接 Asterisk 核心,或明确 GPL 兼容性
商业部署 若需闭源插件,务必与 Sangoma 获取合法授权
第三方语音服务商 遵循声音资源授权协议,避免语音版权侵权风险
UI/管理界面开发者 推荐通过 ARI/AMI 构建前端,规避 GPL 绑定