V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
872517414
V2EX  ›  问与答

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

  •  
  •   872517414 · May 14, 2020 · 2746 views
    This topic created in 2180 days ago, the information mentioned may be changed or developed.

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

    用的 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 replies    2020-06-03 13:01:33 +08:00
    DefoliationM
        1
    DefoliationM  
       Jun 3, 2020   ❤️ 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 肯定就不会启用啦。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2440 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:17 · PVG 18:17 · LAX 03:17 · JFK 06:17
    ♥ Do have faith in what you're doing.