Почему при попытке обновить запись DNS с использованием .keytab файла возникает ошибка?

Есть два сервера: mydc (Samba) и mycomp (samba-tool). В домене есть пользователь testuser.
  • 22 апреля 2026 г. 9:00
Ответы на вопрос 3
Нужно чуть больше информации (какая именно команда и полный текст ошибки), но чаще всего такая проблема возникает не из‑за формата .keytab, а из‑за одного из следующих моментов. Перечислю типичные причины и шаги диагностики/решения — проверьте их по порядку.

1) Неправильный принципал / несоответствие ключа (KVNO)
- Проверьте, какие записи в keytab:  
  klist -k -t -K /path/to/file.keytab  
  Убедитесь, что там есть нужный принципал (например testuser@REALM или host/mycomp@REALM) и что kvno/enctypes выглядят нормально.
- Попробуйте получить тикет из keytab:  
  kinit -k -t /path/to/file.keytab PRINCIPAL@REALM  
  klist —если kinit падает (PREAUTH failed, KRB_AP_ERR_MODIFIED и т.п.), значит ключ в keytab не соответствует тому, что в AD (пароль/kvno изменён) — надо заново экспортировать keytab.

2) Неправильный принципал для DNS‑обновлений / недостаточные права
- В Active Directory динамические DNS‑обновления (GSS‑TSIG) обычно выполняются от имени компьютерного аккаунта (машины) или от пользователя/группы, у которых есть права на запись в зону. Если у вас keytab для простого пользователя testuser, у него может не быть прав на обновление зоны — сервер вернёт отказ.
- Решения: используйте keytab машинного аккаунта (host/mycomp$@REALM или имя_компьютера$) либо используйте учётку с правами (администратор) или явно выдайте testuser права на обновление нужной зоны в AD.

3) Неправильный домен/realm / DNS / FQDN
- Проверьте, что PRINCIPAL@REALM соответствует реальному Kerberos realm и что krb5.conf содержит правильные настройки. Проверьте, что вы обращаетесь к правильному контроллеру домена по FQDN.
- Проверьте синхронизацию времени между хостами — Kerberos чувствителен к расхождению времени.

4) Неподдерживаемые или отключённые enctype
- Если в keytab есть только шифры, которые KDC не поддерживает, ticket не возьмётся. Сравните enctypes в keytab и те, что разрешены в домене.

5) Ошибка в использовании команды samba-tool
- При вызове samba-tool dns update используйте флаги --use-kerberos, --principal и --keytab правильно. Пример проверки: сначала kinit -k, потом выполнить команду с --use-kerberos без пароля.
- Если вы не уверены, временно проверьте работу от админа (samba-tool dns update ... --username=Administrator) — если с админом работает, значит проблема с правами/ключами.

Рекомендованные шаги диагностики (быстрый чек‑лист)
1. Посмотреть содержимое keytab: klist -k -t -K file.keytab
2. Попытаться получить тикет: kinit -k -t file.keytab PRINCIPAL@REALM ; klist
3. Если kinit неудачен — пересоздать keytab (на Windows: ktpass, на Samba: samba-tool domain exportkeytab/другой инструмент) так, чтобы KVNO совпадал.
4. Проверить права на DNS‑зону: попробуйте то же обновление от администратора — если проходит, проблема в правах.
5. Проверить время/realm/DNS‑имена.

Если хотите, пришлите:
- точную команду, которой вы делали обновление,
- полный текст ошибки,
- вывод klist -k -t -K /path/to/file.keytab
— я подскажу конкретнее и скажу, что нужно сделать (какой keytab нужен или как выдать права).
Kerberos по IP не работает — ему нужен hostname для SPN. Попробуй mydc.domain.local вместо 192.168.1.1: <br/> <br/> <pre><code>samba-tool dns add mydc.domain.local domain.local test A 192.168.1.2 --use-kerberos=required</code></pre> <br/> <br/> Если тикет не в дефолтном ccache — добавь <code>--use-krb5-ccache=/путь/к/ccache</code>
Вопрос закрыт. <br/> В моём случае проблема была в SPN для сервера mydc. <br/> Kerberos ругался на не соответствие. <br/> Выяснил после того как попытался по тикету обращаться локально на самом сервере и получил ту же ошибку. <br/> Проверил SPN и обнаружил что они выданы на другое имя хоста, т.к. оригинальное имя сервера myserver, а mydc - это дополнительное имя в виде DNS записи. Хоть оно и разрешалось, при проверке тикета происходила ошибка из-за несовпадения имени. <br/> В итоге добавил SPN запись для имени mydc и всё заработало.
Похожие вопросы