fakeip-compat:适配 Fake-IP DNS 环境的 Web Fetch 提供者

前言

在使用 TUN 模式(如 Mihomo 或 Clash)的 DSH 环境中,系统 DNS 解析器通常返回 Fake-IP 地址(例如 198.18.0.11),而非真实 IP。原生的 http fetch 提供者默认会拦截这些请求,因为它们不属于公共地址范围,导致本应生效的流量被阻断。fakeip-compat 是一个 Fake-IP 感知的 Web Fetch 提供者,它允许流量在 TUN Fake-IP 环境下传输,并支持访问被 Pin 的局域网 CIDR。

核心功能

该插件提供以下能力:
* Fake-IP 感知的 Web Fetch 提供者。
* 支持 TUN (Mihomo/Clash) DNS 环境。
* 支持对特定局域网 CIDR 的访问。
* 使用 DoH(DNS over HTTPS)进行验证。
* 集成设置界面,支持配置修改。

安装与启用

插件通过 DSH 插件注册机制安装,无需构建步骤。

安装

执行以下命令将插件添加到指定配置文件:

dsh plugin --profile web add github:iwinoid/fakeip-compat

运行时依赖

安装后需确保以下依赖可用:
* DSH Peers: @deepseek-ai/dsh-web, @deepseek-ai/dsh-timeout
* 运行时库: @deepseek-ai/schemastery, ipaddr.js, undici

启用方式

该插件不会自动选择自己,必须显式指定。在配置文件中设置 fetchProvider 为 fakeip-http。同时需要保留原有的 searchProvider 配置。

- id: web
  name: '@deepseek-ai/dsh-web'
  config:
    searchProvider: tavily      # 保持原有的搜索提供者
    fetchProvider: fakeip-http  # 切换为 fakeip-http

也可以通过环境变量指定:

DSH_WEB_FETCH_PROVIDER=fakeip-http

启用后,可通过以下命令验证配置:

dsh --profile <name> --dump-config | grep -A8 fakeip

配置说明

插件注册了 fakeip-compat 配置节,主要参数如下:

参数名 默认值 说明
lanCidr 192.168.0.0/16 局域网允许列表。系统解析结果在此范围内时,使用 Pin IP 传输。
fakeV4Cidr / fakeV6Cidr 198.18.0.0/16 / fdfe:dcba:9876::/48 本地 Fake-IP 池。需与 Clash Verge 配置中的 Fake-IP 范围保持一致。
dohEndpoints 1.1.1.1/dns-query, 8.8.8.8/resolve 受信任的 DoH (JSON API) 端点。通过直接 IP 字面量连接,第一个完全成功的端点生效。
dohTimeoutMs 8000 DoH 查询的超时时间。
lanInsecure false 仅在局域网路径上跳过 TLS 检查。用于自签名设备的场景。
maxResponseBytes / maxBodyChars / timeoutMs / maxRedirects / userAgent 5000000 / 100000 / 30000 / 5 / 官方 UA 同官方提供者的含义。

设置界面

插件注册了一个名为 fakeip-compat 的设置卡片(位于 Settings → Plugins → Plugin configuration)。
* 功能: 浏览器端的手写 UI,无构建步骤。
* 生效: 修改配置后立即生效,无需重启 DSH。
* 容错: 无效输入(如错误的 CIDR)会阻止保存;运行时修改错误会保留上次有效值,不影响正在进行的 Fetch 请求。

API 行为

Provider ID 为 fakeip-http。该插件主要处理两种路径,其余路径遵循原生 http 提供者的拒绝逻辑:

  1. TUN Fake-IP 路径: 当系统解析返回 Fake-IP 时,插件通过 DoH 重新验证域名,然后将传输 Pin 到 DoH 验证后的真实 IP 地址集合。
  2. LAN 路径: 系统解析结果在 lanCidr 范围内时,直接使用 Pin IP 传输,默认保留 TLS 检查。

注意事项

  • 手动选择: 插件仅注册提供者,不会自动选择。必须通过 Profile YAML 或环境变量显式指定。
  • 依赖检查: 安装前需确认 DSH Peers 和运行时依赖已就绪。
  • 无构建: 该包无构建步骤,安装后即可运行。
  • 配置完整性: 修改配置文件时,必须同时保留 searchProvider 配置,因为配置替换是全行进行的。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜