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

有什么 Win 上的 DoH/DoT 的防污染 DNS 方案吗?

  •  
  •   Whalko · 2020-08-02 16:48:46 +08:00 · 17300 次点击
    这是一个创建于 1604 天前的主题,其中的信息可能已经有所发展或是发生改变。

    受不了你国的魔幻网络了,节点里介绍的 mos-chinadns 我去试过了,不知道为什么没有达到理想的效果,该污染还是污染。simplednscrypt 倒是没有任何问题,但是访问国内网站的速度就极大地降低了。clash 听说也能做一个 DoH 客户端,但是我不知道该怎么做…… 仅限在 win 上,有什么抗污染+分流的 dns 方案吗?谢谢

    第 1 条附言  ·  2020-08-03 22:53:43 +08:00
    暂时解决了,直接用了#20 的 sample 和一个奇奇怪怪的 mixin 。谢谢各位
    第 2 条附言  ·  2020-09-03 18:01:30 +08:00
    最后方案是 YogaDNS 。不太稳定,但是很好用。配合 chinadomainlist 分流
    P.S. 这么久才更新是因为之前以为 append 会挖坟,刚刚看了个帖子说没事我就放心大胆 append 了。
    65 条回复    2020-09-19 00:34:05 +08:00
    Jirajine
        1
    Jirajine  
       2020-08-02 17:05:39 +08:00 via Android   ❤️ 1
    两种方案:
    1. 所有域名都同时通过 doh 和本地查询,使用其中较快的结果。
    优点:不影响速度。缺点:隐私极度不友好,访问违法网站可能被查水表。
    2.维护一个已知的 cn 域名列表,列表以外的全部通过 doh 查询。
    优点:隐私友好。缺点:部分情况下影响速度或产生错误。
    工具:smartdns 或者 dnscrypt-proxy
    jousca
        2
    jousca  
       2020-08-02 17:11:54 +08:00   ❤️ 1
    coredns 这个。
    HaoranLi
        3
    HaoranLi  
       2020-08-02 17:18:11 +08:00
    说实话 win 上面真没见过完美的解决方案
    还是 linux 方便点
    自用 dnsmasq+dnsmasq-china-list 做分流
    上游用 smartdns/clash 就行
    love
        4
    love  
       2020-08-02 18:05:17 +08:00   ❤️ 1
    你们就靠这个 fq ?如果有梯子的话 dns 污不污又有什么关系呢
    Whalko
        5
    Whalko  
    OP
       2020-08-02 18:09:12 +08:00
    @love 那肯定不是一个东西,虽然现在 clash 这种东西在有一个好规则的情况下几乎可以不关,但是 tiz 并不能很好地替代一个优质的 DNS 。
    Whalko
        6
    Whalko  
    OP
       2020-08-02 18:09:26 +08:00
    @HaoranLi 确实,难道我开个 wsl2 ?
    wdlth
        7
    wdlth  
       2020-08-02 18:13:45 +08:00
    mos-chinadns 我用着没什么问题,remote 是 DoH
    love
        8
    love  
       2020-08-02 18:16:44 +08:00
    @Whalko 我以前还维护自己的规则,后来发现对于现在的渣外网速度来说几乎没有原生连接速度能比得过我挑的 VPS,所以我用了 china_ip_list 对所有外网连接都直接用代理,这样就很舒服了几乎体验不到墙的存在。在我这种情况下我实在不知道要折腾 DNS 的意义在哪
    Sekai
        9
    Sekai  
       2020-08-02 18:18:28 +08:00
    coredns 可以在 win 上跑,可分流,我都用了好几个月了稳得很,上游 AdGuard 做过滤,全部走加密,美滋滋
    domosekai
        10
    domosekai  
       2020-08-02 18:19:51 +08:00 via Android
    我也纠结过 win 下的 DNS 方案,但是后来发现只要分流配置得当不需要拘泥于干净的 DNS,所以 lz 你到底是在纠结什么?说出来帮你参谋参谋?
    testcaoy7
        11
    testcaoy7  
       2020-08-02 18:21:30 +08:00
    同推荐 coredns
    HaoranLi
        12
    HaoranLi  
       2020-08-02 18:27:13 +08:00
    @love 干净的 dns 的意义不是在于访问外网没问题,而是在于访问国内网站和 app 的时候不抽风
    HaoranLi
        13
    HaoranLi  
       2020-08-02 18:30:41 +08:00
    @Whalko 这就体现出软路由的方便之处了,如果不是公司电脑的话分流放在路由器上是最省心的,无感翻墙
    Whalko
        14
    Whalko  
    OP
       2020-08-02 20:53:19 +08:00
    @wdlth 我这里不知道为什么不行……local 就是阿里 dot ; remote cf doh,该污染还是污染
    Whalko
        15
    Whalko  
    OP
       2020-08-02 21:05:39 +08:00
    @domosekai 主要是 CF 这半年劣化的太多了,真污染的其实没几个。有些套了 CF 的网站我这用运营商默认 dns 直接不给解析了,现在我 hosts 里面有 10 个 1.1.1.1
    miaomiao888
        16
    miaomiao888  
       2020-08-02 21:33:05 +08:00   ❤️ 1
    AdGuard Home
    上游 DNS 服务器填几个国内和国外的 DOH
    下面勾上“最快的 IP”
    domosekai
        17
    domosekai  
       2020-08-02 21:40:20 +08:00
    @Whalko 明白,可是你反正要挂 tz 的呀,多几个网站又多不了多少流量,难不成你是不想一直开着 tz ?
    mingmeng
        18
    mingmeng  
       2020-08-02 22:17:14 +08:00 via iPhone
    Docket smartdns 镜像 简单好用
    HalloCQ
        19
    HalloCQ  
       2020-08-02 23:16:54 +08:00
    overture,全平台
    Les1ie
        20
    Les1ie  
       2020-08-02 23:37:27 +08:00   ❤️ 1
    国内的 doh dot 的节点可能有审查,优点是延迟比较低,国内一般 50ms 以内,如果客户端在北京的话,那么延迟可能在几 ms 。国外的节点延迟比较高,一般可以到 100ms+。

    dot doh 的没有 dns leak 的问题,因此安全性提升了,但是使用体验下降明显。dot 从发起三次握手到获取到 dns 解析结果需要大概 3 个 RTT,而使用传统的 udp 的 dns,只需要一个 RTT 就能获取到解析结果

    抓包测试使用 1.0.0.1 的 dot 的结果:
    ping 1.0.0.1 延迟 60ms
    使用 dot 从发起三次握手的第一个包到发送 FIN 包的前一个数据包一共用了 230ms

    https://i.loli.net/2020/08/02/ICBMvDxrkJPg8Si.png

    另外 clash 是支持 dot 和 doh 的,配置方式:
    https://lancellc.gitbook.io/clash/clash-config-file/dns#example
    Rilimu
        21
    Rilimu  
       2020-08-02 23:44:08 +08:00 via Android
    同。win 上用 moschinadns 的默认分流配置好几个月了。没发现问题。local remote 都是 dot 。

    请求哪个域名被污染了?
    Rilimu
        22
    Rilimu  
       2020-08-02 23:47:11 +08:00 via Android
    @Les1ie mos-chinadns 把 dot doh 的延时给灭了。连接服用。第一次请求后,和传统 UDP 一块。
    JamesR
        23
    JamesR  
       2020-08-02 23:47:38 +08:00
    路由器上对被污染的域名走 VPN 解析,由于被污染的域名比较少,自己写个通配符匹配就行了。
    Les1ie
        24
    Les1ie  
       2020-08-02 23:52:28 +08:00
    @Rilimu #22 我去看看 要是延迟和 udp 的差不多那么还比较好
    m4d3bug
        25
    m4d3bug  
       2020-08-02 23:58:13 +08:00 via Android
    overtrue
    MrMissBlack
        26
    MrMissBlack  
       2020-08-03 00:28:37 +08:00 via Android
    @love 如果玩 bt 的话对流量消耗太大了
    katana97
        27
    katana97  
       2020-08-03 08:43:09 +08:00
    在局域网里搭建 AdGuard Home
    domosekai
        28
    domosekai  
       2020-08-03 09:27:15 +08:00 via Android
    @MrMissBlack 不要用 tun,开全局 HTTP 代理,bt 直连就行
    H0u5er
        29
    H0u5er  
       2020-08-03 11:52:39 +08:00
    v2ray 支持 DoH,搞了一个旁路由,效果显著,在 DNS 泄漏的测试中获得满分。如果阿里的 dns 开启 DoH 之后,发现某些国内对网站解析得出的是国外的 IP 地址(如斗鱼直播),配置中加上 clientIp 参数即可。

    "dns": {
    "hosts": {
    "some_local_site.com": "192.168.1.1",
    "some_local_site.net": "192.168.1.1",
    "x1.local.com": "192.168.1.252",
    "x2.local.com": "192.168.1.253",
    "x3.local.com": "192.168.1.254"
    },
    "servers": [
    {
    "address": "223.5.5.5",
    "port": 53,
    "domains": [
    "geosite:cn",
    "h0u5er.com",
    "ntp.org"
    ],
    "expectIPs": [
    "geoip:cn"
    ]
    },
    {
    "address": "https://1.1.1.1/dns-query",
    "port": 53,
    "domains": [
    "geosite:geolocation-!cn",
    "geosite:speedtest"
    ]
    },
    "1.1.1.1",
    "localhost"
    ]
    },


    参考资料:
    https://medium.com/@TachyonDevel/%E6%BC%AB%E8%B0%88%E5%90%84%E7%A7%8D%E9%BB%91%E7%A7%91%E6%8A%80%E5%BC%8F-dns-%E6%8A%80%E6%9C%AF%E5%9C%A8%E4%BB%A3%E7%90%86%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8-62c50e58cbd0
    MrMissBlack
        30
    MrMissBlack  
       2020-08-03 12:12:01 +08:00 via Android
    @domosekai 有些场景不用透明代理不行,比如安卓 tv,或者是一些不支持代理的软件。当然我自己用是没问题的,用 proxifier 就行了,但是家里其他人要用就麻烦了。
    我现在想到的最好办法是单独将 transmission 指定一个不经过代理的出口,不过具体实现还没想好。
    domosekai
        31
    domosekai  
       2020-08-03 12:23:35 +08:00
    @MrMissBlack 我以为你是 win,如果是 router 上分流那么限制端口就好了,我自己是只转发 1024 以下到代理,高位端口的应用很少的,个别开就行了,比如安卓的 5228
    Whalko
        32
    Whalko  
    OP
       2020-08-03 12:50:59 +08:00 via Android
    @Rilimu #21 试试看 https share 点 dmhy 点 org 一个很典型的被污染的网址
    Whalko
        33
    Whalko  
    OP
       2020-08-03 13:00:46 +08:00 via Android
    @Les1ie #20 这个在 direct 模式下能生效吗?…
    Whalko
        34
    Whalko  
    OP
       2020-08-03 13:01:56 +08:00 via Android
    @Rilimu #21 受到楼上提醒,我用 Wireshark 抓个包看看好了,看看具体问题出在哪里,是不是因为我根本没配置好…
    MrMissBlack
        35
    MrMissBlack  
       2020-08-03 13:42:37 +08:00 via Android
    @domosekai 您好,请教一下如果碰上 ftp 这种被动端口,会不会不好处理呢
    byzf
        36
    byzf  
       2020-08-03 13:52:34 +08:00
    dnscrypt, 我在 arch linux 的包推荐里找到的, 然后发现 windows 上也有, 亲测极其干净.(我这么说出来是不是以后就不干净了
    虽然不知道为什么, dnspod(腾讯的) 用 doh, 貌似还是返回的被污染的结果.
    xingyuc
        37
    xingyuc  
       2020-08-03 13:56:18 +08:00
    @love 自己公司开发的网站被劫持加上了流量小广告不承认怎么办……
    MrMissBlack
        38
    MrMissBlack  
       2020-08-03 14:01:12 +08:00 via Android
    @domosekai 另外我还担心一件事。有些网站开启了 ddos 防护,如果使用 ip 分流会不会通不过网页验证
    imn1
        39
    imn1  
       2020-08-03 14:18:05 +08:00
    最最简单当然是利用梯子就行了
    简单傻瓜方案是 github 搜一些华人开发的 dns 项目
    如果想用大厂的,就装 unbound,github 上面有专为 cn 写的配置
    或 stubby,这个是开箱即用的,默认配好了十多个国外 DoT,缺点是慢,没有 cache

    如果想自己配,各方面顺畅、方便自己管控,考虑三点
    1.分流,国内 udp,国外 DoT/DoH
    2.因为要正确,所以肯定比 udp 慢,上 cache,设定 10~24 小时 TTL 缓存
    3.支持 edns,避免一些 cdn 总是解析到国外
    Les1ie
        40
    Les1ie  
       2020-08-03 14:33:31 +08:00   ❤️ 1
    @Whalko #33 试过了 生效
    domosekai
        41
    domosekai  
       2020-08-03 15:06:56 +08:00
    @MrMissBlack 这年头还有 ftp ! linux 有个 nf_conntrack_ftp 模块,加载后作用是把 PASV 连接标记为 21 端口主连接的 RELATED 连接,跟随主连接有相同的 connmark 。只要你在转发透明代理的时候是跟着 connmark 走的( REDIRECT 一定是这样的,因为走 nat 表,TPROXY 的话一定要用 connmark ),那么 RELATED 连接一定和主连接走同样的路由,不知说清楚了没。还有你说的分流导致通不过验证,要看你怎么分流了,国内外分流自然是不会的。。
    MrMissBlack
        42
    MrMissBlack  
       2020-08-03 17:48:51 +08:00 via Android
    @domosekai 多谢,受教了
    sky96111
        43
    sky96111  
       2020-08-03 21:03:36 +08:00
    @Les1ie 国内 DOH 会被审查是真的吗?我现在是路由器用 adguardhome 取代 dnsmasq,上游是阿里、dnspod 和谷歌的 DOH 。adh 开启了选择最快 IP 地址,所以访问国内网站不会被解析到国外,遇到被污染的无法连接就只会被谷歌 DOH 解析,所以我把 clash 的上游也设置成了 adh 的 dns 。如果会被审查,这样的话产生大量的屏蔽网站查询记录啊...
    nekobest
        44
    nekobest  
       2020-08-03 21:04:01 +08:00
    话说有一点我一直不太明白,就是折腾 DNS 这件事情。大多数被和谐的站并不只是 DNS 污染这一层;应对运营商劫持也显然只需要阿里等公共 DNS ;即便被污染的站的 IP/SNI 都没有被过滤,速度也是很感人的。与其百般折腾,似乎真不如一个 proxy 靠谱?那折腾防污染 DNS 是出于什么目的呢?
    domosekai
        45
    domosekai  
       2020-08-03 21:53:09 +08:00
    @nekobest 我也不明白,我自己吧以前觉得有些网站明明只是 DNS 污染就要挂 tz 显得不够纯粹,所以折腾 DNS 是为了减少对 tz 不必要的使用。我没有用国内外分流,是根据是否被 xx 自动分流的,所以 DNS 就很有用(我外网速度很好),如果是国内外分流的方案我也不懂为什么要折腾 DNS,有可能有些人不喜欢一直挂着 tz,能不用就不用?
    domosekai
        46
    domosekai  
       2020-08-03 21:58:23 +08:00
    @nekobest 我想起来了,还有一种情况,就是这个 dns 的结果是 tz 也要用的,如果采用的是发送 hostname 给代理或者 sniff 的方案,那么 DNS 是无所谓
    Jerami
        47
    Jerami  
       2020-08-03 22:14:12 +08:00 via Android
    你必须升级到 19628 才可以使用 doh
    Rilimu
        48
    Rilimu  
       2020-08-03 22:36:49 +08:00
    @Whalko 这个域名已测试。无污染。

    @domosekai 对。
    折腾防污染 DNS 主要是配合透明 DL 。虽然有 sniff 方案。但游戏和一些软件的数据流无法 sniff,透明 dl 如果 IP 被污染即使 tz 正常,也连不上。所以被迫折腾无污染 DNS 。
    Whalko
        49
    Whalko  
    OP
       2020-08-03 22:50:56 +08:00
    @domosekai
    @nekobest “不喜欢一直挂着 tz”,有一定这样的因素,还有就是某些奇葩网站不让用代理。
    Whalko
        50
    Whalko  
    OP
       2020-08-03 22:52:50 +08:00
    @Jerami 我好像确实版本比较低……1903//18362 点 959
    domosekai
        51
    domosekai  
       2020-08-03 23:00:48 +08:00
    @Rilimu 这个确实,不过我还是很好奇有什么“游戏和软件的数据流”居然需要被污染?
    Les1ie
        52
    Les1ie  
       2020-08-04 00:22:28 +08:00   ❤️ 1
    @sky96111 #43 没有实际的证据,只有猜想。
    可能会在不同的途径泄露访问网站的信息:
    1. 公司、集团的出口网关、运营商可能获取请求的域名,造成隐私泄露,也可以抢答 DNS 请求
    2. 使用的 dns 服务器可能会缓存客户端的 ip 和请求的域名的信息,也可以返回错误的解析结果

    doh 和 dot 可以解决网关、运营商收集 DNS 请求和抢答的问题,但是无法解决 DNS 服务器自己存在的问题,我们只能选择信任 DNS 服务器

    个人猜测运营商这里泄露 DNS 请求记录是个大头
    jilu171990
        53
    jilu171990  
       2020-08-04 05:33:38 +08:00
    为啥不直接改 hosts ?感觉这是一个相当伪的需求。
    Rilimu
        54
    Rilimu  
       2020-08-04 08:42:12 +08:00 via Android
    @sky96111 #43 同感。感觉是个大安全问题。国内服务器知道我们访问的所有网站的域名。

    碰巧看见 mos-chinadns 的教程更新了。“隐私保护: 限制 local 服务器只解析指定域名”。好像是解决这种问题。有大佬能抓包验证一下这真的管用吗?

    @domosekai #51 某软件需要连 Google 的 appspot 点 com 。而且无视 hosts 。不能被 sniff 。坑....
    ragnaroks
        55
    ragnaroks  
       2020-08-04 08:42:24 +08:00
    我也是被 dns 搞的头疼,后来干脆直接写驱动,劫持三层,如果主机名在指定的列表里,则劫持并转发所有 tcp/udp 到代理
    zimonianhua
        56
    zimonianhua  
       2020-08-04 09:04:14 +08:00 via Android
    YogaDNS 了解下,感觉还行
    flowfire
        57
    flowfire  
       2020-08-04 09:14:13 +08:00
    chrome 和 firefox 不是都已经支持了 DoT 了吗。
    还是说你要全局的= =
    Whalko
        58
    Whalko  
    OP
       2020-08-04 09:56:25 +08:00
    @jilu171990 #53 虽然可能确实比较伪,但是改 hosts 略麻烦,我上面也说了,我 hosts 里有 10 条 1111,总不能每次遇到一个上不去的网站我就用多线 ping 工具看看什么情况吧。最烂的时候我 V2EX 都是改 hosts 上的,真的受不了了。然后 DoH/DoT 也有一些好处,一是有些时候 DNS 也会被运营商污染来投广告,虽然现在比较少了,二是一定程度的保护隐私。

    @zimonianhua #56 感谢推荐,看了看似乎完美符合我的要求,我会去试试看的。可惜好像不开源

    @flowfire 还是全局的好一点……然后我就知道 FF 能用 DoH,chrome 和 ff 的 DoT 在哪里我好像没看到过……我去搜搜看。
    jilu171990
        59
    jilu171990  
       2020-08-04 12:38:39 +08:00
    @Whalko 改 hosts 麻烦自己写脚本自动改啊。。。你这个需求的本质就是你因为懒不愿手动改 hosts,也不愿写脚本自动改 hosts,然后就决定花费无数的时间和精力去折腾同样很麻烦而且有大量额外开销同时在可预见的未来注定会撞墙的 dns,同时 dns 在默认情况下是不可能给你最优的解析结果的,如果你想要最优的解析结果的话,最终还得要去 dns 上改 hosts 。
    sky96111
        60
    sky96111  
       2020-08-04 19:00:24 +08:00
    @Les1ie 猜想就放心一点了..ADH 的选择最快 IP 只需要上游有一个未被污染的解析就可以保证查询正确,即使国内的 DOH 返回污染结果也没有太大的问题,至于泄露...
    @Rilimu 从名字上看,不像是这个用途
    MakeItGreat
        61
    MakeItGreat  
       2020-08-22 10:23:51 +08:00 via Android
    @H0u5er 您好,能提供一下完整的例子吗?怎么调用这个 DNS?
    非常感谢!
    buchiluobo
        63
    buchiluobo  
       2020-09-18 18:22:33 +08:00
    @Whalko mos-chinadns 你去试过了,没有达到理想的效果是什么意思呀?
    buchiluobo
        64
    buchiluobo  
       2020-09-18 18:23:31 +08:00
    @HaoranLi 可是有些黄网的网址频繁被封,换上干净的 dns 就可以登录了
    Whalko
        65
    Whalko  
    OP
       2020-09-19 00:34:05 +08:00
    @buchiluobo #63 就是失败了,后来其实发现原因是我自己太蠢
    “或者手动将网络适配器的 DNS 地址改为的 mos-chinadns 监听地址”这一步我没做
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.