前言¶
在使用 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 提供者的拒绝逻辑:
- TUN Fake-IP 路径: 当系统解析返回 Fake-IP 时,插件通过 DoH 重新验证域名,然后将传输 Pin 到 DoH 验证后的真实 IP 地址集合。
- LAN 路径: 系统解析结果在
lanCidr范围内时,直接使用 Pin IP 传输,默认保留 TLS 检查。
注意事项¶
- 手动选择: 插件仅注册提供者,不会自动选择。必须通过 Profile YAML 或环境变量显式指定。
- 依赖检查: 安装前需确认 DSH Peers 和运行时依赖已就绪。
- 无构建: 该包无构建步骤,安装后即可运行。
- 配置完整性: 修改配置文件时,必须同时保留
searchProvider配置,因为配置替换是全行进行的。