网络环境日益复杂,优秀的工具往往意味着不低的配置门槛。即使是像 sing-box 这样功能强大、设计优雅的通用代理平台,其 JSON 格式的灵活配置也可能让人望而却步,且不同协议、路由规则的组合极易遗忘。为避免重复“踩坑”,特此记录下 sing-box 的配置过程与关键细节,以作备忘。
什么是 sing-box?
sing-box 是一个用 Rust 编写的通用代理平台,由 SagerNet 团队开发。它支持多种代理协议,包括 V2Ray、Trojan、Hysteria2、Shadowsocks 等,可以说是目前功能最全面的代理工具之一。
为什么选择 sing-box?
- 🚀 性能卓越:Rust 编写,内存占用小,并发能力强
- 🔄 协议丰富:支持市面上几乎所有主流代理协议
- 🎯 智能路由:内置强大的规则引擎,支持域名、IP、地理位置等多种匹配方式
- 🔧 配置灵活:JSON 格式配置,结构清晰,易于维护
- 🛡️ 透明代理:支持 TProxy 模式,无需客户端配置
准备工作
硬件要求
- OpenWrt 路由器:建议 21.02 版本以上
- 存储空间:至少 16MB 可用空间
- 内存:建议 128MB 以上(内存越大,并发连接数越多)
- 网络:稳定的互联网连接
技术概念简介
TProxy(透明代理) 是 Linux 内核提供的一种流量重定向机制。简单来说,它可以在用户毫无察觉的情况下,将网络流量自动转发到代理服务器。这意味着:
- 📱 零配置:手机、电脑、平板等设备无需任何设置
- 🏠 全屋覆盖:连接路由器的所有设备都能享受代理服务
- 🔄 智能分流:国内网站直连,国外网站走代理
安装 sing-box
下载安装包
首先连接到你的 OpenWrt 路由器,通过 SSH 登录:
1 | # 进入临时目录 |
创建服务管理脚本
为了确保 IP 路由规则持久化,我们创建一个服务管理脚本,负责在启动时添加 IP 规则,在停止时清理:
1 | # 创建服务脚本 |
配置 sing-box
创建主配置文件
sing-box 的核心配置文件是 /etc/sing-box/config.json,这个文件定义了代理的所有行为:
1 | { |
配置文件说明:
- DNS 设置:国内域名使用 223.5.5.5 解析,国外域名使用 8.8.8.8 解析
- 入站设置:监听 12345 端口,接收 TProxy 转发的流量
- 出站设置:定义了直连、代理、阻止等不同的出口
- 路由规则:根据地理位置和域名列表智能分流
配置防火墙规则
为了确保防火墙规则在网络或防火墙服务重启后不会丢失,我们采用 nftables 钩子方案。这是 OpenWrt 中持久化防火墙规则的最佳实践。
创建一个 .nft 文件,OpenWrt 的 firewall4 服务在每次启动或重载时都会自动读取并加载它。
创建文件: /etc/nftables.d/99-singbox.nft
1 | cat << "EOF" > /etc/nftables.d/99-singbox.nft |
验证路由规则
启动服务后,检查路由规则是否正确加载:
1 | # 检查 IP 规则 |
启动和验证
启动服务
1 | # 应用 nftables 规则 |
验证配置
1 | # 检查 sing-box 进程是否运行 |
监控日志
1 | # 实时查看 sing-box 日志 |
常见问题解决
TProxy 不工作
1 | # 检查内核是否支持 IP 转发 |
DNS 解析失败
1 | # 测试 DNS 解析 |
性能优化
1 | # 调整内核参数以提高性能 |
日常维护
服务管理
1 | # 重启 sing-box 服务 |
更新规则集
1 | # 下载最新的地理位置规则集 |
备份配置
1 | # 备份整个配置目录 |
进阶配置
多服务器负载均衡
如果你有多个代理服务器,可以配置负载均衡:
1 | { |
自定义规则
你可以添加自定义的路由规则:
1 | { |
为什么选择 nftables 钩子方案?
nftables 钩子方案具有以下显著优势:
- ✅ 持久性:规则存储在
/etc/nftables.d/目录中,防火墙重启时自动加载 - ✅ 稳定性:避免网络重启时规则丢失导致的断网问题
- ✅ 简洁性:规则集中管理,配置更加清晰
- ✅ 兼容性:与 OpenWrt 的 firewall4 服务完美集成
- ✅ 可维护性:便于调试和修改规则
服务脚本特点
- 🔄 自动管理 IP 规则:启动时加载,停止时清理,避免规则残留
- ⚡ 优化的启动顺序:确保 sing-box 启动后再加载路由规则
- 🛡️ 错误处理:使用
2>/dev/null避免重复添加规则时的报错 - 📊 状态反馈:明确的加载和卸载提示信息
总结
sing-box 的 TProxy 配置方案提供了一个功能强大且相对简单的透明代理解决方案。相比传统的 TUN 模式,它具有以下优势:
- ✅ 兼容性更好:不会与 VPN、Docker 等网络服务冲突
- ✅ 性能更优:内核层面转发,性能损失更小
- ✅ 配置更简单:无需复杂的客户端配置
- ✅ 维护更容易:集中管理,便于调试和监控
通过这个配置,你可以为整个家庭网络提供智能代理服务,让所有设备都能畅游全球互联网。同时,国内网站仍然保持直连,确保访问速度。
重要提醒:你的防火墙规则已经持久化,即使运行 /etc/init.d/firewall reload,TProxy 的重定向规则也会被自动重新加载,确保网络连接稳定可靠!
📝 记录时间:2025-11-01 20:41 | 配置环境:OpenWrt 23.05 + sing-box v1.8.3
温馨提示:在使用代理服务时,请确保遵守当地法律法规,合理使用网络资源。本文仅用于技术学习和交流目的。