Время — краеугольный камень всех «этих их интернетов». Контроллер домена на Ubuntu 18.04 — не исключение. Если в вашей локальной сети, различие во времени между контроллером и устройствами, превышает 5 минут, у вас проблемы. AD использует время для разрешения конфликтов репликации. Какие-то рабочие станции не смогут авторизоваться в домене. Какие-то из устройств что были авторизованы в домене ранее, не смогут получить доступ к папкам внутри сети. Начнется хаос и беспорядки.
Немного теории
На сайте Samba как рекомендуемое лучшее решение указана следующая схема:
internet time server ^ | | PDC Emulator DC ^ ^ | | | | Other DC <----Workstation
Primary Domein Cotroller получает время из интернета, остальные DC получают время от PDC, рабочие станции получают время от любого DC в сети. Тем не менее, существует проблема с вендами. Клиенты венды, получают время исключительно от PDC и если PDC оффлайн, они перестают обновлять своё время. В то же время DC перестает обновлять своё время до тех пор, пока не включится PDC. Актуальным решением проблемы на данный момент будет настройка как PDC так и DC на получение времени с одинаковых внешних серверов. А в случае падения PDC без возможности включить его в строй в кратчайшие сроки — перенос роли PDC на другой DC внутри сети. Ясное дело что для реализации данного сценария в сети уже должны функционировать как PDC так и резервный DC.
Входящие в домен клиенты windows, синхронизируют своё время по протоколу NT5DC с AD-DC. Протокол NT5DC использует цифровые подписи. В случае когда Samba сервер и сервер времени расположен на одной машине, весь этот функционал может предоставить Samba. Так же можно перенастроить все машины на использование обычного NTP, но делать это не рекомендуется.
Контроллер домена на Ubuntu 18.04 — Синхронизация времени с помощью ntpd
-
Требования
ntpd >= 4.2.6 скомпилированный с параметрами —enable-ntpd-signd
-
Устанавливаем пакет
sudo apt install ntp
-
Проверяем права на сокет
Демон должен иметь права на чтение директории
ntp_signd
-
Ищем директорию ntp_signd
sudo find / -name ntp_signd
В результате, мы видим что папка ntp_signd расположена в
/var/lib/samba/ntp_signd
-
Смотрим права на директорию
ls -ld /var/lib/samba/ntp_signd
Мы должны увидеть следующее:
drwxr-x--- 2 root root 4096 сен 24 12:33 /var/lib/samba/ntp_signd
-
Настраиваем права на директорию
-
Меняем группу владельца директории на ntp
sudo chown root:ntp /var/lib/samba/ntp_signd/
-
Устанавливаем права на директорию 750
Несмотря на то, что скорее всего изначально права на эту директорию выставлены 750, не лишним будет показать команду с помощью которой это можно сделать:
sudo chmod 750 /var/lib/samba/ntp_signd/
Данная команда, для директории /var/lib/samba/ntp_signd/ установит следующие права:
Владелец — root — 7 — любые действия
Группа владельцев — ntp — 5 — чтение и выполнение
Для guest (гостя) — 0 — запрет на любые действия
-
-
Проверяем права на директорию
ls -ld /var/lib/samba/ntp_signd
В результате, после всех манипуляций, должно появиться следующее:
drwxr-x--- 2 root ntp 4096 сен 24 12:33 /var/lib/samba/ntp_signd
Права доступа: drwxr-x— , что означает 750
Владелец: root
Группа владельцев: ntp
-
-
Настраиваем файл ntpd.conf
Создаем файл ntpd.conf
sudo nano /etc/ntpd.conf
И вносим в него стандартные настройки:
# Local clock. Note that is not the "localhost" address! server 127.127.1.0 fudge 127.127.1.0 stratum 10 # Where to retrieve the time from server 0.pool.ntp.org iburst prefer server 1.pool.ntp.org iburst prefer server 2.pool.ntp.org iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp ntpsigndsocket /var/lib/samba/ntp_signd # Access control # Default restriction: Allow clients only to query the time restrict default kod nomodify notrap nopeer mssntp # No restrictions for "localhost" restrict 127.0.0.1 # Enable the time sources to only provide time to this host restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 2.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
Обращая внимание на строку
ntpsigndsocket /var/lib/samba/ntp_signd
, путь в ней должен быть такой же, как найденный в пункте 3.1. После проведенных манипуляций, сохраняем все командойCtrl+O
-
При настройке NTP сервера в виртуальной среде
-
Отключаем панику NTP
Вносим в конец файла /etc/ntp.conf запись tinker panic 0
sudo sh -c "echo 'tinker panic 0' >> /etc/ntp.conf"
Делаем это на bash, потому что просто
echo "tinker panic 0" >> /etc/ntp.conf
система вероятнее всего отклонит -
Для чего нужна команда tinker panic 0
Если ваш ntp сервер настраивается на виртуальной машине, то у него нету физических часов измеряющих время. Работа виртуальной машины по той или иной причине в любой момент может быть приостановлена и возобновлена спустя много часов. В таком случае, в момент обновления времени из интернета, если локальное время и время из интернета сильно различаются, ntpd запаникует и самовыпилится.
-
Пункт 5.1.1.4 официальной документации
В идеале, эталонное время по всему миру — одинаковое. Будучи синхронизированным однажды, между локальным и эталонным временем не должно появиться неожиданных различий. В связи с этим, NTP не обладает какими-либо механизмами для разрешения возникающей проблемы.
Однако реакция ntpd будет зависеть от величины разницы между локальным и эталонным временем. При очень маленьком различии во времени, ntpd подкорректирует локальное время как и обычно. При маленьких и средних отклонениях, ntpd будет игнорировать эталонное время в течении небольшого промежутка. В последнем случае, локальные часы продолжат работать с тем временем, которое было на момент последней успешной синхронизации. Эталонное время, получаемое из вне, содержащее отклонение от локального — будет игнорироваться. При этом, постепенно, маленькие отклонения (намного меньше секунды), будут выравниваться, путем пошаговой подстройки локальных часов к эталонному времени. Средние же отклонения приведут к переустановке значения времени локальных часов на эталонное, без пошаговой подстройки. Огромные же отклонения будут проигнорированы и приведут к тому, что ntpd самовыпилится, будучи уверенным в том что в мире полном зла, творится что-то очень для него непонятное. Этот же алгоритм действий применяется при первом запуске ntpd после перезагрузки.
-
Вывод
Таким образом, на виртуальной машине, только что вышедшей из сна, даже после непродолжительного по человеческим меркам простоя, ntpd будет биться в истерике, что приведет к его преждевременной кончине. Без настройки
tinker panic 0
, однажды случившись, эта ситуация не разрешится без человеческого вмешательства.
-
-
Отключаем синхронизацию времени с хостом
У гипервизоров есть очень удобная и вне всяких сомнений нужная функция. Но настраивая контроллер домена на Ubuntu 18.04, помните! По дефолту, все виртуальные машины работающие на нём, получают от него время. Проблема в том, что гипервизор может например не находиться в домене, в котором находится ntp сервер. И может даже не быть подключен к внешнему источнику времени. В этом случае, он навяжет своё время ntp серверу расположенному на одной из его вирт машин. При следующей синхронизации времени, ntpd увидит что локальные часы и эталонное время отличаются например на 5-10 минут и у него случится припадок. Последствия которого вполне вероятно придется разгребать собственными ручками. Ниторт.
-
- Запускаем ntpd
sudo ntpd
Vkontakte Comments
Default Comments