1

我尝试使用 DNSPython 添加 DNS 记录;

当我像这样设置dns时效果很好:

import dns.resolver
import dns.query
import dns.reversename
import dns.update
import dns.rdatatype

update = dns.update.Update('test.com')
update.replace('a', 3600, dns.rdatatype.A, '10.10.10.10')
response = dns.query.tcp(update, '127.0.0.1')

但是,当我以相同的方式设置反向 dns 时,它不起作用:

update = dns.update.Update('10.in-addr.arpa')
update.replace('10.10.10.', 3600, dns.rdatatype.PTR, 'a.test.com')
response = dns.query.tcp(update, '127.0.0.1')

想知道怎么设置reverse dns成功,Thx~

4

3 回答 3

1

我发现问题:

update.replace('10.10.10.', 3600, dns.rdatatype.PTR, 'a.test.com')

这应该是这样的;

update.replace('10.10.10', 3600, dns.rdatatype.PTR, 'a.test.com')

但另一个问题是:这种方式更新反向dns并不总是成功,有时我用'nslookup'测试时,似乎没有添加到dns服务器;

更重要的是,当我 nslookup ip 喜欢:

nslookup 10.10.10.10
Server:         127.0.0.1
Address:        127.0.0.1#53

10.10.10.10.in-addr.arpa        name =a.test.com.10.in-addr.arpa.

这不是我想要的,当使用nsupdate添加时,它只显示:

10.10.10.10.in-addr.arpa        name =a.test.com.

我能做些什么来解决这个问题?

于 2015-12-30T09:09:05.393 回答
1

我自己也遇到过这个问题。
您的姓名末尾缺少一个点:

update.replace('10.10.10', 3600, dns.rdatatype.PTR, 'a.test.com**.**')
于 2017-07-06T13:12:29.780 回答
-1

您对 update.replace 中的“10.10.10”有疑问。它必须是 FQDN - '10.10.10.10.in-addr.arpa'。你可以使用这样的东西:

获取反向IP

reventry = dns.reversename.from_address('10.10.10.10')

定义要更新的 in-addr.arpa 区域 - 我有 A 类子网区域文件 (10.in-addr.arpa) 的 .labels[3:]。如果您有 C 类 (10.10.10.in-addr.arpa),请使用 .labels[1:]

revzone = ''
revzone = '.'.join(dns.name.from_text(str(reventry)).labels[3:])

并添加动作

raction = dns.update.Update(revzone)
raction.replace(reventry, 3600, dns.rdatatype.PTR, 'a.test.com')

这应该工作得很好。

于 2016-08-02T08:10:17.040 回答