我尝试使用DNSPyson添加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服务器中;
更重要的是,当我把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.
我能做些什么来解决这个问题?
我自己也遇到过这个问题
你的名字末尾少了一个点:
update.replace('10.10.10', 3600, dns.rdatatype.PTR, 'a.test.com**.**')
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')
这应该很好用。