我试图弄清楚如何利用 dnspython 来检测孤立的子域。为了解释这个问题,让我们考虑一个示例场景:
一家 DNStest 公司拥有域example.com
现在 DNStest 公司的博客团队和 HR 团队想要为其子域执行子域委托。
博客团队将创建blog.example.com,人力资源团队将在 aws 路由 53 中创建hr.example.com托管区域记录(或者可以是任何其他提供商)
结果,团队获得了权威的域名服务器记录,他们将这些记录发送给拥有域example.com的公司 DNStest 中的 DNS 团队,以便他们可以执行子域委托。
成功委派子域后,博客团队和人力资源团队都将在子域blog.example.com 和hr.example.com下托管他们的服务
有一次,在 6 个月后,让我们说博客团队决定关闭他们的服务。在这种情况下,DNS 团队无法发现博客团队关闭了他们的服务,我们必须清理孤立的记录。
我正在玩 dnspython 模块
import dns.resolver
def get_records(domain):
try:
answers = dns.resolver.query(domain, 'NS')
for ns in answers:
print(ns)
except Exception as e:
print(e)
if __name__ == '__main__':
get_records('blog.example.com')
print('---------------------------')
get_records('hr.example.com')
上面的代码帮助我收集名称服务器记录,但我想弄清楚
如何将 blog.example.com 列为孤立子域
如果一个随机用户创建 blog.example.com 他/她还将获得 4 个名称服务器记录,但它们不是权威名称服务器记录,所以我想知道如何使用 dnspython 列出非权威名称服务器记录....
我阅读了 dnspython 的文档,但还没有找到任何提示。如果那里有不同的包,请建议我的名称。我也愿意尝试使用它们。
谢谢!
编辑回应帕特里克的以下评论: 您需要联系权威名称服务器并询问他们的授权,然后询问授权的权威名称服务器。
我尝试了以下
import dns.resolver
def get_auth_ns(domain):
resolver = dns.resolver.Resolver(configure=False)
resolver.timeout = 5
# Query google name server
ns = '8.8.8.8'
resolver.nameservers = [ns]
try:
name_server_records = resolver.query(domain, 'NS')
return domain + " : ", [name_server_record.to_text() for
name_server_record in name_server_records]
except Exception as e:
print(e)
auth_name_servers = get_auth_ns('blog.example.com')
我看到 All nameservers failed to answer the query blog.example.com IN NS: Server 8.8.8.8 UDP port 53 回答了 SERVFAIL