【问题标题】:Python DNS resolver and original TTLPython DNS 解析器和原始 TTL
【发布时间】:2013-06-02 11:35:08
【问题描述】:

我需要为每个查询获取 dns 记录的原始 TTL。 DNS 解析器仅在第一次查询时显示原始 ttl。它显示了在每次下一个查询时重置缓存的时间。

>>> answer = dns.resolver.query('www.stackoverflow.com')
>>> print answer.rrset.ttl
300
>>> answer = dns.resolver.query('www.stackoverflow.com')
>>> print answer.rrset.ttl
292

如何在任何查询中获取原始 TTL?

【问题讨论】:

  • 您需要在每次查询之间留出时间,最后一次 DNS 查询答案在本地名称服务器中存储 20 分钟(不确定)
  • 尝试命令dig www.google.com注意;; ANSWER SECTION:的输出你会得到类似的东西:www.google.com. 218 IN A 74.125.135.99这里218意味着查询结果将在本地名称服务器上存储218秒在 DNS 数据库中。反复尝试此命令,您会注意到218 会随着时间的推移而减少,当它减少到0 时。
  • @GrijeshChauhan 我知道。那么获得原始ttl的最佳方法是什么?我不想为此任务部署没有缓存的自己的 dns 服务器。另一方面,没有缓存的dns服务器会很慢。
  • 我不知道dns.resolver.query()函数这个存储时间必须有一个返回参数,你必须在函数的两次连续调用之间给出时间,我认为没有其他选择。跨度>

标签: python dns ttl dnspython


【解决方案1】:

只能通过直接查询权威服务器获取原始TTL。这不是 Python 特有的。

  1. 通过查询NS 记录以获取所需名称,找出权威名称服务器的集合。如果您没有找到该名称的 NS 记录,则删除第一个标签并再次查询(查询父域)。递归重复,直到获得一些 NS 记录。
  2. 一旦您拥有 NS 记录,请直接查询 那些 名称服务器以获取最初请求的名称。如果其中一个或多个名称服务器没有响应,请查询列表中的下一个。

这基本上相当于做递归解析器的部分工作。

【讨论】:

  • 提到这是重复递归解析器的工作似乎很重要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多