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

关于 openclash DNS 解析的疑问

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

    我没有任何软件及编程基础。我想知道我理解的对不对哈。 假设我用的是 Redir host 兼容模式,启动了本地劫持(dnsmasq )并仅选择了自定义上游 dns 选项,nameserve 假设为 114 加腾讯,fallback 为谷歌,1111,9999

    我有这些疑问 1.当我打开一个域名时,clash 的逻辑是不是先交给 114 和腾讯,查到 ip 后比对规则,然后选择直连或者走通道?

    2.在我打开一个域名时,clash 是给我 114 和腾讯之间更快返回的那个 ip ,还是他俩都查到后比对结果一致再给我 ip?

    3.如果打开一个境外域名,两个解析错误但结果一致,而且是非保留地址或者 0000 之类的,接着是丢给 fallback dns 继续解析还是直接给我打开网站了?

    4.主 dns 和 fallback 的 dns 解析会走通道吗?还是都走本地?还是它会自己选择走本地还是走通道?如果不走通道,那么有些 fallback 的 dns 连接不是会很糟糕或者不稳定?

    57 条回复    2023-08-17 11:18:56 +08:00
    dogfight
        1
    dogfight  
       339 天前   ❤️ 1
    clash 最大问题就是 DNS 。我搞了很久换回 PSW2
    xpn282
        2
    xpn282  
       339 天前   ❤️ 1
    @dogfight
    我和你正好相反,之前用 Passwall ,发现 dns 有问题,同样的节点,在手机的小火箭上能打开 ChatGPT ,但是 Passwall 上就是不行,怎么设置都不行,而且 Passwall 会出现经常打不开 V2EX 的现象,有时候不得已都要开手机小火箭才能上 v2ex……真的是受够了……

    后来换 OpenWrt 用 fake-ip 模式,这些现象都消失了……和手机小火箭一样能驾驭 ChatGPT v2ex……等等
    xpn282
        3
    xpn282  
       339 天前
    op 这些问题我也很想知道,但是估计只有 OpenClash 作者才能更清楚的回答这些问题
    SenLief
        4
    SenLief  
       339 天前 via iPhone
    如果你不用 clash dns 应该关闭 clash 的 dns ,选择 dnsmasq 作为上游 dns 分流,clash 只做规则匹配。简单的来说就是 dnsmasq 区分国内国外,国内匹配直接请求,国外流量给 clash ,clash 不再做 dns 解析,而是直接规则匹配了。
    coorey
        5
    coorey  
       339 天前
    1.nameserver 和 fallback 同时查,如果是国外 IP 信任 fallback
    2.最先返回的 IP
    3.如果是 4 个 0 选择 fallback 结果
    4.本地,clash 会把 ip 还原成域名发送到 VPS
    fatelight
        6
    fatelight  
       339 天前
    用 fake-ip+绕过中国 ip
    Holodusk
        7
    Holodusk  
       338 天前   ❤️ 1
    1. Clash 的 DNS 和代理两个模块是独立的。什么时候用 namerserver 和 fallback 取决于 fallback-filter ,和 rules 无关。对于 TCP 流量,DNS 解析的结果不是实际连接的 IP ,Clash 会传递域名在代理服务器上解析。UDP 流量则用本地解析的结果。
    2. 取最快返回的结果
    3. 同 1 ,取决于 fallback-filter 的 ipcidr
    4. 不走通道,要尽量保证 fallback dns 能连通且无污染。使用 Fake-IP 配合详尽的规则更好对抗 DNS 污染,因为 Fake-IP 模式下,命中域名规则走代理不需要 DNS 解析。

    个人建议:OpenClash 用 Meta 内核。用原版就老老实实用 Fake-IP ,原版 Clash 早就不支持 redir-host 了。
    BABYMETAL
        8
    BABYMETAL  
       338 天前
    1 、只是启动了本地劫持(dnsmasq)的话只是将 dnsmasq 的 dns 转发到 clash 解析,具体解析过程看 nameser 和 fallback 的 dns 和 fallback-filter 的策略。
    2 、返回最快解析的结果
    3 、这种是看 fallback-filter 设置的策略,默认的我记得非 geoip: cn 、个别保留地址和个别网站都用 fallback 组的 dns 解析结果,如果两个组解析的 ip 地址都打不开网站了就不属于目前 clash 的 dns 解析的范畴了,因为之前版本删除了 Redir host ,现在的兼容模式其实也是 fake-ip 模式
    4 、没看懂
    om2mo
        9
    om2mo  
       338 天前
    Clash 的 DNS 部分只是用来判断,并不走远程代理
    om2mo
        10
    om2mo  
       338 天前
    *远程解析
    mohumohu
        11
    mohumohu  
       338 天前
    其实可以把 DNS 部分和 open clash 分离开来,然后 clash 全部跑 fakeip 就好了。
    mohumohu
        12
    mohumohu  
       338 天前
    如果 OP 能跑 docker 的话,这个可以试试: https://hub.docker.com/repository/docker/sliamb/paopaodns
    Kinnice
        13
    Kinnice  
       338 天前   ❤️ 6
    通过你的问题,可以认为你几乎完全没有认知 clash 的 DNS

    1. 当访问一个域名时,会从第一条规则往下开始匹配,

    1.1 如果是域名类规则,则不会触发任何 DNS 解析

    1.2 如果是 IP 类规则且加了 no-resolve 标签,则不会触发任何 DNS 解析,例如 example.com 解析为 1.1.1.1 你的规则为匹配 1.1.1.1 IP ,都不会命中该规则

    1.3 如果是 IP 类规则且没有加 no-resolve 标签,则会触发 DNS 解析,解析会同时对 nameserver 和 fallbackserver 中所有的 DNS 进行发起请求,获取最快的那个 DNS 解析返回的结果(无论是 fallback 还是 namesever ),(在默认配置下)如果为国内 IP ,则无视 fallback ip ,若为国外 IP ,则等待 fallback 组的返回结果,并以该结果进行规则匹配,这也就是为什么要求 fallback 为什么要无污染,同时也是为什么有些时候,有些站点在国内国外都有 CDN ,但是不小心命中国外的。

    无论是 1.1 还是 1.2 1.3 发送给代理服务器的都是原域名,并非是解析到的 IP ,因此真正的解析并连接是发生在代理服务器的。

    在官版中 clash 访问 dns 均不会走代理,但是 clash.meta 实现了可以走代理,有需求可以选这个内核

    另外 clash 官版已经删除了 redir-ip (上面 DNS 服务器真实解析到的 IP )模块,因此程序得到的 ip 是 fake-ip (由 clash 生成的虚假 IP ,仅用来建立本地程序与 clash 的连接。

    所以大致来说,Clash 的 DNS 解析设计是来做规则匹配的,不是真的给到你一个 IP 。
    a632079
        14
    a632079  
       338 天前
    这个其实是 Clash 设计的问题,它默认认为 DNS 是可信的,所以按照一般的配置是这样的,优先使用 114 DNS 请求 IP (除非直接碰到了 filter 设定的域名,这会直接转交给 fallback DNS ),如果这个 IP 符合一定规则,再使用 fallback DNS 再请求一次。

    **这通常是有效的。**
    但是当遇到运营商墙中墙,比如江苏屏蔽了 mypikpak (直接把 DNS 的 A 记录污染到国内 IP ,这种情况不会 fallback ),亦或者新的 GFW Domains (直接返回本地 IP 、国内 IP )。这种策略会出一些问题。

    为了解决这个问题,我在软路由同机器跑的 ArchLinux 起了个基于 Mosdns 4 的 easymosdns 来解决这个问题——这个方案也不太完美,内置的域名列表,IP 段太少了,导致很多域名和 Passwall 一样,直接拿到了境外站的 IP ,比如说 ipip.net 。但目前算是好用的解决方案了。
    jinqzzz
        15
    jinqzzz  
       338 天前
    同上,将 mosdns 作为 openclash 的上游 dns ,国内 IP 、域名用国内 DNS 直连查询,其他走 8.8.8.8 1.1.1.1 通过代理服务器查询,简洁明了。 (别研究 openclash 的 dns 了,折磨自己)
    mohumohu
        16
    mohumohu  
       338 天前   ❤️ 1
    @a632079 可以试试这个: https://github.com/kkkgo/PaoPaoDNS ,用的 mosdns5 。
    v2exe2v
        17
    v2exe2v  
       338 天前
    不要用 clash 的 dns 分流,直接劫持了转交给 mosdns 或者 smartdns
    lxnelly
        18
    lxnelly  
    OP
       337 天前
    @coorey 感谢回复,这两天已经补课相关知识,切换到了 fake ip 模式
    lxnelly
        19
    lxnelly  
    OP
       337 天前
    @fatelight 感谢回复,已经切换到 fake ip 模式。但是新的坑又挖出来了。绕过中国 ip 这个功能的开关与否似乎不对配置文件进行任何修改。我尝试开关它后比对配置文件似乎两者没有任何区别。那么问题来了,它是在进行哪个步骤时以何种方式确认这个域名是不是中国 ip 呢? 它要不要进行一次额外 dns ?还是说它只进行域名的比对,命中就走国内 dns ,没命中就继续走规则找匹配呢?
    lxnelly
        20
    lxnelly  
    OP
       337 天前
    @Holodusk 学到了,感谢。已经开启了 fake ip 。
    lxnelly
        21
    lxnelly  
    OP
       337 天前
    @BABYMETAL 感谢回复,这两天恶补已经把这些知识补上了
    lxnelly
        22
    lxnelly  
    OP
       337 天前
    @Kinnice 感谢回复,受教了,已经开始使用 fake ip 模式,并成功产生了新的疑惑
    lxnelly
        23
    lxnelly  
    OP
       337 天前
    @a632079 感谢回复。目前启用了 fake ip 感觉还不错,比 redir ip 好用很多。想先用一整子再学习 mosdns
    lxnelly
        24
    lxnelly  
    OP
       337 天前
    @jinqzzz 感谢回复,已经切换了 fake ip ,想先用一整子再学习 mosdns 。
    lxnelly
        25
    lxnelly  
    OP
       337 天前
    @mohumohu 感谢回复,已经切换 fake ip ,先用一阵子再折腾 mosdns 吧
    lxnelly
        26
    lxnelly  
    OP
       337 天前
    @v2exe2v 感谢回复,学会 clash 已经费了不少精力了,现在切换到 fake ip 已经感觉快很多了,先爽一阵子,等个机缘巧合再学一下用 mosdns
    fatelight
        27
    fatelight  
       337 天前
    @lxnelly fake-ip 只需要国内 dns 其他都取消,跳过国内,在设置里面有更新 ip 段(其实一直都有小 bug)

    规则用 alc 的吧订阅里面差不多够用

    用 meta 内核看看,记得检查更新里面切换到 dev 分支
    Kinnice
        28
    Kinnice  
       337 天前   ❤️ 2
    @lxnelly #19 openclash 的绕过中国 ip 主要由两个模块组成
    1. 在 iptables 中添加中国大陆 ip 段直接绕过的规则( ipset )
    2. 使用一份国内站点域名表,添加至 dnsmasq 中,在这个域名表中的 将会使用 114.114.114.114 来进行解析为真实的 ip ,并不使用 clash 核心的 dns 解析,所以会返回真实 IP
    综上,一个国内站点会获取到真实的国内 IP ,再被 iptables 放行。缺点是域名表不够全,只包含了主流站点,不够准确,并且这个列表比较大( 2m+),会导致 dnsmasq 启动较慢。
    a632079
        29
    a632079  
       337 天前
    @mohumohu 感谢建议,过段时间忙完回家了,我来研究下这个。🥰
    lxnelly
        30
    lxnelly  
    OP
       337 天前
    @Kinnice 大佬,我现在用的是 lhie1 规则,开启了绕过中国 ip 。刚才在配置文件的所有 RULE-SET 后面全部添加了 no-resolve ,并且把查 DNS 泄露网站的域名全部从规则中删了。测试后全部没有发现中国 dns 服务器。都是香港或者台湾,那是不是已经说明我的 openclash 已经不再做请求 dns 解析并作匹配的动作,而是直接把 fake ip 发给浏览器然后浏览器直接把域名送到隧道那头去做解析了。不考虑小众国内域名走隧道这个弊端的话,是不是已经达到了浏览境外网站全部不解析直接走代理的目的了。

    另外您说的那个 iptables 与 dnsmasq 的机制是不是这样理解,我打开 baidu.com ,被 dnsmasq 劫持,然后它比对了“国内站点域名表”发现匹配,直接 114 解析,如果 ip 与 iptables 的 ip 对对应就放行不走 openclash ;如果不匹配(应该是少数情况)再回到 openclash 做进一步解析。而如果我打开 google.com ,dnsmasq 发现与他的域名表不匹配,直接交给了 openclash 。是这样么
    Kinnice
        31
    Kinnice  
       337 天前   ❤️ 1
    @lxnelly #30
    1. 是这样,是不解析了
    2. 如果在国内域名表中,但解析出来的 IP 不匹配中国 IP 表,这时候没有进一步解析,会直接交给 clash ,以 IP 方式进行连接(可以设置域名嗅探[clash meta]来恢复成域名,从而享受到在服务器端解析), 对,域名不匹配是直接给 clash
    v2exe2v
        32
    v2exe2v  
       337 天前
    这个大佬解释的比较清楚
    xpn282
        33
    xpn282  
       335 天前
    借楼主的帖子问一下,fake-ip 模式的话,dns 的 Fallback 组还需要在设置国外 dns 吗?有人说不需要,但是我觉得设置个 8.8.8.8 、1.1.1.1 的话貌似直连国外网站的话会快些………

    还有就是,有一个 Fallback-Filter 选项要不要打开?这个是干嘛 ?里面有一些默认的 ip 和域名,不知道这个 Fallback -Filter 要不要打开?打开就去还需要添加什么东西进去吗
    mike163
        34
    mike163  
       335 天前 via Android
    最好在本地用 dns 过滤一下,国内的自己查,海外的可以用 clash 的 fall back https://www.v2ex.com/t/869743#reply12
    lxnelly
        35
    lxnelly  
    OP
       334 天前
    @Kinnice 好的,感谢大佬
    lxnelly
        36
    lxnelly  
    OP
       334 天前
    @v2exe2v 视频 up 主讲的很好啊,谢谢推荐。把他的几个相关视频都看了
    lxnelly
        37
    lxnelly  
    OP
       334 天前
    @xpn282 你可以学我设置全部规则后加 no-resolve ,等于本地完全不解析直接出国解析。目前用了两天没有大问题。除了添加了几个 ios 游戏的域名规则为直连以外,其他都很顺畅,基本上绕过大陆 ip 几乎做到了绝大部分大陆 ip 不走通道
    snorlax
        38
    snorlax  
       329 天前
    @jinqzzz #15 怎么配置 mosdns 让 8888 和 1111 通过代理服务器查询?
    jinqzzz
        39
    jinqzzz  
       329 天前 via iPhone
    @snorlax mosdns 配置 8888 doh upstream ,一般默认都是会走代理的。
    jinqzzz
        40
    jinqzzz  
       329 天前
    换句话说,不管用 TUN 、网关,还是其他手段,只要你在 mosdns 的机器上可以走代理访问 google ,mosdns 里的 8888 就也可以走代理。
    WoadZS
        41
    WoadZS  
       328 天前   ❤️ 1
    OpenClash 你可以使用 Clash Meta 内核,然后就可以继续使用 Redir-Host 了。如果你使用的是 Clash Meta 内核的 Redir-Host ,那么建议的配置和一些细节就是:

    1. Nameserver Policy 可以指定国内域名走 223.5.5.5 或 119.29.29.29 等任意一家国内公共 DNS ,随你喜欢。这些域名会强制走你指定的公共 DNS 。
    2. Nameserver 使用一个无污染的 DNS ,比如清华的 DNS 或者其他个人自建的服务。
    3. 不需要 Fallback DNS 。
    4. 如果能在远端服务器开嗅探,就开嗅探。

    此时代理的情况是:
    1. 国内域名,直接使用你指定的境内公共 DNS 解析结果进行直连;
    2. 命中代理域名,直接发往远端进行解析访问;
    3. 未命中域名规则,则通过无污染的 Nameserver DNS 解析,解析到国内 IP 则直连;解析到国外 IP 则将访问请求发送到远端(假设你配的就是非中国 IP 走代理),如果你的节点有开了域名嗅探,会提取客户端传递来的 IP 的实际访问域名重新在远端解析并建立连接;如果没有开嗅探,则会直接使用客户端传递过去的(无污染的 Nameserver DNS 解析的) IP 进行连接。

    关于解析是否走通道的,Clash Meta 也可以单独配置某个 DNS 走特定的策略组(如 AUTO ),如果不配置,则默认直连。原版 Clash 是默认直连,没有指定代理的功能。

    关于多个 DNS 返回的结果 Clash 使用谁,无论是原版还是 Meta 版本,都是取最快返回的结果。

    上面详细的配置可以看 ClashMeta 的配置 wiki: https://wiki.metacubex.one/config/dns/
    hongyichao
        42
    hongyichao  
       319 天前
    @a632079 大佬知道为啥开了 openclash 后,规则判断走代理,然后个别网站会无法打开,把代理关了就能打开。不是 DNS 的问题,感觉是代理的问题,我用 DOMAIN 域名 DIRECT 自定义规则走直连就能打开,这种到底算 clash 的问题还是机场节点问题?
    a632079
        43
    a632079  
       318 天前
    @hongyichao 你可以直接在 Windows 或者其他 PC 操作系统,直接使用 V2ray 、SS 客户端使用机场的节点来判断是否是机场的问题。
    排除了上面那个问题,可以使用 cfw 来测试,这一步可以排除是否是 Clash 的问题,都排除了的话,那就是 OpenClash 的配置问题。

    P.S 我个人更倾向是机场节点的问题。我目前再用的机场,好多节点不能用于 github ssh 连接。所以我只好单独做了个 mixins ,让 github 都走 US 节点了。
    xpn282
        44
    xpn282  
       278 天前 via iPad
    @WoadZS
    OpenClash 的 dns 用 Nameserver Policy 这个方案,好像最近开始流行起来。可以已经舍弃 fallback-filter 之类复杂的方式了,fallback 太过复杂,什么 Nameserver 解析等结果,然后不是 cn 的 IP 又怎么样。。又采用什么 fallback 的结果,什么时候采用 fallback 结果又要看 fallback- filter 的配置。。。太复杂了,难以理解。。


    我现在也是采用了 Nameserver Policy 这种方法,Nameserver Policy 组设置国内域名指向国内运营商 dns ,Nameserver 组设置了国外 dns (走代理),这样分流起来,国内域名只会用国内 dns 解析(国外 dns 不参与解析),其他域名全部用国外 dns 解析(国内 dns 不参与解析),这样不会出现像 fallback 那样国内 dns+国外 dns 同时解析的现象,看着 dns 日志觉得冗长而复杂。。问题简单化
    WoadZS
        45
    WoadZS  
       277 天前
    @xpn282 更完美一点儿的做法是在你现在的基础上,Nameserver 配无污染且 ECS 准确的 DNS ,而不是境外 DNS 。如果 Nameserver 直接设置境外 DNS 的话,会导致同时拥有海内外节点的但又恰好不在境内域名列表里面的小众域名被指向境外节点,造成不必要的流量浪费和延迟增加。
    zbatman
        46
    zbatman  
       277 天前
    @WoadZS 更完美一点儿的做法是前置一个 mosdns ,国内域名返回真实 ip ,其他域名走 clash 的 fakedns
    这样国内域名可以真正的直连(不经过 clash )
    xpn282
        47
    xpn282  
       277 天前 via iPad
    @WoadZS
    我看 mate 文档的配置例子,好像也是 Nameserver 用国外 dns 。。。我没有无污染的 dns……只能损失小众域名了。。。。

    @zbatman
    mosdns 好像也是根据 geosite:cn 来判断国内外域名进行分流。还是没有解决 45 楼说的小众域名国内节点的问题啊。。是我对 mosdns 理解不够吗。。。
    zbatman
        48
    zbatman  
       277 天前
    @xpn282 这种小众域名直接忽略了,即使有,手动放到 mosdns 的直连 domain_set 里就行,也没几个。没必要为了这种域名费劲找无污染的国内 dns ,再说了,怎么保证这些 dns 一直是无污染的呢?
    ANicePaw
        49
    ANicePaw  
       264 天前
    @WoadZS 可否请大佬帮我看看这样配置是您说的那种吗?

    geodata-mode: true
    geodata-loader: standard
    tcp-concurrent: true
    dns:
    enable: true
    ipv6: false
    enhanced-mode: redir-host
    listen: 0.0.0.0:7874
    nameserver:
    - https://doh.pub/dns-query
    nameserver-policy:
    geosite:cn,private,apple:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
    geosite:geolocation-!cn:
    - tls://8.8.4.4
    - https://1.0.0.1/dns-query
    sniffer:
    enable: true
    force-dns-mapping: true
    parse-pure-ip: true
    force-domain:
    - "+.netflix.com"
    - "+.nflxvideo.net"
    - "+.amazonaws.com"
    - "+.media.dssott.com"
    skip-domain:
    - "+.apple.com"
    - Mijia Cloud
    - dlg.io.mi.com
    sniff:
    TLS:
    HTTP:
    ports:
    - 80
    - 8080-8880
    override-destination: true
    WoadZS
        50
    WoadZS  
       264 天前
    @ANicePaw
    nameserver:
    - https://doh.pub/dns-query

    这里有问题,Nameserver 应该指定一个无污染的 DNS ,腾讯的 DNS 不算无污染的,可以考虑使用 https://doh.apad.pro/dns-query ,当然网上还有别的无污染的 DNS 可以选用,自己可以找找。

    Nameserver 配置上述无污染的 DNS 后,后面不用针对 geolocation-!cn 配置 nameserver-policy ,毕竟你写那两个在境内直连的可靠性很成问题。
    ANicePaw
        51
    ANicePaw  
       264 天前
    @WoadZS 谢谢!这样配置的结果就是 Clash 先判断域名是国内还是国外,国内域名会通过 geosite:cn 里的 DNS 解析,国外域名会通过 nameserver 里的无污染 DNS 解析吗?

    这样的话我又有个地方不理解,geosite 是根据域名还是 ip 来判断国内外呀?如果是域名,那就好理解,直接交给对应 DNS 就行。如果是根据 ip ,那就得先解析一下获取 ip ,此时的解析是用是 nameserver 里的 DNS 吗?如果是国外 ip 就直接访问,如果是国内 ip 再交给 geosite:cn 的解析一遍?

    还有个疑问,因为嗅探的存在,即使解析到的是错误 ip ,还是会被机场节点纠正过来,还是能正常访问,那这些配置的意义在哪里呢?提升速度减少延迟吗?
    WoadZS
        52
    WoadZS  
       264 天前
    @ANicePaw geosite 里面的数据是域名

    还有个疑问,因为嗅探的存在,即使解析到的是错误 ip ,还是会被机场节点纠正过来,还是能正常访问,那这些配置的意义在哪里呢?提升速度减少延迟吗?
    上面这个问题的意义在于,无污染的 DNS 可以解决 2 个问题:
    1. 非常小众的域名解析问题,小众域名如果有污染可能会导致绕路或者分流错误,轻则速度变慢,重则无法访问;
    2. DNS 隐私问题,无污染的 DNS ,特别是 DOH 或者 DOT 这类加密 DNS ,可以在保证准确度的情况下不让你的运营商知道你打算访问什么域名。
    xpn282
        53
    xpn282  
       263 天前
    @WoadZS

    我有一个问题想不通,我是日本 vps 节点,openclash 的 rules 规则是国内域名和 ip 走直连,其余全部走代理。
    nameserver-policy 组用运营商 dns ,Nameserver 用了你说的 doh.apad.pro/dns-query

    现在打个比方,比如访问某个国外网站或者说某个服务:
    doh.apad.pro/dns-query 把它解析得到了香港 ip ,链路应该是:我的设备---日本节点-----香港 ip 。
    如果我把 dns “doh.apad.pro/dns-query ”通过日本节点代理解析的话,解析得到的是日本 IP ,链路应该是:我的设备---日本节点-----日本 IP 。
    那像这种情况,是不是把 dns 代理解析更加有效率?

    也就是说虽然 doh.apad.pro/dns-query 是无污染的 dns ,解析到最近的香港 IP ,但是我的 openclash 的 rules 规则是把国外全部走日本节点代理,是不是把 dns 代理解析,更加容易得到日本 IP ,这样访问起来更加科学一些?

    还有就是,dns 代理解析的话,有什么弊端?
    WoadZS
        54
    WoadZS  
       263 天前   ❤️ 2
    @xpn282 apad 的 DNS 是 ECS 友好的,意味着他会返回距离你发起 DNS 请求更近的 IP 地址。
    在你的问题里面,DNS 是否走代理对应着你请求 DNS 的时候,对 DNS 服务器来说你发起请求的地址是不一样的,直连的情况下是你境内的 IP 地址(所以根据 ECS 返回了距离大陆更近的香港 IP ),走代理的时候是用的日本 IP 在请求 DNS (所以返回的是距离日本请求地址更近的日本 IP )

    Apad 这个 DNS 是大陆有节点的,我建议是直连。好处是他能根据你真实的 IP 地址给你在直连情况下最合理的 IP 。
    如果你访问的目标同时有境内外节点,你如果 DNS 解析走代理了(拿到的是境外 IP 地址),那就是实际访问时会舍近求远。

    在回到你自己的情况,如果你访问的目标只有国外节点,本地解析拿到香港 IP 会对日本 VPS 实际访问有影响吗?取决于你的 VPS 上有没有开启嗅探。
    如果开启了嗅探,那么本地解析拿到香港 IP 的用处仅仅是分流(告诉代理这个通信应该走代理),VPS 拿到这条通信时,会嗅探出来你实际想访问的域名并再次解析,此时由于是 VPS 直接请求 DNS ,所以一定是拿到距离日本 VPS 更近的 IP 用于实际链接,不会对你实际访问造成绕路。
    但如果你服务器上代理程序没有开启嗅探,那么自然也不知道你想访问的域名是什么,代理就会直接使用发起请求时用的 IP (香港 IP )进行连接,此时就有绕路的问题。
    xpn282
        55
    xpn282  
       262 天前 via iPad
    @WoadZS
    非常感谢不厌其烦的解答。
    ANicePaw
        56
    ANicePaw  
       257 天前
    @WoadZS 反复折腾,两种都用了一段时间,谈下实际使用体验。

    https://doh.apad.pro/dns-query ,一个问题是主观上感觉不够快,虽然 ping 只多了 20ms ,不知道是不是心理作用。另一个问题因为小众域名绕路的问题,导致部分节点测速延迟高的离谱,不知道实际访问会不会受影响,不过这个可以通过把节点域名添加进 nameserver-policy 解决。

    又用了 https://doh.pub/dns-query 一段时间,主观感觉速度更流畅了,也没发现有什么不能访问的问题。好像理论上除了某种极端的污染状况,其他都不影响正常访问?毕竟国内域名都走了我 nameserver-policy 设置的运营商 DNS ,国外域名实际上都是要到节点重新解析的。至于隐私问题,DNS 泄露导致腾讯知道我访问的外网域名,好像对我来说不是什么问题。感觉夸大 DNS 泄露的严重性好像有点贩卖焦虑,正常的梯子用户用不着担心这个问题。

    综上,我就继续这么配置了,以后遇到问题再说吧。
    nameserver:
    - https://doh.pub/dns-query
    nameserver-policy:
    geosite:cn,private,apple:
    - 202.103.225.68
    - 202.103.224.68
    xpn282
        57
    xpn282  
       243 天前
    @ANicePaw
    这个思路是正确的,我最终折腾了很久,也是这么分配的。
    nameserver-policy 用运营商 dns 。
    nameserver 的话,我不用 https://doh.apad.pro/dns-query 了,用国外公共 dns (代理到节点解析)。用了大半个月,感觉很好,使用起来没发现有什么不妥。哪些所谓的 dns 泄漏测试,全过,全部显示的是节点国家。

    nameserver-policy:
    geosite:cn,apple,private:
    - 运营商 dns

    nameserver:
    - tls://8.8.4.4#DNS
    - tls://208.67.222.222#DNS
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5552 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 08:12 · PVG 16:12 · LAX 01:12 · JFK 04:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.