Android 17 sing-box 局域网不能用?权限与连接排查步骤
简答:Android 17 上 sing-box 局域网不能用,先打开客户端主界面,停止后手动启动服务,观察是否出现本地网络权限请求并按系统提示授权。授权后用固定的局域网 IP 测试;IP 仍失败再查 TUN 和路由,只有 IP 正常、域名失败时才优先查 DNS。
定义:本文所说的“局域网不能用”,是指 sing-box 运行后手机无法访问同一网络中的路由器、NAS、内网 IP 或局域网服务,不等同于所有外网连接都失败。
先做快速判断:权限、IP、DNS 和 TUN 不要混查
本文是 ghproxy.cyou 的第三方使用指南,不是 sing-box 官方页面。适用范围是 Android 17 上的 sing-box Android 图形客户端或基于它的封装客户端;不同客户端、厂商系统和版本的菜单名称可能不同,以下操作应以设备实际显示为准。
一句话结论:先从 sing-box 主界面手动启动一次并完成本地网络相关授权,再用同一个局域网 IP 重复测试;不要一开始就修改 DNS 或复制其他内核的 TUN 配置。
| 现象 | 优先判断 | 第一动作 | 成功标准 |
|---|---|---|---|
| 外网正常,路由器或 NAS 的 IP 打不开 | 本地网络权限或 TUN 路由 | 从主界面停止并手动启动服务 | 同一局域网 IP 能打开或产生正常连接日志 |
| 手动启动后正常,重启手机后失效 | 开机自启、快捷磁贴或 Always-on VPN 的启动路径 | 先手动打开客户端并启动一次,再重复开机启动测试 | 不同启动方式结果一致 |
IP 正常,内网域名或 .local 失败 | DNS、mDNS 或域名分流 | 保留 IP 测试结果,单独查看 DNS 日志 | 能区分解析失败和连接失败 |
| 手机本机正常,热点共享设备不通 | VPN 共享或转发链路 | 不要套用本机访问结论,单独检查共享方式 | 明确是本机链路还是其他设备链路 |
Android 官方说明,面向 Android 17(API 37)或更高版本的应用需要处理新的 ACCESS_LOCAL_NETWORK 运行时权限;局域网 TCP、UDP 以及 .local 服务解析都可能受到本地网络权限控制。developer.android.com
第一步:从客户端主界面重新触发本地网络授权
- 暂时不要从开机自启、快捷设置磁贴或 Always-on VPN 直接启动。
- 打开 sing-box Android 图形客户端,进入主界面。
- 停止正在运行的服务,再从主界面手动启动一次。
- 如果系统弹出本地网络相关请求,按系统提示允许。
- 打开一个固定的局域网目标,例如路由器管理地址、NAS IP 或你确认在线的局域网设备。
如果主界面没有弹窗,可尝试这条通用系统路径:打开“设置”→“应用”→找到实际安装的 sing-box 客户端→查看“权限”或“应用权限”。但并非所有设备都会显示同样的入口,也不能保证权限名称一致;如果页面没有对应项目,应回到客户端主界面重新启动,并核对该客户端的说明。
不要把“附近设备”当成所有手机都固定使用的名称。Android 官方将 ACCESS_LOCAL_NETWORK 放在现有 NEARBY_DEVICES 权限组中,但厂商系统如何呈现入口仍可能不同;最终以系统实际显示为准。developer.android.com
Android 17 的行为变化页面明确说明,强制本地网络保护针对目标 SDK 37 或更高的应用;因此不能仅凭“手机升级到 Android 17”就判断每个客户端都会出现相同权限流程。应用是否声明、是否请求以及是否已授权,需要结合实际版本和系统状态核对。developer.android.com
为什么开机自启或快捷磁贴可能单独失败
截至 2026 年 11 月 1 日,sing-box 社区 Issue #4676 页面显示为 Open。该问题报告记录了一种特定环境:Android 17、sing-box for Android 图形客户端,以及服务通过开机自启、快捷设置磁贴或 Always-on VPN 启动时,可能没有经过 MainActivity 中的权限请求流程。它不能证明所有设备或所有封装客户端都会复现。github.com
因此,排查时应把“启动方式”记录下来:
- 从客户端主界面手动启动后是否能访问局域网;
- 重启手机后自动启动是否仍能访问;
- 通过快捷设置磁贴启动是否出现相同问题;
- Always-on VPN 启动时,系统是否显示权限未完成或连接异常。
如果只有非主界面启动失败,优先重新打开客户端并手动启动一次,再查看应用信息页中的版本号、客户端“关于”页面和对应发布说明。版本号和修复状态以设备实际安装包、客户端发布说明及当前 Issue 页面为准,本文不替你判断某个版本已经修复。
第二步:用固定局域网 IP 分离权限、TUN 和 DNS
- 先测 IP:使用路由器、NAS 或其他设备的局域网 IP。不要先测主机名,因为主机名失败可能只是解析问题。
- 再测内网域名:如果 IP 能访问、域名不能访问,优先检查 DNS 请求日志、局域网 DNS 地址和域名分流。
- 再看 TUN 与路由:如果关闭 sing-box 时正常、开启后 IP 失败,检查 TUN 是否接管流量,以及局域网地址是否被错误送入代理出站。只有当前客户端明确提供相应选项时,才按当前页面或 sing-box 文档设置;没有该选项就跳过。
- 最后看连接日志:区分权限拒绝、DNS 解析失败、连接超时、连接被拒绝和上游节点错误。客户端显示节点在线、端口正在监听,都不能单独证明局域网请求成功。
| 测试结果 | 排查方向 | 下一动作 |
|---|---|---|
| 关闭 sing-box 正常,开启后局域网 IP 失败 | 权限、TUN 或局域网路由 | 重新从主界面授权,再检查 TUN 和路由 |
| IP 成功,内网域名失败 | DNS、mDNS 或域名规则 | 查看 DNS 日志,比较局域网 DNS 与当前配置 |
| 外网和局域网都失败 | 服务状态、配置、系统代理或上游连接 | 先确认服务已启动,再查看第一条错误日志 |
| 手机本机正常,其他设备不通 | 热点、VPN 共享或转发 | 单独检查共享链路,不要继续修改本机权限 |
对照测试时,可以暂时暂停其他代理、过滤器或 VPN,测试完成后恢复原设置。不要关闭 TLS 校验,也不要把订阅链接、令牌或密码粘贴到第三方排查工具。
第三步:区分本机访问与 VPN 热点共享
“sing-box 自己访问局域网设备”和“让其他设备通过 Android 手机访问局域网”不是同一个问题。前者主要涉及本地网络权限、TUN、路由和 DNS;后者还会增加热点转发、VPN 共享、地址转换和客户端实现等因素。
如果你的目标只是让手机访问路由器、NAS 或家庭内网,不必先排查 Neighbor Resolution、ROOT 或 VPNHotspot。sing-box 文档把 Android 的 Neighbor Resolution 列为独立能力:只支持图形客户端,需要 Android 11 或更高版本和 ROOT,并且需要使用 VPNHotspot;系统自带的 VPN 共享方式不能提供 MAC 地址或主机名信息,TUN include/exclude 路由也不支持该场景。sing-box.sagernet.org
如果确认是共享问题,分别记录:其他设备是否获得正确网关、其他设备是否能访问手机本机地址、sing-box 日志是否出现对应请求。缺少这些信息时,不要把“手机本机能访问”当作“热点共享已经正常”。
高级验证:已配置 ADB 的用户再使用
普通用户可以跳过本节。若电脑已配置 ADB,并且你知道实际安装包名,可以查询权限状态。示例中的包名必须替换成设备上的实际包名:
- macOS、Linux 或支持
grep的终端:adb shell dumpsys package <实际包名> | grep ACCESS_LOCAL_NETWORK - Windows PowerShell:
adb shell dumpsys package <实际包名> | Select-String ACCESS_LOCAL_NETWORK - Windows 命令提示符:
adb shell dumpsys package <实际包名> | findstr ACCESS_LOCAL_NETWORK
Issue #4676 的复现记录使用了 io.nekohasekai.sfa 作为示例包名,并记录了权限状态变化;这不代表所有 sing-box Android 封装客户端都使用该包名。ADB 输出只能帮助确认授权状态,仍需用固定局域网 IP 和域名做实际验证。github.com
当前 sing-box-for-android 开发分支的清单页面包含 ACCESS_LOCAL_NETWORK 声明,但清单中存在该权限不等于用户已完成运行时授权,也不等于你安装的正式版本具有相同的请求流程。github.com
5 项最小排查清单
- 确认故障是否只在 Android 17 或系统升级后出现。
- 从 sing-box 主界面停止并手动启动服务,观察并完成本地网络相关授权。
- 记录应用信息页、客户端“关于”页面和发布说明中的实际版本号。
- 使用同一个局域网 IP 重复测试,再单独测试内网域名。
- 只有权限和 IP 测试完成后,才继续检查 TUN、路由、DNS、其他代理和热点共享。
如果手动启动、权限状态、局域网 IP 和日志都正常,但访问仍失败,问题还可能涉及 ROM 网络策略、路由器隔离、局域网设备防火墙或客户端版本差异。此时应保留测试地址、启动方式、版本号和日志中的关键错误,不要继续盲目修改 DNS 或关闭安全防护。
常见问题
Android 17 上 sing-box 一定需要 ACCESS_LOCAL_NETWORK 吗?
不能只看手机系统版本下结论。Android 官方说明,Android 17 的强制本地网络保护针对目标 SDK 37 或更高的应用;具体安装包是否声明、是否请求以及是否已授权,需要结合客户端版本、系统提示和实际测试核对。
系统设置里找不到本地网络权限怎么办?
先从 sing-box 主界面停止并手动启动服务,观察是否重新触发运行时请求。也可以尝试“设置→应用→实际客户端→权限或应用权限”,但不同厂商系统的入口和名称可能不同;看不到对应条目时,不要强行寻找固定名称,应核对客户端说明。
为什么手动打开 sing-box 能用,开机自启却不能用?
启动路径可能不同。sing-box 社区 Issue #4676 记录了 Android 17 上服务从开机自启、快捷设置磁贴或 Always-on VPN 启动时未经过 MainActivity 权限请求流程的场景。截至 2026 年 11 月 1 日,该页面显示为 Open;是否适用于你的客户端,需要结合实际版本和日志判断。
局域网 IP 能访问,但内网域名不能访问,是权限问题吗?
不一定。这个结果更适合优先检查 DNS、mDNS、局域网 DNS 地址和域名分流。保留同一个 IP 与域名分别测试,再查看 DNS 日志,不要因为域名失败就直接修改 TUN 或关闭安全校验。
sing-box 自己能访问局域网,为什么热点共享设备还是不能访问?
本机访问和 VPN 热点共享是两条链路。本机主要涉及权限、TUN、路由和 DNS;共享还涉及热点转发、VPN 共享和客户端实现。应单独检查其他设备的网关、手机本机访问和 sing-box 日志。