我家的公共IP地址是一个动态IP,我需要从户外访问它。我不想使用像DynDens或NoIp这样的服务,所以我制作了自己的脚本。
脚本每小时执行一次,基本上它读取我在icanhazip.com上的公共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操作,如中所述https://www.cloudflare.com/docs/client-api.html#s5.2然后您可以为该特定记录指定TTL,而不是为整个区域指定TTL。这很可能是你想要的。