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

2020-05-14 22:45:56 +08:00
 872517414

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

用的 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 生效。

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

2411 次点击
所在节点    问与答
1 条回复
DefoliationM
2020-06-03 13:01:33 +08:00
因为启用 esni 需要使用 dns 协商来获取加密公钥,但是正常情况下代理并不会在本地进行 dns 查询,因为在本地查询因为 cdn 的关系会返回距离本地较近的 ip 地址,这样会使代理变慢,甚至绕一大圈。
当然可以设置 subnet 来获取距离 subnet 较近的 ip,但是如果代理有中转服务器,就不行只凭代理的 ip 或解析代理域名所得到的 ip 来当做 subnet 了。
当然如果是 doh 或是直接代理 udp 获取 dns 也行,但是如果代理服务器启用了 dns 解锁的服务(比如 netflix,abematv 这一类的),这样获取的 ip 就不好使了,并不能起到解锁的效果。
所以总结来说,代理客户端会把代理的域名发到代理服务器去解析获取 ip,如果代理服务器启用了 dnssec,可能本地 esni 就有效了,但是如果代理服务器只是使用最原始的 dns,甚至连 EDNS 都不支持,那 esni 肯定就不会启用啦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX