在 clash 中,是否有办法强制让指定域名走远端 dns 解析? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vocaloidchina
V2EX    宽带症候群

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

  •  
  •   vocaloidchina 2022-09-11 09:12:19 +08:00 14997 次点击
    这是一个创建于 1178 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    19 条回复    2023-03-01 12:39:25 +08:00
    yanyumihuang
        1
    yanyumihuang  
       2022-09-11 10:23:48 +08:00 via Android   1
    使用 fakeIP 模式并且把你的 IP 规则放到域名后面
    paradoxs
        2
    paradoxs  
       2022-09-11 10:29:50 +08:00
    surge 默认开启了 force-remote-dns ,不用加。
    yov123456
        3
    yov123456  
       2022-09-11 10:31:30 +08:00 via iPhone
    clash 实际坐请求的时候都是 force-remote-proxy 的 本地请求的 ip 只用来匹配 ip 规则。
    dcty
        4
    dcty  
       2022-09-11 10:39:45 +08:00   2
    换 meta 内核
    WoadZS
        5
    WoadZS  
       2022-09-11 12:56:42 +08:00   5
    我研究过这个问题。
    如果是 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 进行解析和访问。
    JsonNode
        6
    JsonNode  
       2022-09-11 14:25:29 +08:00
    nameserver-policy
    connorzone
      &nbp; 7
    connorzone  
       2022-09-11 14:38:12 +08:00
    clash 的 dns 只是用于匹配规则,实际的代理是通过 fqdn 到远程服务器再重新解析的。如果觉得 dns 慢,不妨在上游套一个 mosdns 或 adguardhome ,开启 lazy cache 或乐观缓存。
    pH
        8
    pH  
       2022-09-13 10:54:43 +08:00
    @lovedoing 正解呀 = =
    fvladlpa
        9
    fvladlpa  
       2022-09-13 21:14:27 +08:00
    DOMAIN, example.com,your_proxy_name
    hive
        10
    hive  
       2022-10-13 19:39:41 +08:00
    @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  
       2022-10-13 21:01:44 +08:00
    @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'
    hive
        12
    hive  
       2022-10-17 10:34:33 +08:00
    @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  
       2022-10-17 13:48:05 +08:00   1
    @lbyo 我的理解应该是先看 GEOSITE ,如果是!CN (即 CN )域名,就直接向 fallback DNS 发起查询,拿到解析判断是否最终要走代理,这次查询在 Meta 下面支持走代理。这个判断是优先于 GEOIP 的,如果根据这次判断发现确实要走代理,就把域名发到远端在 VPS 上进行最终解析和访问。

    所以理论上,访问 geosite 非 CN 的域名,从本地只会向 fallback DNS 发起一个通过代理的查询进行规则判断,最后的正式访问还是远端解析。所以从本地 ISP 和境内 DNS 服务商来说,他们都没有收到过由你发出的非 CN 域名的解析请求,因此避免了 DNS 泄露。
    gcphym
        14
    gcphym  
       2022-12-12 22:41:50 +08:00
    @WoadZS 你好,请问一下,按照你这样配置,访问 cn 类的域名时,比如 baidu.com ,会是 nameserver 和 fallback 里的 DNS 进行并发请求? nameserver 和 fallback 都得到结果后再进行 ip 判断?
    WoadZS
        15
    WoadZS  
       2022-12-13 15:03:58 +08:00
    @gcphym 我的理解是,如果设置了 geosite: cn ,那么像 baidu.com 这样的 cn 网站,也会同时向 nameserver 和 fallback 的 DNS 进行请求,但最终并不会采用 fallback 返回的值。而并不是会像你说的一样再进行 IP 判断。
    gcphym
        16
    gcphym  
       2022-12-16 10:16:53 +08:00 via Android
    @WoadZS 了解了。那么,访问 baidu.com 的时候,nameserver 中的服务器只需要几 ms 就能返回结果,但由于是同时请求,所以还是要等 fallback 返回结果后,再采用 nameserver 返回的 ip ?是这么理解吗? fallback 里面都是国外的服务器,可能需要几十甚至上百 ms
    WoadZS
        17
    WoadZS  
       2022-12-16 18:02:20 +08:00
    @gcphym 不会等 fallback 的结果返回,你可以通过 Chrome 开发者工具观察境内外网站首次访问时的 DNS 消耗时间,理论上需要代理的网站 DNS 查询耗时都会显著长于境内直连网站。
    WoadZS
        18
    WoadZS  
       2022-12-16 18:04:26 +08:00
    @gcphym 境内常用网站的域名的 DNS 查询耗时基本上都不会超过 10ms ,如果你配置得当的话。个别节点数量少的公共 DNS 可能会到几十毫秒。
    Kobayashi
        19
    Kobayashi  
       2023-03-01 12:39:25 +08:00 via Android
    你的理解错了,本地解析是为了分流(如 CN IP 直连),远程依然解析一次。本地解析了说明没有命中域名规则,或者是域名规则前边的 IP 规则没有 no-resolve 提前触发了本地解析。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3122 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 12:34 PVG 20:34 LAX 04:34 JFK 07:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86