我正在尝试使用python DNS模块(dnspython)创建(add
)新DNS记录。
文档指定了如何创建更新http://www.dnspython.org/examples.html:
import dns.tsigkeyring
import dns.update
import sys
keyring = dns.tsigkeyring.from_text({
'host-example.' : 'XXXXXXXXXXXXXXXXXXXXXX=='
})
update = dns.update.Update('dyn.test.example', keyring=keyring)
update.replace('host', 300, 'a', sys.argv[1])
但这并不精确,如何实际生成可以首先传递给dns.tsigkeyring.from_text()
方法的密钥环字符串。
生成密钥的正确方法是什么?我在单位使用krb5。
答案 0 :(得分:3)
服务器正在使用GSS-TSIG在Microsoft AD DNS上运行。
在您的情况下,“ TSIG密钥环”不适用。 TSIG和GSS-TSIG是完全不同的野兽-前者使用可以从服务器简单复制的静态预共享密钥,而后者使用Kerberos(GSSAPI)在每次交易中协商会话密钥。
如果您尝试更新Active Directory DNS服务器,则BIND的nsupdate -g
支持GSS-TSIG(有时甚至可以使用)。您应该可以通过subprocess.Popen()运行它。
与大多数Kerberos客户端应用程序一样,nsupdate希望环境中已经存在凭据(也就是说,您需要事先使用kinit
获得了TGT;或者,如果是最新版本的MIT,则需要使用了Krb5,您可以将$KRB5_CLIENT_KTNAME
指向包含客户端凭据的密钥表)。