Skip to content

fix: 合并 fw4 DNS 劫持幂等修复 - #5229

Closed
eyaeya wants to merge 1 commit into
vernesong:devfrom
eyaeya:codex/consolidate-fw4-dns
Closed

eyaeya wants to merge 1 commit into
vernesong:devfrom
eyaeya:codex/consolidate-fw4-dns

Conversation

@eyaeya

@eyaeya eyaeya commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

变更

合并两个原本拆开的 fw4 DNS 幂等修复:

这两个拆分 PR 会在 luci-app-openclash/root/etc/init.d/openclashtests/fw4_dns_hijack_guard_test.sh 上产生真实合并冲突;合并成一个 PR 后,审核者只需要审查一组完整的 fw4 DNS 幂等语义。

根因

原拆分虽然行为边界清楚,但审核与合并不友好:

  • nat_output DNS 劫持是否存在,不能由 dstnat 状态推断。
  • redirect 模式的 chain 内容需要重建,但 jump 本身需要去重。

验证

  • bash tests/fw4_dns_hijack_guard_test.sh
  • sh -n luci-app-openclash/root/etc/init.d/openclash
  • git diff --check origin/dev...HEAD
  • rg '^(<<<<<<<|=======|>>>>>>>)' luci-app-openclash tests
  • 多轮对抗式复核,最终无修改点

@eyaeya

eyaeya commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

在复核 #5251 和已合入的 #5252 后,我确认这个 PR 不能继续按当前状态保留,先关闭,避免后续解冲突时重新带回已经修掉的问题。

具体原因:

  • 本 PR 基于旧版 dev,目前状态为 CONFLICTING / DIRTY
  • 补丁里的两处 fw4 router-self IPv6 DNS 规则仍是 ip6 daddr {::/0},测试也仍明确断言 ip6 daddr {::/0}。如果解决冲突时保留这侧实现,会重新引入 [Bug] v0.47.133 下公网 IPv6 DNS 被劫持,导致节点域名解析失败 #5251 报告的公网 IPv6 DNS 劫持。
  • 当前 dev 已通过 fix: limit router-self IPv6 DNS hijack to loopback #5252 把 fw4 两处和 legacy 四处统一收窄为 ::1;该修复已有 fw4 实机与 legacy VM 的运行态验证。
  • 本 PR 原计划合并的 openclash_dns_redirect flush 已被后续上游代码覆盖。剩余的 nat_output / redirect jump guard 尚未进入上游,但重新追踪当前调用链后,reload firewall / reload manual 都会先执行 revert_firewall;仓库内唯一的 reload restore 调用也位于 config_download_direct(),其前面先执行了 reload revert。因此旧 PR 所述“正常 restore 重入会累积规则”缺少可复现的受支持路径,目前也没有独立的用户故障 Issue 或 live router 证据,不适合借 [Bug] v0.47.133 下公网 IPv6 DNS 被劫持,导致节点域名解析失败 #5251 扩大范围继续提交。

因此这里不更新旧分支,也不把它标记为可合并。若后续出现对应的真实重复规则或缺规则反馈,我会从当时最新的 dev 新建 PR,关联实际 Issue 和本 PR,并明确保留 #5252::1 loopback-only 边界。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant