2015-12-30 7 views
1

Я пытаюсь добавить запись DNS с помощью DNSPython;Как добавить обратную IP-запись с помощью DNSPython

это хорошо работает, когда я установил 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 ~

ответ

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 внутрибрюшинно, как:

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

У вас есть проблема с '10 .10.10 'в update.replace. Это должно быть полное доменное имя - '10 .10.10.10.in-addr.arpa '. Вы можете использовать что-то вроде этого:

Получить обратный IP

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

Определить in-addr.arpa зону для обновления - У меня есть .labels [3:] для файла зоны класса подсети (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**.**')