通过更改TTL改进DNS传播

通过更改TTL改进DNS传播,dns,cloudflare,dynamic-ip,Dns,Cloudflare,Dynamic Ip,我家的公共IP地址是一个动态IP地址,我需要从户外访问它。我不想使用像DynDns或NoIp这样的服务,所以我制作了自己的脚本 脚本每小时执行一次,基本上它读取我的公共IP,以及对应于mydomain.com的IP(使用python工具dnsyo)。如果地址不同,它将使用cloudflare API将我的新公共IP链接到mydomain.com 我的问题是,当IP发生变化时,我必须大约等待5小时,然后才能部署DNS。在此期间,mydomain.com解析了我的旧公共IP,因此我无法访问新的公共I

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

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

我的问题是,当IP发生变化时,我必须大约等待5小时,然后才能部署DNS。在此期间,mydomain.com解析了我的旧公共IP,因此我无法访问新的公共IP

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


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

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的客户端可能会在该持续时间内看到过时的值


如果您正在使用CloudFlare的rec_edit操作(如中所述),则可以为该特定记录指定TTL,而不是为整个分区指定TTL。这很可能就是你想要的。

非常感谢你的回答,我没想到我可以更改TTL只是为了记录!我刚刚检查了我的记录上主机的答案,根据cloudflare,我的TTL是300(5 mn),我可以设置的最小值是120,但我不确定这会有很大的不同。。。有没有其他参数可以用来解决我的问题?如果你的TTL实际上是300,那么这个值被缓存很长时间还有另一个原因。当您查询本地名称服务器的缓存记录时,是否会得到与TTL类似的结果?是的,对于我的本地名称服务器,TTL也是300。