Сгенерировать кольцо ключей TSIG (в виде закодированной строки байтов) для обновления DNS - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь использовать модуль 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 в своей организации.

1 Ответ

3 голосов
/ 01 мая 2019

Сервер работает в Microsoft AD DNS с GSS-TSIG.

В вашем случае «брелок TSIG» не применяется. TSIG и GSS-TSIG - совершенно разные звери & ndash; первый использует статический предварительный общий ключ, который можно просто скопировать с сервера, а второй согласовывает ключ сеанса с использованием Kerberos (GSSAPI) для каждой транзакции.

Если вы пытаетесь обновить DNS-сервер Active Directory, BIND nsupdate -g поддерживает GSS-TSIG (а иногда даже работает). Вы должны иметь возможность запустить его через subprocess.Popen ().

Как и в большинстве клиентских приложений Kerberos, nsupdate ожидает, что учетные данные уже присутствуют в среде (т. Е. Вам необходимо уже получить TGT с использованием kinit заранее; или, в качестве альтернативы, если недавняя версия MIT Krb5 используется, вы можете указать $KRB5_CLIENT_KTNAME на таблицу ключей, содержащую учетные данные клиента).

...