Установка времени linux

Режимы работы NTP сервера/клиента

Клиент/сервер

Этот режим на сегодняшний день наиболее часто используется в сети Интернет. Схема работы – классическая. Клиент посылает запрос, на который в течение некоторого времени сервер присылает ответ. Настройка клиента производится с помощью директивы server в конфигурационном файле, где указывается DNS имя сервера времени.

Симметричный активный/пассивный режим

Этот режим используется в том случае, если производится синхронизация времени между большим количеством равноправных машин. Помимо того, что каждая машина синхронизируется с внешним источником, она также осуществляет синхронизацию со своими соседями (peer), выступая для них в качестве клиента и сервера времени. Поэтому даже если машина «потеряет» внешний источник, она все еще сможет получить точное время от своих соседей. Соседи могут работать в двух режимах – активном и пассивном. Работая в активном режиме, машина сама передает свое время всем машинам-соседям, перечисленным в секции peers конфигурационного файла ntp.conf. Если же в этой секции соседи не указаны, то считается, что машина работает в пассивном режиме. Для того чтобы злоумышленник не смог скомпрометировать другие машины, представившись в качестве активного источника, необходимо использовать аутентификацию.

Режим Broadcast

Этот режим рекомендуется использовать в тех случаях, когда малое количество серверов обслуживает большое количество клиентов. Работая в этом режиме, сервер периодически рассылает пакеты, используя широковещательный адрес подсети. Клиент, настроенный на синхронизацию таким способом, получает широковещательный пакет сервера и производит синхронизацию с сервером. Особенностью этого режима является то, что время доставляется в рамках одной подсети (ограничение broadcast-пакетов). Кроме того, для защиты от злоумышленников необходимо использовать аутентификацию.

Режим Multicast

Данный режим во многом похож на broadcast. Отличие заключается в том, что для доставки пакетов используются multicast-адреса сетей класса D адресного пространства IP-адресов. Для клиентов и серверов задается адрес multicast-группы, которую они используют для синхронизации времени. Это делает возможным синхронизацию групп машин, расположенных в различных подсетях, при условии, что соединяющие их маршрутизаторы поддерживают протокол IGMP и настроены на передачу группового трафика.

Режим Manycast

Этот режим является нововведением четвертой версии протокола NTP. Он подразумевает поиск клиентом среди своих сетевых соседей manycast-серверов, получение от каждого из них образцов времени (с использованием криптографии) и выбор на основании этих данных трех «лучших» manycast-серверов, с которыми клиент будет производить синхронизацию. В случае выхода из строя одного из серверов клиент автоматически обновляет свой список.

Для передачи образцов времени клиенты и серверы, работающие в manycast-режиме, используют адреса multicast-групп (сети класса D). Клиенты и серверы, использующие один и тот же адрес, формируют одну ассоциацию. Количество ассоциаций определяется количеством используемых multicast-адресов.

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

5.1 Отключаем панику NTP

Вносим в конец файла /etc/ntp.conf запись tinker panic 0

Делаем это на bash, потому что просто echo «tinker panic 0» >> /etc/ntp.conf система вероятнее всего отклонит

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

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

5.3

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

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

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

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

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

Usage

Basic tools and common usage.

Client

To start the ntp-client:

To view the status of the client:

To have the client start at boot:

ntpdate

This used to be the client, but its functionality is now moved into ntpd and ntp-client itself. It is purely to set the local time when started and then exits (not a service):

Server

The server is both a client, and server. If the setup can not access net early in init, use server only instead.

ntpd service

If ntpd is run as a service, the time will automatically synchronize as long as the difference between the local time and the time on the server is less than 1000s (~17 mins). So it is pretty common to adjust the time initially to whatever the server time is as a trusted source:

NoteIf ntpd is already running, it will not start a second time.

Add ntpd to the default runlevel to have the time synchronized automatically. There is no need to run a client when the service is running. In this case verify that ntp-client or ntpdate are not in any runlevels.

When it is confirmed the configuration is clear from ntp-client or ntpdate, add the ntpd service:

To monitor status of the server:

Настройка netfilter (iptables) для NTP сервера

Настроив работу сервера, неплохо было бы его защитить. Мы знаем, что сервер работает на 123/udp порту, при этом запросы так же отправляются с порта 123/udp. Ознакомившись со статьей, что такое netfilter и правила iptables и ознакомившись с практическими примерами iptables, можно создать правила фильтрации сетевого трафика:

ntp ~ # iptables-save
# типовые правила iptables для DNS
*filter
:INPUT DROP 
:FORWARD DROP 
:OUTPUT DROP 
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
# разрешить доступ локальной сети к NTP серверу:
-A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p udp -m udp --sport 32768:61000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 32768:61000 -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# разрешить доступ NTP серверу совершать исходящие запросы
-A OUTPUT -p udp -m udp --sport 123 --dport 123 -m conntrack --ctstate NEW -j ACCEPT
COMMIT

Это типовой пример! Для задания правил iptables под Ваши задачи и конфигурацию сети, необходимо понимать принцип работы netfilter в Linux, почитав вышеуказанные статьи.

Какое время бывает в Linux?

Для поддержания времени имеется в Linux есть команда date, и у неё есть множество других замечательных возможностей, о каких владельцы UNIX-систем могут и не догадываться. Серверные и системные часы должны указывать верное время. Время от времени часы на компьютере могут сбиваться по различным причинам, время сможет быть установлено изначально неправильно или неправильно выбран часовой пояс.

Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы настоящего времени или RTC — real time clock), которые работают даже при выключенном блоке кормления, на это у них есть батарейка на материнской плате. Другие программные, то есть часы (прибор для определения текущего времени суток и измерения продолжительности временных интервалов в единицах, меньших, чем одни сутки) операционной системы. Сведения этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операторной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.

В большинстве ситуации если компьютер работает под управлением операционной системой Windows показания аппаратных и программных часов сходят. В linux же чаще всего аппаратные часы настраивают по гринвичу (времени нулевого экватора), а программные по необходимому смещению для часового пояса где расположен сервер. Абсолютное большинство прог (приложений и сервисов) в своей работе опираются на показания системных (программных) часов.

Switching to ntpd

Though timesyncd is fine for most purposes, some applications that are very sensitive to even the slightest perturbations in time may be better served by ntpd, as it uses more sophisticated techniques to constantly and gradually keep the system time on track.

Before installing ntpd, we should turn off timesyncd:

Verify that timesyncd is off:

Look for in the output. This means has been stopped. We can now install the package with :

ntpd will be started automatically after install. You can query ntpd for status information to verify that everything is working:

is a query tool for ntpd. The flag asks for information about the NTP servers (or peers) ntpd has connected to. Your output will be slightly different, but should list the default Ubuntu pool servers plus a few others. Bear in mind that it can take a few minutes for ntpd to establish connections.

Время в Linux

Кратко расскажу, какое время существует в Linux и как его задать. В Linux, как и в другой ОС, существует 2 времени. Первые — аппаратные, иногда называемые Real Time Clock, сокращенно (RTC) (они же — часы BIOS) обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы — внутренние программные часы, которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы.

Дата и время операционной системы устанавливается при загрузке на основании значения аппаратных часов, а так же настроек часового пояса. Настройки часового пояса берутся из файла /etc/localtime. Данный файл — есть ссылка (но чаще — копия) одного из файлов в структуре каталога /usr/share/zoneinfo/.

Аппаратные часы Linux могут хранить время в формате UTC (аналог GMT), либо текущее территориальное время. Общая рекомендация в том, какое время устанавливать (?) следующая: если на компьютере установлено несколько ОС и одна из них — Windows, то необходимо использовать текущее время (т.к. Windows берет время из BIOS/CMOS и считает его локальным). Если используются только  операционные системы UNIX семейства, то желательно хранить время в BIOS в UTC формате.

После загрузки операционной системы, часы операционной системы и BIOS полностью независимы. Ядро системы раз в 11 секунд синхронизирует системные часы с аппаратными.

Через некоторое время между аппаратными и программными часами может быть разница в несколько секунд. Какие же часы содержат правильное время? Ни те, ни другие, пока мы не настроим синхронизацию времени.

Примечание:

Ядро Linux’а всегда хранит и вычисляет время, как число секунд прошедших с полночи 1-го января 1970 года, в независимости от того, установлены ваши часы на локальное или всемирное время. Преобразование в локальное время производится в процессе запроса.

Поскольку количество секунд с 1-го января 1970 года всемирного времени сохраняется как знаковое 32-битное целое (это справедливо для Linux/Intel систем), ваши часы перестанут работать где-то в 2038 году. Linux не имеет проблемы 2000-го года, но имеет проблему 2038 года. К счастью, к тому времени все linux’ы будут запущены на 64-х разрядных системах. 64-х битное целое будет содержать наши часы приблизительно до 292271-миллионного года.

Install ntpd Daemon

On Debian, Ubuntu, Zorin, Mint and other distros based on Debian or Ubuntu, run:

These distros will start ntpd immediately and then automatically launch it at every boot; no further action is required from you.

On Fedora, install with:

On CentOS, run:

For Arch Linux, use:

And on openSUSE, enter:

Afterward, enable the service to launch at boot and then start it:

On other distros that run without systemd, you may have to run these commands instead:

or whatever is equivalent for your OS.

If you get an error that ntpd doesn’t exist, replace “ntpd” with “ntp” in the above commands. Some distributions name ntpd daemon service files differently.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *