访问路由器管理页之前,应先核对浏览器将要连接的目标究竟是不是当前网关的私网地址,以及该地址在 Tun 自动路由下会不会被当成需要进虚接口的流量。Clash(mihomo)的 Tun 文档把 192.168.0.0/16 放在 route-exclude-address 示例中,说明这类目的按网段识别,而不是按互联网站点识别。核对目标地址,是为了避免把收藏夹里的主机名、错误网段,或解析结果被改写后的主机,误当成已经可以直连的网关。
适用条件
本核对适用于:本机已启用 Tun(tun.enable 为 true),并且准备用浏览器打开网关的 Web 管理地址。若同时启用了 auto-route,全局流量会被自动导入 Tun 网卡,此时更必须先确认管理页对应的目的 IP,以及它是否落在排除网段中。未启用 auto-route 时,自动全局路由不存在,route-exclude-address 也不会按“从自动路由中排除”那套逻辑工作;此时仍应核对目标是不是路由器,但不要用排除列表解释通断。Linux 下若还配置了 auto-redirect,文档指出在路由器上可按预期重定向 TCP;核对的对象仍是“目的地址是谁”,不能假定重定向会改写网关地址。
把名称、地址族和路由集合对上号
第一步,在操作系统网络信息里确认默认网关 IP,而不是只看地址栏里的名称。IPv4 网关常见落在 192.168.0.0/16,也可能是文档示例并未写出的其他私网前缀。判断依据是:把即将访问的管理地址写成单一 IP,再看它是否被当前 route-exclude-address(或旧字段 inet4-route-exclude-address、inet6-route-exclude-address)覆盖。落在已声明前缀内,才具备“按局域网例外处理”的配置依据;仅有主机名而没有 IP,核对尚未完成。
第二步,把主机名和目的 IP 分开。若地址栏使用内网域名,实际目的取决于解析。dns-hijack 会把匹配到的连接导入内部 DNS 模块,不书写协议时按 UDP 理解。文档写明:在 MacOS / Windows 无法自动劫持发往局域网的 DNS 请求;在 Android 如开启私人 DNS 则无法自动劫持。判断依据:管理页若依赖局域网 DNS,在上述条件下不能假设名称已经指向网关。核对阶段应直接使用网关 IP,避免名称解析指向其他主机。
第三步,看该 IP 是否被 route-address 或 route-address-set 划进“要进 Tun 的集合”。route-address 在启用 auto-route 时路由自定义网段而不是默认路由,示例为 0.0.0.0/1、128.0.0.0/1 以及 ::/1、8000::/1。自定义集合包含网关所在前缀、排除列表又未覆盖该前缀时,该管理地址在路由意义上仍可能进入 Tun。Linux 的 route-address-set 把规则集中的目标 CIDR 加入防火墙,不匹配的流量绕过路由,且需要 nftables 以及 auto-route、auto-redirect,并与 routing-mark 冲突。核对目标时,只有明确落在排除一侧的前缀,才能视为按文档绕过自动路由。
第四步,IPv6 管理地址单独核对。inet6-address 为 Tun 指定 IPv6 地址;启动时会检查系统其他网卡是否有 IPv6,不存在则可能禁用。顶层 ipv6 需为 true,跳过检查需 SKIP_SYSTEM_IPV6_CHECK=1。浏览器若走 IPv6 访问网关,而 Tun 的 v6 被关掉,或排除前缀只有 fc00::/7 且网关不在该范围,结论就是:当前配置未按局域网例外处理该 v6 地址。
核对得不到唯一目标时的下一步
若系统里得不到唯一网关 IP,先停在网络信息核对,不要用公网域名代替管理地址。若 IP 明确但不在排除 CIDR 内,应把缺的前缀视为尚未纳入例外,而不是去改 stack、mtu、gso 或拥塞控制这类与目标选择无关的项。名称能通而 IP 不通、或相反时,优先按 DNS 路径解释:结合局域网 DNS 在部分系统上无法被自动劫持的说明,改用 IP 完成核对。Linux 上若使用 include-mac-address 或 exclude-mac-address,还须确认发起访问的设备 MAC 是否被纳入或排除,避免把“设备未进入 Tun 转发范围”误判成“目标地址写错”。