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')

リバース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」に問題があります。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 に答える