Mihomo redir-host vs fake-ip
Mihomo/Clash 的 redir-host 模式先解析出真实 IP 再连接;fake-ip 模式先返回保留段虚拟地址,连接时再恢复域名交远端按域名路由,从而不必先用错误 A 记录定目标。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 解析位置: SOCKS5 本地 vs 远程解析
- 代理分离: 代理只改出口不改解析决策
- 解析策略: DNS Bootstrap 鸡蛋问题
- 实战: 解析到错误 IP 导致 TLS 握手失败
- 配置笔记: Mihomo 配置与使用
Mihomo redir-host vs fake-ip
一句话定义
Mihomo/Clash 有两条核心 DNS 处理思路:redir-host 先解析出真实 IP 再建连;fake-ip 先返回保留段虚拟地址,待应用连接该地址时再恢复原始域名、按域名规则选择出口并把域名交给远端解析。
核心机制 / 工作原理
redir-host(先拿真实 IP)
域名
↓ Mihomo DNS 解析
真实 IP(如 104.17.x.x)
↓ 路由和连接
若内部 DNS 返回了错误/不可用 IP,代理仍会连接这个地址——问题在解析阶段已定(见 proxy-and-dns-separation)。
fake-ip(先拿虚拟地址,后恢复域名)
anyrouter.top
↓ Mihomo 返回保留段虚拟地址 198.18.x.x
应用连接 198.18.x.x
↓ Mihomo 恢复原始域名
按域名规则选出口(如 Oracle1)
↓ 把域名交给远端代理节点解析
重要优势:不必先获得真实目标 IP,就能按域名完成代理路由,并把域名继续交给远端节点。
解析控制项
Mihomo 文档区分 fake-ip 与 redir-host,并提供:
nameserver-policy:为特定域名指定解析器proxy-server-nameserver:代理服务器用的解析器direct-nameserver:直连域名用的解析器respect-rules:是否让 DNS 结果也受路由规则影响
最小例子 / 最小场景
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.x.x/16
rules:
- DOMAIN-SUFFIX,anyrouter.top,PROXY
配合高优先级域名规则,浏览器拿到 fake IP → Mihomo 恢复域名 → 按规则走 Oracle1 → 域名交远端解析,绕开本地错误 A 记录。
边界与易混淆点
- fake-ip 不解「解析本身」,它解「解析决策位置」:把域名保留到连接时才定,从而让远端/规则参与(见 proxy-and-dns-separation)。
- TUN 模式可劫持发往 53 的 DNS 请求送入 Mihomo 内部 DNS,避免程序绕过;但 DoH、Android Private DNS、硬编码 DoH 等仍能绕过(见 browser-secure-dns、dns-filtering-hijacking-pollution)。
strict-route在 Windows 上可通过防火墙规则减少多网卡 DNS 泄漏。nameserver-policy让某域名走特定 DoH(可带#PROXY表示经某代理出口),但答案仍取决于该 DoH 递归从权威拿到的内容,不等同「直接用 Oracle 系统 DNS」(见 dns-bootstrap-problem)。- 验证:看 Mihomo 连接日志的目标 IP 是
104.17.x.x还是155.102.x.x,即可判断是否在连接前采用了本地 DNS 结果(见 dns-wrong-ip-tls-handshake-failure-debug)。