雅典娜路由器上的 homeproxy / sing-box 代理记录
将京东云无线宝 AX6600 雅典娜刷成 LibWrt 后,用 homeproxy 管理 sing-box,在路由器上提供一个常驻的内网混合代理出口。
本文接在上一篇《京东云无线宝 AX6600 雅典娜刷 OpenWrt/LibWrt 记录》后面。刷机解决的是“这台路由器能不能被我控制”;这一篇只记录它作为常驻代理出口时,
homeproxy和sing-box这一层怎么用、怎么检查、怎么避免踩坑。
1. 为什么放到路由器上
我之前一直把代理看成某台电脑上的客户端:Windows 开一个,WSL 里再想办法连过去,其他设备或服务又要单独处理一遍。
这在个人电脑上能用,但不够稳定:
- Windows 睡眠、重启或代理客户端退出,其他设备就跟着断。
127.0.0.1:10808只对当前机器有意义,换到 WSL、手机、远端机器或其他运行环境就要重新解释。- 很多命令行工具只是临时需要公网出口,不值得把代理写进全局配置。
- 路由器本来就是常开设备,把轻量代理服务放在这一层更自然。
所以现在的目标很简单:
| |
一句话:桌面代理可以临时用,常驻代理出口放到路由器上。
2. 当前状态
这是写本文时的实机状态。节点、订阅、密码、私钥都不写进公开博客,也不放截图。
| 项目 | 当前值 |
|---|---|
| 设备 | 京东云无线宝 AX6600 雅典娜 |
| 系统 | LibWrt SNAPSHOT |
| 内核 | Linux 6.12.87,aarch64 |
| homeproxy | running |
| sing-box | 1.12.25 |
| LAN | 192.168.221.1/24 |
| WireGuard/LAN 地址 | 10.22.0.3/32 |
wg_school 地址 | 10.77.0.3/32 |
| 代理监听 | :::10808 |
路由器上看到的关键进程类似这样:
| |
这里可以看出两点:
homeproxy负责生成和托管运行时配置。- 真正提供代理能力的是
sing-box。
3. WebUI 配置思路
我这套方案不直接手写完整 sing-box 配置,而是通过 LuCI 里的 homeproxy 管。
大体上关注这几类配置就够了:
| 配置面 | 关注点 |
|---|---|
| 服务开关 | 启用 homeproxy,确认保存并应用后服务能启动 |
| 节点/订阅 | 只在路由器本地维护,不写进文章和仓库 |
| 入站监听 | 开一个 mixed HTTP/SOCKS5 入口,端口用 10808 |
| 访问范围 | 只给可信 LAN / WireGuard 侧设备访问,不对 WAN 开放 |
| DNS/透明代理 | 不是本文重点,先保持方案收敛,按需要再单独调 |
LuCI 登录页可以直接打开:
| |
配置时我的原则是:先把“显式代理”跑稳,也就是客户端明确使用 http://10.77.0.3:10808 或 http://10.22.0.3:10808。透明代理、DNS 分流、自动劫持这些能力很强,但排错面也更大,不适合一开始就全打开。
如果要给文章配图,建议只截这些安全页面:
homeproxy服务状态和开关。- mixed 监听端口配置。
- 防火墙区域或接口绑定。
不要截节点列表、订阅 URL、访问密钥、出站配置细节。
4. 客户端怎么用
WSL 里跑 git、gh、curl、pip、npm 这类命令时,优先用 one-shot 环境变量:
| |
如果 10.77.0.3:10808 不通,再切回同一路由器的 fallback:
| |
不建议写:
| |
全局代理很容易在换网络、换机器、换 WireGuard 状态之后反过来坑自己。临时命令需要代理,就给这个命令加环境变量;长期服务需要代理,再写到对应服务自己的配置里。
5. 怎么确认代理真的工作
5.1 从 WSL 测出口
测试 generate_204:
| |
本文写作时返回:
| |
测试 GitHub:
| |
本文写作时返回:
| |
如果 10.77.0.3:10808 不通,把命令里的代理地址换成 10.22.0.3:10808 再试一次。
5.2 从路由器看服务
登录路由器后检查:
| |
我这次看到的核心结果:
| |
这三个结果同时成立,才说明“路由器上的代理入口”这一层是活的。
6. 安全边界
代理服务最重要的是边界,不是端口能通就完事。
我的公开边界:
| |
特别注意 :::10808。它说明 socket 层是 all-interface 监听,但这不等于公网已经可访问,也不等于一定安全。最终能不能从外部访问,还取决于 OpenWrt 防火墙、接口区域、WAN 入站规则和上游网络。
我的处理方式是:监听可以统一,但防火墙边界必须明确;公开文章里也只写服务边界和验证方式,不写可复用的敏感配置。
7. 踩坑点
7.1 不要把本机地址当成通用地址
127.0.0.1:10808 只适合“当前这台机器自己访问自己”。一旦换到 WSL、路由器、手机或另一台电脑,它就不是同一个服务了。
这也是我把常驻出口放到雅典娜的原因:内网设备统一记路由器地址,不再猜某台电脑上的本地端口。
7.2 不要在 WSL 里用 10.77.0.11:10808
10.77.0.11 是这台 Windows/WSL 主机给其他 WireGuard peer 看的地址,不适合作为 WSL 自己的默认代理。
WSL 里优先使用:
| |
同一路由器 fallback:
| |
只有明确知道 Windows 侧代理正在运行时,才临时用:
| |
7.3 先显式代理,再考虑透明代理
显式代理的好处是排错直接:
| |
透明代理一旦叠加 DNS、路由表、防火墙和分流规则,排查复杂度会高很多。我的建议是先让 curl --proxy ... 稳定,再按需打开更复杂的分流能力。
8. 维护清单
平时按下面顺序排查:
- LuCI 里
homeproxy是否启用。 - 路由器上
/etc/init.d/homeproxy status是否 running。 sing-box version是否正常输出。netstat -lntp | grep 10808是否能看到sing-box监听。- WSL 里用
curl --proxy http://10.77.0.3:10808测generate_204或 GitHub。 - 不通时切到
10.22.0.3:10808再测一次,判断是代理坏了还是某条 WireGuard/路由路径坏了。 - 确认防火墙没有把
10808开到 WAN。
这篇文章以后主要给我自己看:雅典娜上的 homeproxy 不是“又装了一个插件”,而是给内网可信设备提供一个稳定、可验证、不过度耦合某台电脑状态的代理出口。