D~DIDI~DIDIDI!!!!

0%

YateBTS

概述

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
2
3
4
5
# 检出 Yate 源码
svn checkout http://yate.null.ro/svn/yate/trunk yate

# 检出 YateBTS 源码
svn checkout http://voip.null.ro/svn/yatebts/trunk yatebts

1.2 编译安装 Yate

1
2
3
4
5
6
cd /yate
./autogen.sh
./configure --prefix=/usr/local
make
sudo make install
sudo ldconfig

1.3 编译安装 YateBTS

1
2
3
4
5
6
cd /yatebts
./autogen.sh
./configure --prefix=/usr/local
make
sudo make install
sudo ldconfig

2. 安装 Web 管理界面(NIB)

前置依赖: 需要先安装 Apache2 和 PHP

2.1 创建配置文件并设置权限

1
2
3
4
5
6
7
8
9
10
11
12
# 创建必要的配置文件
sudo touch /usr/local/etc/yate/snmp_data.conf /usr/local/etc/yate/tmsidata.conf

# 设置组写权限
sudo chmod g+w /usr/local/etc/yate/*.conf

# 创建 Web 界面软链接
cd /var/www/html
ln -s /usr/local/share/yate/nib_web nib

# 设置配置目录权限(允许 Web 界面修改配置)
chmod -R a+w /usr/local/etc/yate

2.2 访问管理界面

通过浏览器访问 http://your-ip/nib 进行配置。

管理界面提供以下功能:

功能模块 说明
GSM 参数配置 设置 MCC/MNC、频率、功率等 BTS 参数
用户管理 管理 SIM 卡注册、IMSI 白名单等
网络监控 查看当前连接的终端和通话状态
日志查看 查看系统运行日志和告警信息

3. GPRS 数据转发配置

如果需要通过 YateBTS 提供 GPRS 上网服务,需要配置 NAT 转发:

1
2
3
4
5
# 启用 IP 转发
sudo sysctl -w net.ipv4.ip_forward=1

# 配置 iptables NAT(将 ens33 替换为实际的外网接口名)
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

注意: ens33 为网络接口名称,需要根据实际环境替换。可以使用 ip addrifconfig 命令查看当前系统的网络接口。

持久化配置

要使 IP 转发在重启后仍然生效:

1
2
3
4
5
6
# 编辑 sysctl.conf
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

# 使用 iptables-persistent 保存 NAT 规则
sudo apt-get install iptables-persistent
sudo netfilter-persistent save

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 嗅探等文章。