Вопрос или проблема
S.O. Ubuntu 18.04.4, Версия Samba 4.7.6-Ubuntu
У меня есть проблема с этой машиной. Каждый раз, когда система перезагружается, winbind.service не удается правильно запуститься, и в журнал записывается ошибка “превышен часовой сдвиг”.
Журнал winbind:
[2020/02/17 17:25:12.840317, 0] ../source3/winbindd/winbindd_cache.c:3170(initialize_winbindd_cache)
initialize_winbindd_cache: очищение кеша и воссоздание с номером версии 2
[2020/02/17 17:25:12.879543, 0] ../lib/util/become_daemon.c:124(daemon_ready)
STATUS=демон 'winbindd' завершил запуск и готов обслуживать соединения
[2020/02/17 17:25:18.175567, 0] ../source3/librpc/crypto/gse.c:532(gse_get_client_auth_token)
gse_get_client_auth_token: gss_init_sec_context не удался с [Разное ошибка (см. текст): Часовой сдвиг слишком велик](2529638949)
[2020/02/17 17:25:18.397020, 0] ../source3/librpc/crypto/gse.c:532(gse_get_client_auth_token)
gse_get_client_auth_token: gss_init_sec_context не удался с [Разное ошибка (см. текст): Часовой сдвиг слишком велик](2529638949)
[2020/02/17 17:25:18.909264, 0] ../source3/librpc/crypto/gse.c:532(gse_get_client_auth_token)
gse_get_client_auth_token: gss_init_sec_context не удался с [Разное ошибка (см. текст): Часовой сдвиг слишком велик](2529638949)
Как только машина запущена, я могу вручную systemctl restart winbind
, и она запускается без каких-либо проблем.
Я проверил все возможные настройки, и все, кажется, в порядке. Также я воссоздал машину с нуля.
Я настроил chrony, клиент синхронизации времени, и также пробовал с systemd-timesync. Машина действительно синхронизирована, когда я проверяю это.
Я также пытался отредактировать /lib/systemd/system/winbind.service
, добавив After=chrony.service, но это не дало никакого результата.
В DC chrony показывает, что клиенты подключены:
Hostname NTP Drop Int IntL Last Cmd Drop Int Last
===============================================================================
smb1.domain.club 181 0 6 - 36 0 0 - -
giorgilaptop.domain.club 3 0 12 - 40m 0 0 - -
plex.domain.club 110 0 6 - 0 0 0 - -
На машине, которая не удалась, также показан правильный источник
localuser@smb1:~$ sudo chronyc sources
210 Количество источников = 1
MS Имя/IP адрес Стратум Полл Reach LastRx Последний образец
===============================================================================
^* dc1.domain.club 2 6 377 47 -12us[ -17us] +/- 20ms
Машина была создана, следуя этим шагам:
https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member
ИЗМЕНЕНИЕ: По всей видимости, это происходит, когда ВМ работают в ESXI 6.7 на моем сервере. Я скачал ВМ на VMware Workstation, и winbind запускается без каких-либо проблем. Это должно быть связано каким-либо образом с ESXi и синхронизацией времени.
Проблема решена.
Если вы используете Vmware ESXi, как и я, вам необходимо включить синхронизацию NTP в настройках ESXi, чтобы она запускалась с хостом, и добавить те же пулы, что и у вашего контроллера домена, в NTP сервер.
Затем для каждой виртуальной машины, которая является членом домена, вам необходимо включить в опциях VMware Tools синхронизацию времени между гостевой машиной и хостом.
вы справились с проблемой в краткосрочной перспективе, но основная проблема все еще остается, так как вы не решили реальную проблему и вызвали инфраструктурную Security – проблему
Проблема
Ваши клиенты Linux не могут подключиться к AD после перезагрузки
Причина
Когда используется winbind, клиент, пытающийся подключиться к AD, должен быть синхронизирован с временем AD, отличаясь не более чем на 5 минут.
Ваше решение не полностью работает, потому что
Решение, которое вы предоставили, работает только при установленном vmtools, иначе эта проблема повторяется, так как ВМ не может получать время от своего хоста.
Проблема безопасности вызвана
Указывая AD и хост ESXi непосредственно на общедоступные NTP, у вас возникнет проблема безопасности, что не рекомендуется Microsoft или VMware.
Я бы предложил установить NTP сервер и указать все AD и хосты ESX на внутренний NTP сервер, а если у любых клиентов нет vmtools, вы можете связать их с внутренним NTP.
Ответ или решение
Учитывая представленный сценарий и сложность проблемы, связанной с автоматическим запуском службы winbind в Ubuntu 18.04 после перезагрузки, а также ошибки "clock skew too great", давайте проанализируем ситуацию и предложим стратегические решения.
Проблема
На вашем виртуальном сервере,Hosted в ESXi 6.7, служба winbind не запускается автоматически при перезагрузке системы. Запись в логах сообщает об ошибке "clock skew too great". Это связано с тем, что время на клиенте (виртуальной машине) существенно отличается от времени на контроллере домена Active Directory.
Причины возникновения проблемы
-
Неправильная синхронизация времени: Виртуальные машины должны быть синхронизированы с временем контроллера домена (DC). Если разница во времени превышает 5 минут, аутентификация Kerberos не будет осуществляться, что приводит к сбоям в работе winbind.
-
Настройка NTP: Часто виртуальные машины на ESXi не используются для синхронизации времени с внутренними NTP-серверами. Это приводит к тому, что при старте они оказываются с неправильным временем.
-
VMware Tools: Если VMware Tools не установлены или неправильно настроены, виртуальная машина не сможет автоматически синхронизировать свое время с гостевой ОС через хост.
Решения проблемы
Шаг 1: Настройка NTP на ESXi
Вам необходимо включить NTP-синхронизацию на хосте ESXi. Убедитесь, что ESXi настроен на использование надежного внутреннего NTP-сервера. Настройка должна быть выполнена следующим образом:
- Войдите в интерфейс управления ESXi.
- Перейдите в раздел "Configuration" -> "Time & Locale".
- Включите NTP Service и укажите внутренние NTP-серверы, соответствующие вашим доменным контроллерам.
Шаг 2: Настройка VMware Tools в виртуальной машине
Убедитесь, что VMware Tools установлены на вашей Ubuntu VM и включите синхронизацию времени:
- В интерфейсе управления ESXi выберите вашу виртуальную машину.
- Перейдите в "Edit Settings" и найдите опцию VMware Tools.
- Включите параметр "Synchronize guest time with host".
Шаг 3: Проверка конфигурации Chrony
Поскольку вы упомянули использование Chrony для синхронизации времени, убедитесь, что он правильно настроен на вашей Ubuntu-машине. Проверьте файл конфигурации /etc/chrony/chrony.conf
:
- Убедитесь, что вы используете правильные внутренние NTP-серверы (например, ваши DC) в настройках Chrony.
- После изменения конфигурации перезапустите сервис:
sudo systemctl restart chronyd
Шаг 4: Дополнительные рекомендации
-
Логи и диагностика: Для более глубокого анализа, проверяйте логи по следующим путям:
/var/log/syslog
/var/log/winbindd.log
-
Используйте системный таймер: Вы можете использовать системный таймер для автоматического перезапуска службы winbind, если он не запустился. Например, создайте юнит-файл в
/etc/systemd/system/winbind-restart.service
:
[Unit]
Description=Restart winbind if it fails
After=chronyd.service
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart winbind.service
[Install]
WantedBy=multi-user.target
Не забудьте активировать его:
sudo systemctl enable winbind-restart
Заключение
Синхронизация времени является критически важным компонентом для работы Active Directory и всех систем, подключенных к нему. Применение правильной настройки как на уровне виртуального хоста, так и на уровне гостевой ОС позволит вам избежать проблем с аутентификацией и обеспечит более стабильную работу winbind. Если проблема продолжает возникать, возможно, стоит рассмотреть возможность создания локального NTP-сервера, который можно будет использовать в качестве централизованного источника времени для всех ваших устройств.