文章摘要
这篇文章介绍了DNS LOC记录这一鲜为人知的功能,它允许在DNS中指定物理位置。尽管CloudFlare处理数百万DNS记录,但其中只有743条是LOC记录。文章还提到CloudFlare自研的高性能DNS服务器RRDNS,使其成为全球最快的DNS提供商之一。
文章总结
标题:DNS LOC记录的神奇世界
来源:Cloudflare博客
发布时间:2014年4月1日
作为Cloudflare基础设施的核心,我们自主研发了名为RRDNS的权威DNS服务器(基于Go语言),以快速响应DNS查询并有效抵御DNS攻击。这使得我们成为全球最快的DNS服务提供商之一。
实现一个权威DNS服务器是项艰巨任务,这不仅因为DNS标准历史悠久(RFC 1035可追溯至1987年),还因为其发展过程中日益复杂,且实际应用常与标准规范存在差异。
在众多DNS记录类型中,LOC(位置)记录鲜为人知。它允许用户指定物理位置坐标。在Cloudflare处理的数百万条DNS记录中,仅有743条是LOC记录。尽管如此,用户仍可通过Cloudflare DNS编辑器设置此类记录。
作者的个人网站geekatlas.com就设置了一个LOC记录作为彩蛋,记录了美国新墨西哥州三一核试验场的坐标(北纬33°40'31",西经106°28'29",海拔10米)。当有用户反馈LOC记录无法正常解析时,作者在RRDNS源代码中发现:虽然服务器能接收LOC查询并生成响应数据包,但缺少将文本格式(如"33 40 31 N 106 28 29 W 10m")转换为二进制格式的解析器。
根据RFC 1876(1996年发布),LOC记录包含必填的经纬度、海拔高度,以及可选的区域尺寸和精度参数。其二进制格式采用特殊编码: - 32位无符号整数表示经纬度(单位:千分之一弧秒) - 32位无符号整数表示海拔(单位:厘米,基准面为WGS 84参考椭球面下10万米) - 8位特殊编码表示区域尺寸(支持1cm至9万公里的范围)
作者为此编写了文本解析器(含测试用例),现已部署至生产环境。修复后,通过dig命令可成功查询到geekatlas.com的LOC记录:
geekatlas.com. 299 IN LOC 33 40 31.000 N 106 28 29.000 W 10.00m 1m 10000m 10m
(注:原文末尾关于Cloudflare企业服务的宣传内容已精简处理)
评论总结
评论总结:
- 支持LOC记录的应用价值
- 认为LOC记录可帮助追踪设备位置,解放脑力记忆 "create LOC records for devices...free up some mental bandwidth"(创建LOC记录来解放脑力) "Very, very cool function to have"(非常有用的功能)
- 对LOC记录实际应用的质疑
- 指出缺乏实际消费LOC记录的应用 "is there anything that consumes LOC records?"(有什么实际应用会使用LOC记录吗?)
- 提到示例网站已失效 "geekatlas.com appears to be long gone"(示例网站已不存在)
- 其他相关讨论
- 有人感叹时间流逝 "Oh wow. Did I really write that 11 years ago!"(11年前写的竟已这么久)
- 提供相关资源链接 "See also: https://www.ckdhr.com/dns-loc/"(参见链接)
- 幽默提及DNS问题 "something something it's always DNS"(又是DNS的问题)