python-2.7 - 使用 Python 的 dns.update 进行动态 DNS 更新,返回 rcode REFUSED
问题描述
我正在尝试使用 Python 的 dns.update 进行简单的 DNS 更新。但是,每次我运行脚本时,我都会得到“ rcode REFUSED”。我尝试了一系列不同的排列,但似乎无法弄清楚我哪里出错了。我可以直接将此密钥与 nsupdates 一起使用并进行更改。
我在 Python 2.7 上运行它
我的钥匙看起来像这样
key test.testdomain.com. {
algorithm HMAC-MD5;
secret "5MbEv7VrELN7ztkNMGSUvfimpoLAEzdmDzAHE9X4ax0ZDxiYnz1rkIx29SQru2AHQ3XbRBHmY7EQ/xD/2FocCA==";
};
这是我的代码,为了排除故障,我已经对其进行了硬编码。
import sys
import dns.update
import dns.query
import dns.tsigkeyring
import dns.resolver
def main():
UpdateDNS()
####################################################################################################################
def UpdateDNS():
# set zone and dnsserver
zone = 'testdomain.com'
dnshostname = 'dns-test.testdomain.com'
keyring = dns.tsigkeyring.from_text ({'test.testdomain.com.' : '5MbEv7VrELN7ztkNMGSUvfimpoLAEzdmDzAHE9X4ax0ZDxiYnz1rkIx29SQru2AHQ3XbRBHmY7EQ/xD/2FocCA=='})
update = dns.update.Update(zone, keyring = keyring, keyalgorithm = 'hmac-md5.sig-alg.reg.int')
update.add('foo.testdomain.com', 8600, 'A', '179.33.72.36')
response = dns.query.tcp(update, 'dns-test.testdomain.com')
print response
#########################################################
# Main
#########################################################
if __name__ == '__main__':
main()
这是我的回应
x1c\x08'}
id 45721
opcode UPDATE
rcode REFUSED
flags QR RA
;ZONE
testdomain.com. IN SOA
;PREREQ
;UPDATE
;ADDITIONAL
解决方案
一般来说,您的代码对我来说看起来不错。我刚刚在我的名称服务器上测试了基本相同的代码,它就像一个魅力。
您是否允许更新您尝试更新的区域的 TSIG 密钥?您的绑定配置中应该有类似的内容(可能在您编写时可以手动使用密钥,但只是为了确保):
zone "testdomain.com" IN {
type master;
[...]
allow-update {
key "test.testdomain.com.";
};
};
当您运行更新脚本时,名称服务器日志会说什么?通常应该有拒绝更新的理由:
view internal: signer "test-key" denied
view internal: request has invalid signature: TSIG test-key: tsig verify failure (BADKEY)
前者表示不允许密钥更新区域,后者表示密钥本身不被接受(尽管在运行代码时也会导致异常)。
推荐阅读
- angularjs - 我想在角度 js 中选择列表项时显示模式窗口
- python - 当我尝试运行 tensorflow 时,我注意到 GPU 没有被使用,尽管我使用的是 tensorflow GPU 版本。有什么解决方法吗?
- kotlin - 已添加片段:GalleryFragment{ef2fd8d #6 id=0x7f090081
- javascript - 应该如何构建 HTML 的布局以便在 D3 中有多个相互关联的图表
- c++ - 检测我是在构建可执行文件还是动态库?
- json - 如何在golang中将字符串转换为json?
- python - 连接字符串和整数
- pdf - 如何使用 iText 7 将源 PDF 内容添加到目标 PDF 而不会丢失页眉和页脚?
- arrays - 无法使用 s7netplus c# 从 PLC 读取带有数组的结构
- php - 使用 CURL 发送 Twizo 短信