V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
测试工具
SmokePing
IPv6 访问测试
vocaloidchina
V2EX  ›  宽带症候群

在 clash 中,是否有办法强制让指定域名走远端 dns 解析?

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

    例如 iOS 的小火箭和 surge 都提供了 force-remote-dns 参数

    但 clash 并没有该参数,如果仅仅指定域名走代理并不能实现远端 dns 解析(抓包还是会在本地进行解析)

    不想用 doh/dot 因为境外的 dns 服务实在太慢

    13 条回复    2022-10-17 13:48:05 +08:00
    yanyumihuang
        1
    yanyumihuang  
       77 天前 via Android
    使用 fakeIP 模式并且把你的 IP 规则放到域名后面
    paradoxs
        2
    paradoxs  
       77 天前
    surge 默认开启了 force-remote-dns ,不用加。
    yov123456
        3
    yov123456  
       77 天前 via iPhone
    clash 实际坐请求的时候都是 force-remote-proxy 的 本地请求的 ip 只用来匹配 ip 规则。
    dcty
        4
    dcty  
       77 天前   ❤️ 2
    换 meta 内核
    WoadZS
        5
    WoadZS  
       77 天前   ❤️ 4
    我研究过这个问题。
    如果是 1.8.0 之后的原版 Clash ,可以像一楼一样使用 fakeip ;
    如果是 Meta 内核的 Clash ,除了 fakeip ,redirhost 可以打开 Sniffer 域名嗅探器来达到这个目的;

    如果想在此基础上尽可能防止 DNS 泄露,可以使用 Meta 内核+fallback-filter 设置 geosite 为!cn ,同时指定 fallback DNS 为走代理的 DNS ,比如这样"tls://1.1.1.1#PROXY"
    如此一来请求逻辑就会是 geosite 为 cn 的域名全部走 nameserver 的设置,不为 cn 的域名通过代理走 tls://1.1.1.1 查询做一次规则判断,确认需要代理就会直接将域名发送到远端服务器,使用远端服务器的 DNS 进行解析和访问。
    lovedoing
        6
    lovedoing  
       76 天前
    nameserver-policy
    connorzone
        7
    connorzone  
       76 天前
    clash 的 dns 只是用于匹配规则,实际的代理是通过 fqdn 到远程服务器再重新解析的。如果觉得 dns 慢,不妨在上游套一个 mosdns 或 adguardhome ,开启 lazy cache 或乐观缓存。
    pH
        8
    pH  
       75 天前
    @lovedoing 正解呀 = =
    fvladlpa
        9
    fvladlpa  
       74 天前
    DOMAIN, example.com,your_proxy_name
    lbyo
        10
    lbyo  
       44 天前
    @WoadZS #5
    > 可以使用 Meta 内核+fallback-filter 设置 geosite 为!cn

    请问是写成这样吗?
    fallback-filter:
    geoip: false
    geosite:
    - !cn
    domain:
    - +.example.com
    ipcidr:
    - 0.0.0.0/32
    WoadZS
        11
    WoadZS  
       44 天前
    @lbyo 供参考,记住仅限 Meta 内核有效

    fallback-filter:
    geoip: true
    geoip-code: CN # 当 nameserver 域名的 IP 查询 geoip 库为 CN 时,不使用 fallback 中的 DNS 查询结果
    #配置强制 fallback ,优先于 IP 判断,具体分类自行查看 geosite 库
    geosite:
    - "!cn"
    ipcidr:
    - 240.0.0.0/4
    domain:
    - '+.google.com'
    - '+.facebook.com'
    - '+.youtube.com'
    - '+.telegram.org'
    lbyo
        12
    lbyo  
       41 天前
    @WoadZS #11 谢谢,我最后写的是这样:

    ```
    fallback-filter:
    geoip: true
    geoip-code: CN
    geosite:
    - "geolocation-!cn"
    ipcidr:
    - 240.0.0.0/4
    domain:
    - "+.google.com"
    - "+.facebook.com"
    - "+.youtube.com"
    ```

    > # 当 nameserver 域名的 IP 查询 geoip 库为 CN 时,不使用 fallback 中的 DNS 查询结果
    > # 配置强制 fallback ,优先于 IP 判断,具体分类自行查看 geosite 库

    我理解的就是:先在 geoip 里找,看是不是为 CN ,如果是就直接走 nameserver 的解析。如果不是,就去 geosite 里找是这样吗?
    WoadZS
        13
    WoadZS  
       40 天前   ❤️ 1
    @lbyo 我的理解应该是先看 GEOSITE ,如果是!CN (即非 CN )域名,就直接向 fallback DNS 发起查询,拿到解析判断是否最终要走代理,这次查询在 Meta 下面支持走代理。这个判断是优先于 GEOIP 的,如果根据这次判断发现确实要走代理,就把域名发到远端在 VPS 上进行最终解析和访问。

    所以理论上,访问 geosite 非 CN 的域名,从本地只会向 fallback DNS 发起一个通过代理的查询进行规则判断,最后的正式访问还是远端解析。所以从本地 ISP 和境内 DNS 服务商来说,他们都没有收到过由你发出的非 CN 域名的解析请求,因此避免了 DNS 泄露。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2846 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:37 · PVG 13:37 · LAX 21:37 · JFK 00:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.