什么是 Realm
Realm 简介
Realm 是一个轻量级的端口转发工具,支持 TCP/UDP 协议,可以在本地服务器上将流量转发到 WarpTok 的入口地址,实现更灵活的网络架构。
适用场景
- 需要在本地服务器上统一管理多个转发规则
- 需要对流量进行预处理或监控
- 在内网环境中部署转发节点
- 需要自定义转发逻辑
安装 Realm
Linux 系统
# 下载最新版本
wget https://github.com/zhboner/realm/releases/download/v2.5.4/realm-x86_64-unknown-linux-gnu.tar.gz
# 解压
tar -xzf realm-x86_64-unknown-linux-gnu.tar.gz
# 移动到系统路径
sudo mv realm /usr/local/bin/
# 验证安装
realm --versionWindows 系统
- 访问 GitHub Releases 页面
- 下载 realm-x86_64-pc-windows-msvc.zip
- 解压到任意目录(如 C:\realm)
- 将目录添加到系统环境变量 PATH
- 打开命令提示符,运行 realm --version 验证
macOS 系统
# 使用 Homebrew 安装
brew install realm
# 或手动下载
wget https://github.com/zhboner/realm/releases/download/v2.5.4/realm-x86_64-apple-darwin.tar.gz
tar -xzf realm-x86_64-apple-darwin.tar.gz
sudo mv realm /usr/local/bin/基础配置
创建配置文件
创建 realm 配置文件 config.toml
# config.toml
[network]
no_tcp = false
use_udp = true
[[endpoints]]
listen = "0.0.0.0:8080"
remote = "203.0.113.45:1935"
# listen: 本地监听地址和端口
# remote: WarpTok 入口 IP 和端口配置说明
- listen: 指定本地监听的 IP 和端口
- - 0.0.0.0 表示监听所有网卡
- - 也可以指定具体 IP,如 192.168.1.100
- remote: 指定转发目标
- - 填写 WarpTok 分配的入口 IP 和端口
- - 可以从 WarpTok 控制台获取
- no_tcp: 是否禁用 TCP(默认 false)
- use_udp: 是否启用 UDP(默认 false)
配合 WarpTok 使用
配置架构
典型的三层转发架构
- 应用/客户端 → 本地 Realm 服务 → WarpTok 入口 → 目标服务器
- 举例(TikTok 直播):
- OBS (推流软件)
- ↓ 推流到本地
- 127.0.0.1:8080 (Realm 监听)
- ↓ 转发到 WarpTok
- 203.0.113.45:1935 (WarpTok 入口)
- ↓ WarpTok 转发
- live.tiktok.com:1935 (TikTok 服务器)
配置步骤
- 1. 在 WarpTok 控制台配置目标地址
- - 目标 IP: live.tiktok.com
- - 目标端口: 1935
- 2. 记录 WarpTok 分配的入口地址
- - 入口 IP: 例如 203.0.113.45
- - 入口端口: 例如 1935
- 3. 创建 Realm 配置文件
- - listen: 0.0.0.0:8080
- - remote: 203.0.113.45:1935
- 4. 在 OBS 中配置
- - 服务器: rtmp://127.0.0.1:8080/live
高级配置
多端口转发
同时转发多个端口
# config.toml
[network]
no_tcp = false
use_udp = true
# 转发规则 1:RTMP 推流
[[endpoints]]
listen = "0.0.0.0:8080"
remote = "203.0.113.45:1935"
# 转发规则 2:HTTP API
[[endpoints]]
listen = "0.0.0.0:8081"
remote = "203.0.113.46:80"
# 转发规则 3:WebSocket
[[endpoints]]
listen = "0.0.0.0:8082"
remote = "203.0.113.47:443"负载均衡
使用多个 WarpTok 入口实现负载均衡
[[endpoints]]
listen = "0.0.0.0:8080"
remote = "203.0.113.45:1935"
[[endpoints]]
listen = "0.0.0.0:8080"
remote = "203.0.113.46:1935"
# Realm 会自动在两个远程地址间进行负载均衡启用日志
# config.toml
[log]
level = "info"
output = "/var/log/realm.log"
# level 可选值:trace, debug, info, warn, error
# output 指定日志文件路径运行 Realm
前台运行(测试)
# Linux/macOS
realm -c config.toml
# Windows
realm.exe -c config.toml
# 看到 "Realm is running..." 表示启动成功后台运行(生产环境)
使用 systemd 管理(Linux)
# 1. 创建 systemd 服务文件
sudo nano /etc/systemd/system/realm.service
# 2. 添加以下内容:
[Unit]
Description=Realm Port Forwarding
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/realm -c /etc/realm/config.toml
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
# 3. 启动服务
sudo systemctl daemon-reload
sudo systemctl start realm
sudo systemctl enable realm # 开机自启
# 4. 查看状态
sudo systemctl status realm
# 5. 查看日志
sudo journalctl -u realm -fWindows 后台运行
- 方法 1:使用 NSSM(推荐)
- - 下载 NSSM: nssm.cc
- - 运行: nssm install Realm
- - Path: C:\realm\realm.exe
- - Arguments: -c C:\realm\config.toml
- - 点击 Install service
- 方法 2:使用任务计划程序
- - 打开「任务计划程序」
- - 创建基本任务
- - 触发器选择「启动时」
- - 操作选择启动 realm.exe
监控和维护
检查运行状态
# Linux (使用 systemd)
sudo systemctl status realm
# 查看日志
sudo journalctl -u realm -n 100
# 检查端口监听
sudo netstat -tlnp | grep realm
# 或
sudo ss -tlnp | grep realm性能监控
- 使用 top 或 htop 查看 CPU 和内存使用
- 使用 iftop 或 nload 监控网络流量
- 定期检查日志文件大小,避免占满磁盘
- 在 WarpTok 控制台查看流量使用情况
重启服务
# Linux
sudo systemctl restart realm
# Windows (使用 NSSM)
nssm restart Realm
# 手动停止和启动
# 先找到进程 ID
ps aux | grep realm
# 然后终止进程
kill -9 <PID>
# 重新启动
realm -c config.toml &故障排除
连接失败
- 检查配置文件语法是否正确
- 确认 WarpTok 入口 IP 和端口准确
- 使用 telnet 测试连接:
- telnet 203.0.113.45 1935
- 检查防火墙是否放行端口
- 查看 Realm 日志了解错误信息
转发延迟高
- 在 WarpTok 控制台更换入口地区
- 检查本地服务器网络质量
- 使用 ping 测试到 WarpTok 入口的延迟
- 考虑升级本地服务器带宽
服务异常退出
- 查看日志文件查找错误信息
- 检查系统资源是否充足
- 确认配置文件没有被修改
- 使用 systemd 设置自动重启
最佳实践
安全建议
- 不要在公网暴露 Realm 监听端口
- 如需公网访问,使用防火墙限制来源 IP
- 定期更新 Realm 到最新版本
- 使用非标准端口增加安全性
- 配置文件权限设置为 600
性能优化
- 在物理距离近的服务器部署 Realm
- 使用 SSD 存储日志文件
- 合理配置日志级别,避免过多 I/O
- 定期清理旧日志文件
- 监控系统资源使用情况
高可用方案
- 部署多个 Realm 实例实现冗余
- 使用不同的 WarpTok 入口地址
- 配置健康检查和自动切换
- 设置监控告警及时发现问题