【问题标题】:Dynamic DNS updates using Python's dns.update returning rcode REFUSED使用 Python 的 dns.update 进行动态 DNS 更新,返回 rcode REFUSED
【发布时间】:2019-02-11 18:59:53
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: python-2.7 dnspython


    【解决方案1】:

    一般来说,您的代码对我来说看起来不错。我刚刚在我的名称服务器上测试了基本相同的代码,它就像一个魅力。

    您是否允许更新您尝试更新的区域的 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)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2011-02-13
      • 2022-06-23
      • 2021-12-10
      • 2019-11-10
      • 2020-12-16
      相关资源
      最近更新 更多