V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
872517414
V2EX  ›  问与答

为什么开启代理后会破坏 Firefox 的 ESNI 状态?

  •  
  •   872517414 · 2020-05-14 22:45:56 +08:00 · 2319 次点击
    这是一个创建于 1469 天前的主题,其中的信息可能已经有所发展或是发生改变。

    感觉这会是个蠢问题,但还是要问一下……

    用的 Clash for Windows(System Proxy)。

    Firefox 设置

    network.trr.mode=3
    network.trr.custom_uri = https://doh.dns.sb/dns-query
    network.trr.uri= https://doh.dns.sb/dns-query
    network.trr.enable_when_proxy_detected = true
    network.security.esni.enabled = true
    

    使用情况

    关闭 System Proxy 后,访问 https://www.cloudflare.com/cdn-cgi/trace 。 其中

    sni=encrypted
    

    说明 ESNI 设置生效。 开启 System Proxy 后,

    sni=plaintext
    

    说明 ESNi 设置未生效,访问 about:networking#dns 确认 DoH 生效。

    对传输这块理解不是很透彻,就是不太明白为什么会破坏这个加密状态。还望大手子可以解惑一下。

    1 条回复    2020-06-03 13:01:33 +08:00
    DefoliationM
        1
    DefoliationM  
       2020-06-03 13:01:33 +08:00   ❤️ 1
    因为启用 esni 需要使用 dns 协商来获取加密公钥,但是正常情况下代理并不会在本地进行 dns 查询,因为在本地查询因为 cdn 的关系会返回距离本地较近的 ip 地址,这样会使代理变慢,甚至绕一大圈。
    当然可以设置 subnet 来获取距离 subnet 较近的 ip,但是如果代理有中转服务器,就不行只凭代理的 ip 或解析代理域名所得到的 ip 来当做 subnet 了。
    当然如果是 doh 或是直接代理 udp 获取 dns 也行,但是如果代理服务器启用了 dns 解锁的服务(比如 netflix,abematv 这一类的),这样获取的 ip 就不好使了,并不能起到解锁的效果。
    所以总结来说,代理客户端会把代理的域名发到代理服务器去解析获取 ip,如果代理服务器启用了 dnssec,可能本地 esni 就有效了,但是如果代理服务器只是使用最原始的 dns,甚至连 EDNS 都不支持,那 esni 肯定就不会启用啦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3512 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:18 · PVG 18:18 · LAX 03:18 · JFK 06:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.