ClashX.Meta icon indicating copy to clipboard operation
ClashX.Meta copied to clipboard

[Bug] 获取系统DNS错误,导致dns回环

Open coderbean opened this issue 1 year ago • 1 comments

感谢你向 ClashX 提交 issue! 在提交之前,请确认:

  • [x] 我已经在 Issue Tracker 中找过我要提出的问题
  • [x] 这是 ClashX UI层面的问题,并非 Clash Core 的问题(例如xx软件连不上,无法连接特定服务器等)。其他 Clash 衍生版本没有次问题。
  • [x] 如果你可以自己 debug 并解决的话,提交 PR 吧!

请注意,如果你并没有遵照这个 issue template 填写内容,我们将直接关闭这个 issue。

我都确认过了,我要继续提交。


请附上任何可以帮助我们解决这个问题的信息,如果我们收到的信息不足,我们将对这个 issue 加上 Needs more information 标记并在收到更多资讯之前关闭 issue。

clashX config

  # 配置查询域名使用的 DNS 服务器
  nameserver-policy:
    #   'www.baidu.com': '114.114.114.114'
    #   '+.internal.crop.com': '10.0.0.1'
    # "geosite:cn,private":
    #   - tls://doh.pub:853
    #   - tls://dns.alidns.com:853
    "geosite:cn": 
      - "system"

ClashX log

……

ClashX Crash log

……

环境 Environment

……

  • 使用者的操作系统 (the OS running on the client) ……
  • 网路环境或拓扑 (network conditions/topology) ……
  • ISP 有没有进行 DNS 污染 (is your ISP performing DNS pollution?) ……
  • 其他 ……

说明 Description

重现问题的具体布骤 Steps to Reproduce

  1. [First Step]
  2. [Second Step]
  3. ……

我预期会发生……?

预期会使用系统的DNS作为 geosite中cn的dns服务器

实际上发生了什麽?

在开启了tun模式的情况下,只有退出软件第一次打开的时候可以正常运行,如果重载配置文件指定系统dns会失效,无法解析出在 nameserver-policy:中配置的system dns

可能的解决方案 Possible Solution

我怀疑是tun模式修改了系统的dns,然后重载配置文件的时候读取的是修改之后的dns,造成环路。只有第一次启动的时候读取的是网络分配的dns,所以可以正常运行。 解决方案:

  1. 在重载配置文件的时候,先将tun模式关闭,恢复系统dns,等到内核读取到系统的dns之后,再次按照配置文件的配置开启tun模式
  2. 读取系统dns的方式改一下(这里可能涉及到内核的变更)

更多信息 More Information

coderbean avatar Aug 01 '23 02:08 coderbean

+1 这也许就是macos重启以后,meta自启失去代理功能的原因了

lifeva avatar Sep 13 '23 04:09 lifeva