通过更改TTL改进DNS传播

时间:2015-02-05 17:24:29

标签: dns cloudflare dynamic-ip

我家的公共IP地址是动态IP,我需要从户外访问它。我不想使用像DynDns或NoIp这样的服务,所以我制作了自己的脚本。

脚本每小时执行一次,基本上它在icanhazip.com上读取我的公共IP,以及与mydomain.com相对应的IP(使用python工具dnsyo)。如果地址不同,则使用cloudflare API将我的新公共IP链接到mydomain.com。

我的问题是,当IP更改时,我必须在DNS的标准化之前等待5h。在此期间,mydomain.com解析了我的旧公共IP,因此我无法访问新IP。

我的问题是:如何让这种传播更快?

我看到there(第3.7节)我可以更改我的dns区域的生存时间参数,如果我减少这个变量,它会减少传播时间还是只会弄乱我的设置?如果我改变它,那么设定的合理值是什么?

1 个答案:

答案 0 :(得分:1)

DNS TTL是允许缓存名称服务器缓存查询结果的秒数。通常,这样做的实际结果是客户端可能会看到该持续时间的陈旧值。减少TTL正是人们处理频繁更改(或即将发生变化)的DNS条目的方式。

您可以通过直接查询权威DNS服务器(我假设您的Cloudflare)来检查TTL值是什么来检查这是否真的是问题:

% host -v dynamic.foo.com ns.foo.com
Using domain server:
Name: ns.foo.com
[...]
dynamic.foo.com. 1800   IN  A   10.10.1.1

1800是30分钟,因此在更新发生之前请求dynamic.foo.com的客户可能会看到最长时间内的陈旧值。

如果您正在使用https://www.cloudflare.com/docs/client-api.html#s5.2中记录的CloudFlare的rec_edit操作,则可以指定该特定记录的TTL,而不是整个区域。这可能是你想要的。