修复 iPad DNS 代理循环问题 | AI生成和翻译

Home 2026.03

问题: 根据详细的调试日志,iPad 连接失败的确切根本原因是什麼,以及如何修复?

答案:

根本原因:已确认 — Hysteria2 Proxy Server DNS Loop

日志精确揭示了问题。这里是确切的失败链:

iPad → Clash TUN → tries to connect to Hysteria2 server
  → Clash DNS resolves Hysteria2 domain → returns 198.18.0.28 (FAKE IP!)
  → Clash tries to route 198.18.0.28 → TUN intercepts it again
  → sends BACK to Clash → infinite loop → connection hangs/fails

这是一个经典的 “chicken-and-egg” DNS 问题 在 fake-IP 模式下:Clash 需要联系代理服务器来转发流量,但其自身的 DNS 为代理服务器的域名返回 fake-IP,导致 Clash 试图将连接代理到它自己的代理服务器 — 无限循环。


修复方法:三部分

修复 1 — proxy-server-nameserver (最重要的)

这是 Clash Meta/Mihomo 的正确解决方案。为代理服务器域名添加专用的 DNS 解析器,绕过 fake-IP:

dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16

  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29

  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

  # ↓↓↓ 这是关键修复 ↓↓↓
  # 使用真实 DNS(非 fake-IP)来解析您的代理服务器主机名
  proxy-server-nameserver:
    - https://doh.pub/dns-query
    - 223.5.5.5

proxy-server-nameserver 告诉 Clash:“使用这些 DNS 服务器解析代理节点主机名,并返回它们的 真实 IP,而非 fake IP。” 这打破了循环。


修复 2 — 将 Hysteria2 服务器域名添加到 fake-ip-filter

作为双重保障,还显式地将您的 Hysteria2 服务器域名从 fake-IP 中排除:

dns:
  fake-ip-filter:
    - '*.lan'
    - 'localhost.ptlogin2.qq.com'
    - 'your-hysteria2-server.example.com'   # ← 在此处添加您的实际服务器域名

这强制 Clash 即使在 fake-IP 模式下,也为您的代理服务器域名返回 真实 IP


修复 3 — 为 Hysteria2 服务器的真实 IP 添加 DIRECT 规则

一旦您知道 Hysteria2 服务器的真实 IP(使用 dig your-hysteria2-domain @223.5.5.5 获取),在 MATCH 规则 之前 添加为 DIRECT 规则:

rules:
  - IP-CIDR,192.168.201.0/24,DIRECT
  - IP-CIDR,192.168.1.0/24,DIRECT
  - IP-CIDR,<YOUR_HYSTERIA2_SERVER_REAL_IP>/32,DIRECT  # ← 添加此规则
  # ... 其他规则 ...
  - MATCH,Hysteria2

这确保即使 DNS 某种情况下返回真实 IP,前往代理服务器的流量也会走 DIRECT(而非通过自身循环)。


如何应用修复

# 1. 编辑您的 Clash 配置
sudo nano /etc/clash/config.yaml
# (或您的配置所在位置 — 使用以下命令检查:ps aux | grep clash)

# 2. 如上所示添加 proxy-server-nameserver 和 fake-ip-filter

# 3. 重启 Clash
sudo systemctl restart clash
# 或
pkill clash && clash -d /etc/clash &

# 4. 验证代理服务器现在解析为真实 IP(非 198.18.x.x)
dig your-hysteria2-domain @192.168.201.1
# ✅ 现在应返回真实的公网 IP,而非 198.18.x.x

# 5. 从笔记本测试
curl https://api.ipify.org
# 应返回您的代理出口 IP

总结诊断表

观察到的症状 含义
iPad 流量到达 TUN(Meta 上 tcpdump 已确认) ✅ TUN 拦截正常
Clash 日志中仅 UDP,TCP 被静默丢弃 ✅ Clash 接收 TCP 但无法建立上游连接
Hysteria2 解析为 198.18.0.28 根本原因 — 代理服务器获得 fake-IP
来自笔记本的代理测试也超时 ✅ 确认是 Clash 级别的上游问题,而非路由问题
直接绕过 NAT 也失败 因为 Clash 通过 TUN 拦截所有流量,包括绕过尝试

proxy-server-nameserver 修复是针对此场景的标准方法,并在 Clash Meta/Mihomo 中有文档记录,专门解决“代理服务器域名获得 fake-IP”的问题。


Back Donate