主流开源 SIP 服务器(支持 Windows)
以下是几款在 Windows 上表现优秀且广泛使用的开源 SIP 服务器:

- Asterisk (PBX 系统): 功能最强大的“瑞士军刀”,不仅仅是 SIP 服务器,更是一个完整的电话交换机,适合需要复杂功能(如 IVR、呼叫队列、会议)的企业。
- FreeSWITCH: 另一款功能极其强大的 PBX/软交换机,架构灵活,性能卓越,在电信运营商和大型企业中应用广泛,其 Windows 版本已经非常成熟。
- Kamailio: 专注于 SIP 信令路由和负载均衡,它本身不提供用户界面或电话功能,而是作为核心的 SIP 代理,为上层应用(如 Asterisk, FreeSWITCH)提供强大的路由、计费、负载均衡能力,适合构建大规模的 VoIP 网络。
- B2BUA (Back-to-Back User Agent): OpenSIPS (Kamailio 的分支) 也可以配置为 B2BUA,它像一个“中间人”,同时与两个 SIP 终端(如两个软电话)对话,可以实现对呼叫的完全控制和转换。
对于大多数希望在 Windows 上快速搭建一个简单或中等复杂度的 SIP 服务器的用户来说,Asterisk 和 FreeSWITCH 是最直接的选择。
详细部署指南 (以 FreeSWITCH 为例)
FreeSWITCH 的 Windows 版本安装非常简单,图形化界面友好,非常适合初学者,这里我们以 FreeSWITCH 为例,走一遍完整的安装和配置流程。
第一步:下载与安装
-
下载安装包:
- 访问 FreeSWITCH 官方网站:https://freeswitch.org/confluence/display/FREESWITCH/Windows+Install
- 在页面中找到 "Latest Stable Release" (最新稳定版) 的下载链接,通常是一个
.msi安装文件。
-
运行安装程序:
(图片来源网络,侵删)- 双击下载的
.msi文件。 - 重要选项: 在安装过程中,会询问你选择 "Console" (控制台) 还是 "Service" (服务) 模式。
- Console (控制台模式): 适合开发和测试,安装后,会弹出一个黑色的命令行窗口,FreeSWITCH 的所有日志都会实时显示在这里,关闭此窗口,FreeSWITCH 就会停止。
- Service (服务模式): 适合生产环境,FreeSWITCH 会在后台作为 Windows 服务运行,即使你注销或重启电脑,它也会自动启动,推荐选择此模式。
- 双击下载的
-
完成安装:
- 按照向导完成安装,默认安装路径通常是
C:\FreeSWITCH,请记住这个路径,后续配置会用到。
- 按照向导完成安装,默认安装路径通常是
第二步:基本配置
FreeSWITCH 的配置文件都位于 C:\FreeSWITCH\conf 目录下,核心配置文件是 C:\FreeSWITCH\conf\sip_profiles\internal.xml。
-
启动 FreeSWITCH:
- 如果你选择的是 Service 模式,可以在 Windows 的 "服务" 中找到 "FreeSWITCH",右键选择 "启动"。
- 如果你选择的是 Console 模式,直接双击桌面上的 "FreeSWITCH" 图标即可。
-
编辑 SIP 配置文件:
(图片来源网络,侵删)- 用记事本或 VS Code 等文本编辑器打开
C:\FreeSWITCH\conf\sip_profiles\internal.xml。 - 找到
<settings>标签,修改以下关键项:<!-- SIP profiles 内部配置 --> <X-PRE-PROCESS cmd="set" data="domain=your.domain.com" /> <!-- 将 your.domain.com 替换为你的域名或电脑的 IP 地址,192.168.1.100 -->
domain: 这是 SIP 服务器对外暴露的域名或 IP 地址,如果你的服务器在局域网内,可以设置为你的内网 IP(如168.1.100),如果需要公网访问,则使用公网 IP 或已解析的域名。
- 用记事本或 VS Code 等文本编辑器打开
-
配置拨号计划 (Dialplan):
- 拨号计划决定了当服务器收到一个呼叫时该如何处理,主要文件是
C:\FreeSWITCH\conf\dialplan\default.xml。 - 这是一个简单的示例,当任何用户拨打
911时,会呼叫一个紧急号码(这里只是示例):<include> <context name="default"> <extension name="emergency" continue="false" > <condition field="destination_number" expression="^911$"> <action application="bridge" data="sofia/external/911@your.voip.provider.com"/> <!-- 将 your.voip.provider.com 替换为你的 SIP Trunk 提供商的地址 --> </condition> </extension> </context> </include>
- 拨号计划决定了当服务器收到一个呼叫时该如何处理,主要文件是
第三步:创建 SIP 用户
FreeSWITCH 使用 directory 目录来管理 SIP 用户。
-
创建用户目录:
- 在
C:\FreeSWITCH\conf\directory目录下,创建一个以用户名命名的 XML 文件,xml。
- 在
-
编辑用户配置:
- 编辑
xml文件,内容如下:<include> <user id="1001"> <params> <param name="password" value="mypassword123"/> <!-- 设置用户的密码 --> <param name="vm-password" value="1001"/> <!-- 设置语音信箱密码 --> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="1001"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_name" value="Alice"/> <variable name="effective_caller_id_number" value="1001"/> </variables> </user> </include> id: SIP 分机号。password: 登录密码。effective_caller_id_name: 显示的姓名。effective_caller_id_number: 显示的号码。
- 编辑
第四步:连接 SIP 客户端并测试
现在你的 SIP 服务器已经配置好了,需要一个 SIP 软件或硬件电话来连接它。
-
选择 SIP 客户端:
- 软电话: Zoiper, Bria, Linphone, X-Lite 等,这些是安装在电脑或手机上的软件。
- 硬件电话: Polycom, Yealink, Grandstream 等品牌的 IP 话机。
-
配置 SIP 客户端:
- 打开你选择的软电话,进入账户设置。
- 用户名/ID:
1001 - 密码:
mypassword123 - 域名/服务器:
your.domain.com(即你在internal.xml中设置的值,168.1.100) - 注册/鉴证:
Yes - 传输协议:
UDP(默认即可)
-
测试:
- 保存设置后,软电话应该会向你的 FreeSWITCH 服务器注册成功,通常状态会显示为 "已注册" 或 "绿色"。
- 注册成功: 在 FreeSWITCH 的控制台日志中,你会看到类似
[NOTICE] sofia.c:2206 Registration for sofia/external/1001@192.168.1.100...的成功信息。 - 互拨测试: 如果你再创建一个用户
1002,用两部软电话分别登录1001和1002,然后互相拨打对方的号码,如果听到回铃并能通话,说明你的 SIP 服务器已经成功运行!
其他选择:Asterisk on Windows
Asterisk 在 Windows 上的部署不如 FreeSWITCH 那么原生和图形化,通常有两种方式:
-
Asterisk for Windows (官方/社区维护):
- 曾经有官方的 Windows 版本,但已停止更新,社区有一些维护版本,但稳定性和文档不如 Linux 版本。
- 优点: 熟悉 Asterisk 的用户可以继续使用其强大的 Dialplan 和 AGI 脚本。
- 缺点: 配置复杂,依赖众多,性能可能不如 Linux 版本。
-
使用虚拟机:
- 强烈推荐的方式,在你的 Windows 主机上安装一个虚拟机软件(如 VMware Workstation Player, VirtualBox),然后在虚拟机中安装一个 Linux 发行版(如 Ubuntu Server, CentOS)。
- 在 Linux 虚拟机中安装官方的 Asterisk。
- 优点:
- 性能最佳,最稳定。
- 可以使用 Asterisk 最新的功能和所有官方支持。
- 学习环境与生产环境一致,技能可复用。
- 可以将虚拟机与主机网络桥接,实现无缝通信。
- 缺点: 需要额外学习虚拟机和 Linux 的基本操作。
总结与对比
| 特性 | FreeSWITCH (Windows) | Asterisk (Linux 虚拟机) | Kamailio (Linux 虚拟机) |
|---|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ (安装简单,图形化好) | ⭐⭐ (配置复杂) | ⭐ (配置复杂,面向开发者) |
| 功能丰富度 | ⭐⭐⭐⭐⭐ (功能全面) | ⭐⭐⭐⭐⭐ (功能最全面,模块化) | ⭐⭐⭐ (专注于信令路由) |
| 性能 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ (高并发路由能力强) |
| Windows 支持 | 原生支持,非常成熟 | 不推荐原生,推荐虚拟机 | 不推荐原生,推荐虚拟机 |
| 适用场景 | 中小型企业、快速部署、PBX | 复杂呼叫中心、企业通信、集成 | 大型 VoIP 运营商、核心 SIP 代理 |
给您的建议:
- 如果您是初学者,或者只需要一个在 Windows 上快速搭建的 PBX 用于测试或小型办公室,直接选择 FreeSWITCH,它的 Windows 安装体验是最好的。
- 如果您需要 Asterisk 的特定功能(如强大的 Dialplan、ACD 队列),或者追求最佳性能和稳定性,强烈建议您使用 Asterisk + Linux 虚拟机 的方案,这是目前业界最主流和最可靠的做法。
- 如果您正在构建一个大规模的 VoIP 网络,需要处理海量并发呼叫,Kamailio 是您的不二之选,但它通常与 Asterisk 或 FreeSWITCH 配合使用,前者负责信令路由,后者负责媒体处理和业务逻辑。
