динамическое обновление dnspython PeerBadKey

Я работаю с dnspython, пытаясь выполнить обновления для сервера BIND9, однако я продолжаю получать ответ Bad Key («ошибка проверки tsig (BADKEY)») — когда я использую nsupdate, ключ работает нормально. Есть ли кто-нибудь, кто успешно реализовал dnspython для выполнения динамических обновлений BIND DNS?

Вот GIST со всем кодом и ошибками: https://gist.github.com/anonymous/0afc800ef0615aa7c1219ec25c032eef< /а>


person Vance84    schedule 24.03.2017    source источник


Ответы (1)


Мне пришлось использовать параметр keyalgorithm для функции update.Update, а также импортировать конкретный алгоритм из модуля dns.tsig

from dns import query, update, tsigkeyring
from dns.tsig import HMAC_SHA256

key='EQSVvuA/KMAa/0ugdBBLqjxgP+o5rI7y8JoJbOICpJM='
bindhost='192.168.56.10'
ip='192.168.56.10'

keyring = tsigkeyring.from_text({
    'test.local' : key
    })

update = update.Update('test.local.', keyring=keyring, keyalgorithm=HMAC_SHA256)
update.replace('abc', 300, 'A', ip)

response = query.tcp(update, bindhost, timeout=10)
person Vance84    schedule 25.03.2017
comment
То, что вам пришлось импортировать алгоритм, вероятно, связано с тем, как вы делали предыдущий импорт. Вот как я сделал то же самое, но без дополнительного импорта: stackoverflow.com/a/47985135/1399595 - person Leo; 30.12.2017