如何使用DNSPython添加反向IP记录

如何使用DNSPython添加反向IP记录,dns,dnspython,bind9,Dns,Dnspython,Bind9,我尝试使用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 =

我尝试使用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')
我想知道如何成功设置反向dns,Thx~

我发现问题:

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 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.

如何解决此问题?

您对update.replace中的“10.10.10”有问题。 它需要是FQDN-“10.10.10.10.in addr.arpa”。 您可以使用以下内容:

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')
获取反向IP

reventry = dns.reversename.from_address('10.10.10.10')
定义要更新的in-addr.arpa区域-我有类子网区域文件(10.in addr.arpa)的.labels[3:]。如果您有C类(addr.arpa中的10.10.10),那么使用.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')

这应该没问题。

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

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