2

我家的公网IP是动态IP,需要从室外访问。我不想使用 DynDns 或 NoIp 之类的服务,所以我制作了自己的脚本。

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

我的问题是,当 IP 更改时,我必须等待大约 5 小时才能传播 DNS。在此期间,mydomain.com 会解析我的旧公共 IP,因此我无法访问新 IP。

我的问题是:我怎样才能使这种传播更快?

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

4

1 回答 1

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,而不是为整个区域指定 TTL。这很可能是你想要的。

于 2015-02-05T17:41:23.367 回答