首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python的dns.update返回rcode的动态DNS更新被拒绝

使用Python的dns.update返回rcode的动态DNS更新被拒绝
EN

Stack Overflow用户
提问于 2019-02-11 18:59:53
回答 1查看 1.9K关注 0票数 0

我正在尝试使用Python的dns.update进行一个简单的DNS更新。然而,每次我运行脚本时,我都会得到"rcode拒绝“。我尝试了一系列不同的排列方式,但似乎不知道自己哪里出了问题。我可以直接使用这个键和nsupdates,并进行更改。

我在Python2.7上运行这个

我的钥匙看起来像这样

代码语言:javascript
复制
key test.testdomain.com. {
        algorithm HMAC-MD5;
        secret "5MbEv7VrELN7ztkNMGSUvfimpoLAEzdmDzAHE9X4ax0ZDxiYnz1rkIx29SQru2AHQ3XbRBHmY7EQ/xD/2FocCA==";
};

这是我的代码,为了排除故障,我已经对其进行了硬编码。

代码语言:javascript
复制
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()

这是我的回应

代码语言:javascript
复制
x1c\x08'}
id 45721
opcode UPDATE
rcode REFUSED
flags QR RA
;ZONE
testdomain.com. IN SOA 
;PREREQ
;UPDATE
;ADDITIONAL
EN

回答 1

Stack Overflow用户

发布于 2019-10-09 13:10:05

一般来说,在我看来,您的代码是可以的。我只是在我的名字服务器上测试了本质上相同的代码,它的工作原理就像一种魅力。

您是否允许更新要更新的区域的TSIG键?在bind配置中应该有类似的内容(可能是在您编写的时候,您可以手动使用键,但只需确保):

代码语言:javascript
复制
zone "testdomain.com" IN {
    type master;
    [...]
    allow-update {
        key "test.testdomain.com.";
    };
};

当您运行更新脚本时,名称服务器日志显示了什么?通常情况下,应该有拒绝更新的理由:

代码语言:javascript
复制
view internal: signer "test-key" denied
view internal: request has invalid signature: TSIG test-key: tsig verify failure (BADKEY)

前者表示不允许键更新区域,后者表示密钥本身不被接受(尽管在运行代码时也会导致异常)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54637332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档