概述
YateBTS 是一款基于 Yate(Yet Another Telephony Engine)电话引擎的开源 GSM/GPRS 基站系统。它可以结合 SDR 硬件(如 BladeRF、USRP 等)搭建一个完整的 2G 蜂窝网络基站,用于通信安全研究和测试。
本文介绍 Yate 和 YateBTS 的编译安装、Web 管理界面配置,以及 GPRS 数据转发等核心配置步骤。
系统架构
| 组件 | 功能 | 说明 |
|---|---|---|
| Yate | 电话引擎核心 | 提供 VoIP、PSTN 连接能力,支持 SIP/H.323/IAX 等协议 |
| YateBTS | GSM/GPRS 基站 | 基于 Yate 引擎实现 GSM BTS 功能 |
| NIB Web | Web 管理界面 | 图形化配置界面,依赖 Apache2 + PHP |
| SDR 硬件 | 射频前端 | BladeRF / USRP 等设备提供射频收发能力 |
1. 安装 Yate 及 YateBTS
1.1 获取源码
1 | # 检出 Yate 源码 |
1.2 编译安装 Yate
1 | cd /yate |
1.3 编译安装 YateBTS
1 | cd /yatebts |
2. 安装 Web 管理界面(NIB)
前置依赖: 需要先安装 Apache2 和 PHP
2.1 创建配置文件并设置权限
1 | # 创建必要的配置文件 |
2.2 访问管理界面
通过浏览器访问 http://your-ip/nib 进行配置。
管理界面提供以下功能:
| 功能模块 | 说明 |
|---|---|
| GSM 参数配置 | 设置 MCC/MNC、频率、功率等 BTS 参数 |
| 用户管理 | 管理 SIM 卡注册、IMSI 白名单等 |
| 网络监控 | 查看当前连接的终端和通话状态 |
| 日志查看 | 查看系统运行日志和告警信息 |
3. GPRS 数据转发配置
如果需要通过 YateBTS 提供 GPRS 上网服务,需要配置 NAT 转发:
1 | # 启用 IP 转发 |
注意:
ens33为网络接口名称,需要根据实际环境替换。可以使用ip addr或ifconfig命令查看当前系统的网络接口。
持久化配置
要使 IP 转发在重启后仍然生效:
1 | # 编辑 sysctl.conf |
4. 终端连接
手机端配置
连接到 YateBTS 搭建的 GSM 网络时,手机需要进行以下设置:
| 步骤 | 操作 |
|---|---|
| 1 | 将手机网络模式设置为仅使用 2G(GSM Only) |
| 2 | 关闭自动选择运营商,改为手动搜索 |
| 3 | 在搜索结果中选择 YateBTS 广播的网络(根据配置的 MCC/MNC) |
| 4 | 等待注册完成后即可通话/发送短信 |
常见问题
| 问题 | 解决方案 |
|---|---|
| SDR 设备无法识别 | 检查驱动安装、USB 连接,使用 lsusb 确认设备 |
| Web 界面无法访问 | 检查 Apache2 服务状态、PHP 模块是否加载、软链接是否正确 |
| 手机搜索不到网络 | 检查频率设置是否与手机支持的频段一致,调整发射功率 |
| GPRS 无法上网 | 检查 IP 转发是否开启、iptables 规则是否正确、DNS 配置 |
安全提示
⚠️ 重要警告: YateBTS 搭建的 GSM 基站仅可用于合法的安全研究和测试目的。在使用前请确保:
- 已获得必要的无线电频率使用许可
- 在屏蔽环境中进行测试,避免干扰公共通信网络
- 遵守所在地区的无线电管理法规
- 不得用于任何非法窃听、干扰或欺骗活动
相关文章
本文是 GSM 安全研究系列的一部分。YateBTS 与 OpenBTS 类似,都是开源的 GSM 基站实现,但 YateBTS 基于 Yate 电话引擎,在 VoIP 集成方面具有独特优势。相关内容可参考 OpenBTS、GSM 基础、GSM 嗅探等文章。