redir-host是什么意思?
一句话结论
内核先向上游解析出真实 IP,再按“地址对应域名”的记录还原请求的 DNS 处理方式。
与 Fake-IP 相对,程序拿到的是真实地址,行为更接近没有代理时的样子,兼容性问题较少;代价是解析结果依赖上游,上游给错了答案,分流判断也会跟着错。
redir-host 这个名字来自 Clash 系配置里 DNS 的另一种增强模式。它的思路很朴素:该查就查,查到真实 IP 再用。内核把查到的地址与域名配成一对存起来,程序随后连到这个地址时,内核反查出它是冲着哪个域名来的,再套用规则。
它和 Fake-IP 的分工
两者回答的是同一个问题:域名变成地址这一步,由谁、在什么时候做。
- Fake-IP 先给假地址,把解析推到出口端。
- redir-host 先在本机拿真实地址,再靠记录还原域名。
所以程序看到的东西不同:前者是虚拟地址,后者是真实地址。后者对程序更“透明”,前者对上游解析结果更不敏感。对照表和选择思路见 Clash DNS 设置详解,另一端的词条见 Fake-IP。
在哪里会看到它
- 配置 dns 段里 enhanced-mode 的取值之一。
- 各客户端“DNS 增强模式”之类的下拉选项里。
- 讨论 TUN 开启后程序异常、解析结果不一致的文章与社区贴里。
不同内核对这个取值的支持情况和默认行为并不相同,是否还推荐使用,请翻内核文档确认,梯子岛这里不替它下结论。
常见误解
- 以为真实地址就等于没有泄露。 查询是在本机完成的,运营商的解析器会看到你查了什么,泄露与否要看上游设在哪里,检查办法见 DNS 泄露。
- 以为同一个地址只对应一个域名。 共用地址的网站很多,反查记录有时只记得最近一个,个别站点会被误判。
- 以为它一定更慢。 多出的是一次本地解析等待,快慢取决于上游,梯子岛没有这方面的测量数据。
怎么判断自己用的是哪一种
打开配置文件,在 dns 段找 enhanced-mode 一行;客户端若只给图形开关,就去它的 DNS 设置页看选项名。读不懂配置结构时,先看 Clash 配置文件怎么看。