V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
journalist
V2EX  ›  DNS

关于 Clash DNS 的几个问题

  •  
  •   journalist · 281 天前 · 7795 次点击
    这是一个创建于 281 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我希望 Clash:

    1. 遇到需要代理的域名,使用代理服务器请求 DNS 。
    2. 遇到直连的域名,使用系统默认或者某个指定的服务器。
    3. 遇到基于 IP 的规则,使用系统默认或者某个指定的服务器。

    我不需要靠 Clash 应对 DNS 污染,能不能直接关闭内置的 DNS ?

    dns:
    	enable: false
    

    另外,在使用 TUN 模式时,是否必须开启 DNS ,为什么?

    TUN 模式的参数 dns-hijack 通常被设置为 any:53,作用是什么?

    20 条回复    2023-08-27 06:19:25 +08:00
    mohumohu
        1
    mohumohu  
       281 天前
    你这需求单独跑一个 DNS 服务更直接清晰,clash 的 DNS 并没有太多自定义的选项。
    Rookie01
        2
    Rookie01  
       281 天前   ❤️ 1
    借楼同问,有没有什么办法让 Hosts 文件的优先级拉到最高,而不让 Clash 等代理工具覆盖 DNS ?
    我有几个域名需要修改 Hosts ,总是被覆盖,或者有没有类似的工具之类的……
    journalist
        3
    journalist  
    OP
       281 天前 via iPhone
    @mohumohu 你说的很对,我就是用了 mosdns 才问这个问题
    missdeer
        4
    missdeer  
       281 天前 via Android
    Kanye
        5
    Kanye  
       281 天前
    无论怎样都要解析一次才能判断这个域名是否需要代理
    journalist
        6
    journalist  
    OP
       281 天前
    @Kanye 基于域名的规则不用请求两次啊 https://blog.skk.moe/post/what-happend-to-dns-in-proxy/
    Kanye
        7
    Kanye  
       281 天前
    @journalist 对如果直接把域名写进规则里面,是由代理服务器解析和访问的,所以问题不存在
    y1y1
        8
    y1y1  
       281 天前
    @journalist 那不就好办了,把走 clash 的分流规则再加到 clash 的规则里面?
    SenLief
        9
    SenLief  
       281 天前
    clash.meta 内核支持 geosite 域名分流 dns ,可以实现这个功能。
    dode
        10
    dode  
       281 天前
    套两个 clash 可以吗
    journalist
        11
    journalist  
    OP
       281 天前
    @SenLief 我不想要分流,我用的规则里面没有 IPCIDR ,只有域名。https://www.v2ex.com/t/879229 Clash 默认就是远程解析代理域名的。我想搞明白的是,我开内置 DNS ,把 nameserver 设置为本地 DNS ,和直接把内置 DNS 关了有什么区别。
    mritd
        12
    mritd  
       280 天前 via iPhone
    zbatman
        13
    zbatman  
       280 天前   ❤️ 2
    rmdbbs
        14
    rmdbbs  
       280 天前   ❤️ 1
    遇到需要代理的域名,使用代理服务器请求 DNS 。
    ---这个核心是要避免本地 DNS 解析,启用 dns 配置里的 fakeip 参数,或者路由规则对所有 ip 类规则加入 no-resolve 参数

    遇到直连的域名,使用系统默认或者某个指定的服务器。
    ---这个使用 meta 的 DNS 某些配置选项可以实现,看下面的例子

    遇到基于 IP 的规则,使用系统默认或者某个指定的服务器。
    ---这个使用 meta 的 DNS 某些配置选项可以实现,看下面的例子

    我不需要靠 Clash 应对 DNS 污染,能不能直接关闭内置的 DNS ?
    ---关闭 Clash 的 DNS ,上述需求应该就没法实现了,关闭后,所有的请求都走 system 的 dns ,且无法配置策略


    clash.meta 的配置例子,供参考:

    dns:
    enable: true
    listen: 0.0.0.0:53
    default-nameserver:
    - 223.5.5.5
    nameserver:
    - tls://8.8.4.4
    - tls://1.1.1.1
    nameserver-policy:
    "geosite:cn,private":
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

    看你说的你的规则里没有 IPCIDR ,只有域名,那就意味着,只有两种情况
    1 ,交给代理的域名,默认都会去代理上进行 dns 解析,这个不需要设置
    2 ,直连的域名,由你的配置文件决定,配置文件设置的 dns 策略,那就由规则决定(如上例子),如果开启 dns 开关,那就交给系统

    上面的设置之后,在处理你那些要直连的域名的时候就会进入这个逻辑:
    1 ,看看域名是不是 cn 或者 private 的,如果是,交给 dns.alidns.com 和 doh.pub 解析;
    2 ,如果不是,那么交给 tls://8.8.4.4 和 tls://1.1.1.1 解析
    3 ,解析好了后,用得到的 ip 直连出去。
    结束

    简单将就是你关了内置 DNS 开关,所有的请求都到了 system 的 dns ,就做不到“按需解析” ,
    rmdbbs
        15
    rmdbbs  
       280 天前
    @rmdbbs 写错了一句话“如果开启 dns 开关,那就交给系统”

    应该是 如果没有开启 dns 开关
    journalist
        16
    journalist  
    OP
       280 天前
    @rmdbbs 实际上我说的需求可能说复杂了,所有没有命中代理域名规则的,都走系统默认 DNS 就可以了,不需要 nameserver-policy ,分流已经由自建 DNS 处理好了。https://github.com/Fndroid/clash_for_windows_pkg/wiki/DNS%E6%B1%A1%E6%9F%93%E5%AF%B9Clash%EF%BC%88for-Windows%EF%BC%89%E7%9A%84%E5%BD%B1%E5%93%8D 根据这篇文章,下面这个配置和关闭内置 DNS ,直接设置系统 DNS 没有什么差别。

    dns:
    enable: true
    enhanced-mode: fake-ip
    nameserver:
    - "自建 DNS"
    SenLief
        17
    SenLief  
       280 天前 via iPhone
    @journalist 你的想法错了,你是想 clash 只做代理吧?然后利用 上游 dns 分流。这个是可以的,但是有个问题就是上游 dns 服务器需要代理才能解析 1.1.1.1 这类的 dns 服务,所以又在套娃了。
    journalist
        18
    journalist  
    OP
       280 天前
    @SenLief 这是可以避免的,在另一个实例专门代理这个 DNS 。
    x308989414q
        19
    x308989414q  
       247 天前
    @rmdbbs 你好,想请教一下。
    dns:
    enable: true
    enhanced-mode: fake-ip
    nameserver:
    - https://dns.alidns.com/dns-query
    fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query

    上面的配置 clash tun 模式下,处理那些直连的域名的逻辑是不是如下?
    1 ,dns 并发请求 nameserver 、fallback ,取 nameserver 中返回的最快的 ip ,判断这个 ip 是不是中国的,
    如果是,直连
    2 ,如果不是,那么取 fallback 中最快的 ip ,直连。
    journalist
        20
    journalist  
    OP
       236 天前
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   936 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:17 · PVG 06:17 · LAX 15:17 · JFK 18:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.