2015-12-30 49 views
1

我尝试使用DNSPython添加DNS记录;如何使用DNSPython添加反向IP记录

它工作得很好,当我这样设置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') 

我想知道如何:

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这是行不通的成功设置反向DNS,THX〜

回答

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. 

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

-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区域更新 - 我有.labels [3:]对于A类子网区域文件(10.in -addr.arpa)。如果你有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') 

这应该只是罚款。

1

自己遇到此问题。
您在名称末尾缺少一个点:

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