【问题标题】:Improve DNS propagation by changing TTL通过更改 TTL 改进 DNS 传播
【发布时间】:2015-04-05 16:18:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: dns cloudflare dynamic-ip


    【解决方案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 的客户端可能会在该持续时间内看到陈旧的值。

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

    【讨论】:

    • 非常感谢您的回答我没有看到我可以更改 TTL 只是为了记录!我刚刚检查了我记录中主机的答案,根据 cloudflare,我的 TTL 为 300(5 百万),我可以设置的最小值是 120,但我不确定它会产生很大的不同......还有其他参数吗我可以玩来解决我的问题吗?
    • 如果你的 TTL 实际上是 300,那么这个值被缓存很长时间还有另一个原因。当您查询本地名称服务器以获取其缓存记录时,您是否会得到类似的 TTL 结果?
    • 是的,我的本地域名服务器的 TTL 也是 300。
    猜你喜欢
    • 2013-04-19
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2023-04-03
    • 2020-05-23
    相关资源
    最近更新 更多