我目前正在运行缓存 DNS 服务器以改善网络延迟。
问题是:我可以覆盖我从使用 BIND9 或 Linux 上其他软件的服务器获得的 TTL 吗?
在这里简短的“挖掘 www.google.com”:
; <<>> DiG 9.6.1-P2 <<>> www.google.com
;; 答案部分:www.google.com。604441 在 CNAME www.l.google.com 中。www.l.google.com。300 英寸 74.125.45.147
我可以将“300”更改为 15 分钟吗?
非常感谢您的宝贵时间!!
这可以做到吗?当然 - 有损坏的 DNS 服务器(例如 AOL 运行的那些)这样做,我认识的每个管理员都讨厌它。
应该这样做吗?几乎可以肯定没有。
一般来说,TTL 被设置为一个特定的值是有原因的(在谷歌的情况下,可能是容错:如果服务器崩溃,你将只能在 5 分钟内无法访问谷歌),你不应该搞砸它.
通过将 google.com 记录在缓存中保留 5 分钟,您已经获得了性能提升,因为您的个人工作站不会用完互联网来解决问题——不要过度优化并打破预期的行为:)
可以做的最肮脏最丑陋的事情是......
1-下载源代码 2-找到名为 cache.c 的文件 3-找到函数 is_expired
4-以这种方式更改它
功能询问何时过期?我们总是看到没有
这样,它永远不会过期,你将征服世界。
输出:
如果您真的对历史而不是准确性感兴趣,那么您可以做的最快最肮脏的黑客攻击可能是让您的名称服务器成为域的权威主机,并根据需要通过脚本频繁地重新创建区域文件。绝对只推荐用于接管世界,而不是用于现实生活。
一般来说,如果您真的希望在应用程序中保留非常短的 TTL 记录,似乎唯一明智的方法是将其缓存在应用程序中。
最小 TTL
是的,您可以在 ISC Bind 中执行此操作,只需更改其源代码即可。出于意识形态原因,他们不会为您提供这样做的机制。
是的,您还可以在Unbound DNS中设置或覆盖递归 DNS 请求的min-ttl ,而无需重新编译任何内容。也就是说,您应该编译最新版本,因为 EPEL 存储库中的 1.4 分支有一些无法修复的错误,因此您可以设置所有 glibc 强化标志。
虽然人们在将其应用于许多应用程序和/或人们使用的递归时应该谨慎是正确的,但有几个用例可能是合适的。这假设覆盖 min-ttl 的人了解哪些应用程序正在使用他们的 DNS 基础设施以及覆盖它可能产生的影响。说永远不应该这样做是不正确的概括。
我的个人经历
我已经使用
cache-min-ttl:
Unbound DNS 中的设置来减轻跟踪网站的一些隐私攻击。我还用它来纠正那些设置 TTL 的人设置的无效 DNS,这些 TTL 在0
技术上违反了一些 RFC。鉴于我控制自己的递归器并且它们仅供我使用,风险非常低。在这里看到类似的问题dnsmasq: how to increase TTL? 还有一个这里有“dnsmasq”的替代品吗?