asterisk/asterisk
GitHub: asterisk/asterisk
Asterisk 是一个功能完备的开源 PBX 和电话工具包,提供 VoIP、SIP 和传统 PSTN 通信的完整解决方案。
Stars: 3200 | Forks: 1224
# Asterisk(R) 开源 PBX
```
By Mark Spencer and the Asterisk.org developer community.
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
```
## 安全性
在尝试配置和运行 Asterisk 服务器之前,务必阅读并充分理解安全信息文档的内容。
有关更多信息,请参阅[重要安全注意事项](https://docs.asterisk.org/Deployment/Important-Security-Considerations)。
## 什么是 ASTERISK ?
Asterisk 是一个开源的 PBX 和电话工具包。从某种意义上说,它是位于底层 Internet 和电话通道与顶层 Internet 和电话应用程序之间的中间件。然而,Asterisk 不仅支持 Internet 电话接口,还支持更多的电话接口。Asterisk 也对传统的 PSTN 电话提供了广泛的支持。
有关项目本身的更多信息,请访问 [Asterisk 主页](https://www.asterisk.org) 和官方 [Asterisk 文档](https://docs.asterisk.org)。
## 支持的操作系统
### Linux
Asterisk 开源 PBX 主要在 GNU/Linux 操作系统上进行开发和测试,并支持所有主要的 GNU/Linux 发行版。
### 其他
Asterisk 也已被“移植”,据报道可以在其他操作系统上正常运行,例如 Apple 的 Mac OS X 以及 BSD 的各种变体。
## 入门指南
如今大多数用户都完全使用 VoIP/SIP,但如果您需要连接到 TDM 或模拟服务/设备,请确保您拥有受支持的硬件。
受支持的电话硬件包括:
* Sangoma 的所有模拟和数字接口卡
* 任何受 PortAudio 支持的全双工声卡
* Xorcom Astribank channel bank
### 从早期版本升级
如果您是从以前的 Asterisk 版本进行更新,请确保阅读了更改日志。
[更改日志](https://downloads.asterisk.org/pub/telephony/asterisk)
### 全新安装
确保您的系统包含兼容的编译器和开发库。Asterisk 需要 GNU Compiler Collection (GCC) 4.1 或更高版本,或者支持 C99 规范及某些 gcc 语言扩展的编译器。此外,您的系统需要有可用的 C 库头文件以及 ncurses 的头文件和库。
许多模块具有额外的依赖项。要查看正在寻找哪些库,请参见 `./configure --help`,或运行 `make menuselect` 以查看特定模块的依赖项。
在许多发行版中,这些依赖项是通过名为 'glibc-devel'、'ncurses-devel'、'openssl-devel' 和 'zlib-devel' 等类似名称的软件包安装的。可以使用 `contrib/scripts/install_prereq` 脚本来安装大多数基于 Debian 和 Redhat 的 Linux 发行版的依赖项。
该脚本还支持处理 SUSE、Arch、Gentoo、FreeBSD、NetBSD 和 OpenBSD,但这些发行版可能没有完整的支持,或者可能已经过时。
那么,让我们开始吧:
1. 阅读文档。
[Asterisk 文档](https://docs.asterisk.org) 网站包含有关构建、安装、配置和运行 Asterisk 的完整信息。 2. 运行 `./configure`
执行 configure 脚本以猜测编译期间使用的系统相关变量的值。如果脚本提示缺少某些必需的组件,您可以运行 `./contrib/scripts/install_prereq install` 来安装必要的组件。请注意,这将安装 Asterisk 所有功能的所有依赖项。运行此脚本后,您需要重新运行 `./configure`。 3. 运行 `make menuselect`
如果您想选择要编译的模块并检查各种可选模块的依赖项,则需要执行此步骤。 4. 运行 `make`
假设构建成功完成: 5. 运行 `make install`
如果这是您第一次使用 Asterisk,您可能希望安装示例 PBX 及演示扩展等。如果是这样,请运行: 6. 运行 `make samples`
这样做将覆盖您已安装的任何现有配置文件。 7. 最后,您可以使用 `asterisk -vvvc` 以前台模式(非守护进程)启动 Asterisk
在 Asterisk 初始化时,您会看到大量详细消息在屏幕上闪过(这就是“非常非常详细”模式)。准备就绪后,如果您指定了 "c",您将看到一个命令行控制台,如下所示:
`*CLI>`
您可以随时键入 `core show help` 以获取有关系统的帮助。要获取特定命令的帮助,请键入 `core show help`。
在 Unix/Linux 命令提示符下运行 `man asterisk` 将为您提供有关如何启动和停止 Asterisk 以及启动 Asterisk 的所有命令行选项的详细信息。
### 关于配置文件
所有 Asterisk 配置文件共享一种通用格式。注释以 `;` 分隔(因为 `#` 作为 DTMF 数字,当然可能会出现在许多地方)。配置文件被划分为多个部分,其名称显示在 `[]` 中。每个部分通常包含 `variable = value` 形式的语句,尽管您可能会在较旧的示例中看到 `variable => value`。
### 关于时间的特别说明
使用 SIP 电话的用户应注意,Asterisk 对时间的剧烈跳动很敏感。使用 date(1)(或其他类似命令)手动更改系统时间可能会导致 SIP 注册和其他内部进程失败。因此,您应该始终使用时间同步软件包来保持系统时间的准确性。
所有操作系统/发行版都提供以下一个或多个软件包:
* ntpd/ntpsec
* chronyd
* systemd-timesyncd
请务必安装并配置其中一个(只能是一个)。
### 文件描述符
根据系统的规模和配置,Asterisk 可能会消耗大量文件描述符。在 UNIX 中,文件描述符不仅用于磁盘上的文件,还用于处理网络通信(例如 SIP、IAX2 或 H.323 呼叫)和硬件访问(例如模拟和数字中继硬件)。Asterisk 访问许多磁盘文件,用于处理从配置信息到语音邮件存储的所有内容。
大多数系统都会限制 Asterisk 一次可以打开的文件描述符的数量。这可能会限制系统可以处理的同时呼叫的数量。例如,如果限制设置为 1024(一个常见的默认值),Asterisk 大约可以同时处理 150 个 SIP 呼叫。要更改文件描述符的数量,请按照以下适用于您系统的说明进行操作:
#### 基于 PAM 的 LINUX 系统
如果您的系统使用 PAM(可插拔认证模块),请编辑 `/etc/security/limits.conf`。在文件底部添加以下行:
```
root soft nofile 4096
root hard nofile 8196
asterisk soft nofile 4096
asterisk hard nofile 8196
```
(可根据需要调整数字)。您可能需要重新启动系统才能使这些更改生效。
#### 通用 UNIX 系统
如果上面没有专门针对您系统的说明,您可以尝试在启动 Asterisk 的脚本中添加 `ulimit -n 8192` 命令。
## 更多信息
访问 [Asterisk 文档](https://docs.asterisk.org) 网站以获取有关各种功能的更多文档,并请阅读所有配置示例,其中包含有关配置选项的文档。
最后,您可能希望加入
[Asterisk 社区论坛](https://community.asterisk.org)
欢迎加入不断壮大的全球 Asterisk 用户社区!
```
Mark Spencer, and the Asterisk.org development community
```
Asterisk 是 Sangoma Technologies Corporation 的商标
\[[Sangoma](https://www.sangoma.com/)\]
\[[主页](https://www.asterisk.org)\]
\[[支持](https://www.asterisk.org/support)\]
\[[文档](https://docs.asterisk.org)\]
\[[社区论坛](https://community.asterisk.org)\]
\[[发行说明](https://github.com/asterisk/asterisk/releases)\]
\[[安全](https://docs.asterisk.org/Deployment/Important-Security-Considerations/)\]
\[[邮件列表存档](https://lists.digium.com)\]
[Asterisk 文档](https://docs.asterisk.org) 网站包含有关构建、安装、配置和运行 Asterisk 的完整信息。 2. 运行 `./configure`
执行 configure 脚本以猜测编译期间使用的系统相关变量的值。如果脚本提示缺少某些必需的组件,您可以运行 `./contrib/scripts/install_prereq install` 来安装必要的组件。请注意,这将安装 Asterisk 所有功能的所有依赖项。运行此脚本后,您需要重新运行 `./configure`。 3. 运行 `make menuselect`
如果您想选择要编译的模块并检查各种可选模块的依赖项,则需要执行此步骤。 4. 运行 `make`
假设构建成功完成: 5. 运行 `make install`
如果这是您第一次使用 Asterisk,您可能希望安装示例 PBX 及演示扩展等。如果是这样,请运行: 6. 运行 `make samples`
这样做将覆盖您已安装的任何现有配置文件。 7. 最后,您可以使用 `asterisk -vvvc` 以前台模式(非守护进程)启动 Asterisk
在 Asterisk 初始化时,您会看到大量详细消息在屏幕上闪过(这就是“非常非常详细”模式)。准备就绪后,如果您指定了 "c",您将看到一个命令行控制台,如下所示:
`*CLI>`
您可以随时键入 `core show help` 以获取有关系统的帮助。要获取特定命令的帮助,请键入 `core show help
标签:Asterisk, Digium, FreePBX, IPPBX, PBX系统, PSTN, Sangoma, SIP, TDM, VoIP, 企业通信, 安全测试工具, 客户端加密, 开源PBX, 开源通信, 电话系统, 红队技术, 网关, 网络电话, 融合通信, 语音服务器, 通信中间件, 通信技术