你的网站安全吗?这个DNS设置很多人漏掉了
HTTP/3虽快,但你可能正在让它变慢
说个事儿,你可能没注意到。
现在每天有上百万网站在发生这种情况:用户敲下你的域名,浏览器解析DNS、建立TCP、完成TLS握手、发出HTTP请求……然后才收到通知:"不好意思,其实我支持HTTP/3的哦。"
你看,问题就在这儿——那个本来能让所有东西飞起来的协议,偏偏来得太晚了。
为什么会这样?
这不是浏览器的问题。根源在于Alt-Svc响应头本身的设计缺陷。
这个头只能等连接建立之后才能送达。连接都搭好了,你早就选了HTTP/1.1或HTTP/2当备选方案。HTTP/3再快,跟你第一波访客也没半毛钱关系。
解决方案:HTTPS DNS记录(RFC 9460)
好消息来了。2023年11月正式标准化的HTTPS记录,终于把这事儿搞定了。
它能做到的是:在浏览器还没发起任何连接之前,就把HTTP/3支持情况告诉人家。
怎么做到的?
DNS解析这步本来就要做,对吧?顺便塞点信息进去:
- 支持哪些ALPN协议(h3、h2、http/1.1)
- ECH加密客户端Hello的公钥
- IP地址提示,让连接提前开始
等于说,你网站第一次被访问就能直接上QUIC和HTTP/3。没有浪费的握手,没有白跑一趟的协议发现。
这个ECH是什么情况?
HTTPS记录还顺手解决了一个HTTP头根本搞不定的问题——Encrypted Client Hello(ECH)。
简单说,ECH把TLS握手里的ClientHello包本身给加密了,连SNI服务器名称都藏起来。运营商、ISP、WiFi热点想偷看你访问哪个网站?没门。
但是有个问题:你得先拿到ECH公钥才能发第一个ClientHello。可这时候根本还没建立连接,没地方传公钥啊。
典型的鸡生蛋蛋生鸡困境。
只有HTTPS DNS记录这种带外通道才能打破这个循环。HTTP头永远做不到,DNS可以。
怎么配置?
给你看个完整的ServiceMode例子:
example.com. 3600 IN HTTPS 1 . alpn="h3,h2" ipv4hint=203.0.113.10 ipv6hint=2001:db8::10
逐个解释:
example.com.— 你的域名,记得最后带个点3600— TTL,缓存时间(秒)HTTPS— 记录类型1— 优先级大于0就是ServiceMode,会带参数.— 目标主机,点号表示"就用自己"alpn="h3,h2"— 协议列表,排第一的最优先ipv4hint/ipv6hint— 地址提示,提前开始连接
在我们NameOcean,后台直接就能配,跟管理其他DNS记录一样简单。又一个信号,说明我们在认真对待网站性能这件事。
旧浏览器怎么办?
放心,完全向后兼容。
不支持HTTPS记录的客户端会直接无视它,乖乖走普通的A/AAAA查询。最多就是没用到HTTP/3优化,什么都不会坏。
所以今天就能上,毫无顾虑。它本身就是渐进式增强——现代浏览器读得到,旧浏览器当它不存在。
Alt-Svc头要不要删?
别删。留着。
Alt-Svc作为后备方案,专门照顾那些收不到HTTPS记录的情况:老浏览器、特定DNS配置、或者会过滤DNS响应的网络。
两招并用,滴水不漏:
- 现代浏览器 + 支持HTTPS记录的DNS → DNS阶段就发现HTTP/3,火速QUIC连接
- 老客户端或DNS被劫持 → 先连上再说,Alt-Svc兜底
- 老访客再来 → 更好了,HTTP/3连接可以直接0-RTT恢复,第一个请求零握手就发出去
我的建议
HTTPS DNS记录属于那种投入极低、回报明显的优化。改个配置,第一次访问的延迟就能降一截。
如果你用CDN,先查查他们有没有自动帮你发这个记录——Cloudflare对托管域名是默认开启的。
自己管DNS的话,加个HTTPS记录也就十五分钟的事。值。
互联网在往HTTP/3演进,你的DNS也得跟上趟儿。
想优化DNS配置?NameOcean提供全套工具和指导,让你的基础设施不掉队。访客的首次连接,本来就不该等那么久。