Контроллер домена на Ubuntu 18.04 — Синхронизация времени — NTP

Время — краеугольный камень всех «этих их интернетов». Контроллер домена на 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

  1. Требования

    ntpd >= 4.2.6 скомпилированный с параметрами —enable-ntpd-signd

  2. Устанавливаем пакет

    sudo apt install ntp
  3. Проверяем права на сокет

    Демон должен иметь права на чтение директории ntp_signd

    1. Ищем директорию ntp_signd

      sudo find / -name ntp_signd
      Контроллер домена на Ubuntu 18.04 - Синхронизация времени - ntp_signd

      Результат sudo find / -name ntp_signd

      В результате, мы видим что папка ntp_signd расположена в /var/lib/samba/ntp_signd

    2. Смотрим права на директорию

      ls -ld /var/lib/samba/ntp_signd

      Мы должны увидеть следующее:

      drwxr-x--- 2 root root 4096 сен 24 12:33 /var/lib/samba/ntp_signd
    3.  Настраиваем права на директорию

      1. Меняем группу владельца директории на ntp

        sudo chown root:ntp /var/lib/samba/ntp_signd/
      2.  Устанавливаем права на директорию 750

        Несмотря на то, что скорее всего изначально права на эту директорию выставлены 750, не лишним будет показать команду с помощью которой это можно сделать:

        sudo chmod 750 /var/lib/samba/ntp_signd/

        Данная команда, для директории /var/lib/samba/ntp_signd/ установит следующие права:
        Владелец — root — 7 — любые действия
        Группа владельцев — ntp — 5 — чтение и выполнение
        Для guest (гостя) — 0 — запрет на любые действия

    4. Проверяем права на директорию

      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

      Контроллер домена на Ubuntu 18.04 - Синхронизация времени - права на директорию ntp_signd

      Права на директорию ntp_signd

  4. Настраиваем файл 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

  5. При настройке NTP сервера в виртуальной среде

    1. Отключаем панику 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 система вероятнее всего отклонит

    2. Для чего нужна команда tinker panic 0

      Если ваш ntp сервер настраивается на виртуальной машине, то у него нету физических часов измеряющих время. Работа виртуальной машины по той или иной причине в любой момент может быть приостановлена и возобновлена спустя много часов. В таком случае, в момент обновления времени из интернета, если локальное время и время из интернета сильно различаются, ntpd запаникует и самовыпилится.

       

    3. Пункт 5.1.1.4 официальной документации

      В идеале, эталонное время по всему миру — одинаковое. Будучи синхронизированным однажды, между локальным и эталонным временем не должно появиться неожиданных различий. В связи с этим, NTP не обладает какими-либо механизмами для разрешения возникающей проблемы.

      Однако реакция ntpd будет зависеть от величины разницы между локальным и эталонным временем. При очень маленьком различии во времени, ntpd подкорректирует локальное время как и обычно. При маленьких и средних отклонениях, ntpd будет игнорировать эталонное время в течении небольшого промежутка. В последнем случае, локальные часы продолжат работать с тем временем, которое было на момент последней успешной синхронизации. Эталонное время, получаемое из вне, содержащее отклонение от локального — будет игнорироваться. При этом, постепенно, маленькие отклонения (намного меньше секунды), будут выравниваться, путем пошаговой подстройки локальных часов к эталонному времени. Средние же отклонения приведут к переустановке значения времени локальных часов на эталонное, без пошаговой подстройки. Огромные же отклонения будут проигнорированы и приведут к тому, что ntpd самовыпилится, будучи уверенным в том что в мире полном зла, творится что-то очень для него непонятное. Этот же алгоритм действий применяется при первом запуске ntpd после перезагрузки.

      1. Вывод

        Таким образом, на виртуальной машине, только что вышедшей из сна, даже после непродолжительного по человеческим меркам простоя, ntpd будет биться в истерике, что приведет к его преждевременной кончине. Без настройки tinker panic 0, однажды случившись, эта ситуация не разрешится без человеческого вмешательства.

    4. Отключаем синхронизацию времени с хостом

      У гипервизоров есть очень удобная и вне всяких сомнений нужная функция. Но настраивая контроллер домена на Ubuntu 18.04, помните! По дефолту, все виртуальные машины работающие на нём, получают от него время. Проблема в том, что гипервизор может например не находиться в домене, в котором находится ntp сервер. И может даже не быть подключен к внешнему источнику времени. В этом случае, он навяжет своё время ntp серверу расположенному на одной из его вирт машин. При следующей синхронизации времени, ntpd увидит что локальные часы и эталонное время отличаются например на 5-10 минут и у него случится припадок. Последствия которого вполне вероятно придется разгребать собственными ручками. Ниторт.

  6. Запускаем ntpd
    sudo ntpd

     

Text.ru - 100.00%

Related

Jupyter Notebook и Anaconda для удаленной разработки на отдельном Ubuntu Server, нужны для облегчения себе жизни. А так же чтобы не таскать с места на место свои проектики или не работать с jupyter notebook через удалённый рабочий стол. Еще распространена ситуация, когда у вас дома, в офисе, на даче. Continue reading

PostgreSQL 10 - Потоковая репликация с отработкой фейловера. Данная запись посвящается исключительно "Потоковой репликации", не архивированию, не логической репликации, не восстановлению из бэкапа. Тут описывается потоковая репликация, настройка одного мастера, одного слейва. Continue reading

Установка Zabbix 4.0 из репозитория на Ubuntu 18.04 происходит настолько просто что ненужно никаких статей вообще. Признаться честно, у кого у кого, а у Zabbix проблем с установкой нету от слова совсем. Особенно это касается апплаенса или же репозитория. Тем не менее необходимость. Continue reading

Таки уже больше чем пол года прошло с того момента как 1C научилась из коробки работать с PostgreSQL 10, да и вышла Ubuntu 18.04. Значит пришла пора обновить статью Установка PostgreSQL 9.6 для 1C на Ubuntu 16.04 и речь у нас пойдет о том, что установка PostgreSQL 10 для 1С на Ubuntu 18.04 хоть и имеет несколько. Continue reading

JOIN THE DISCUSSION