Записки IT специалиста
Записки IT специалиста
Мы уже неоднократно поднимали вопрос важности синхронизации времени, особенно сейчас, когда даже в небольших сетях появляется все больше и больше служб критичных к точному времени. Это криптография, системы контроля доступа и видеонаблюдения, кассовые узлы. В этих условиях точности обычных аппаратных часов начинает не хватать и хотя во многих случаях допускается разбег времени не более пяти минут, лучше не ждать пока это случится (как всегда в самый неподходящий момент), а обеспечить свою инфраструктуру собственным сервером времени. В данной статье мы рассмотрим, как это сделать в системах основанных на Debian.
Перед установкой сервера времени убедитесь. что в вашей системе правильно настроен часовой пояс, проверить и изменить его можно командой:
Данную и все последующие команды следует выполнять с правами суперпользователя.
После установки часового пояса обновите список пакетов и установите пакет NTP-сервера:
Пакет работоспособен сразу после установки и конфигурация из коробки достаточно актуальна, но лучше внести в нее некоторые дополнительные штрихи. Для изменения настроек откроем файл /etc/ntp.conf.
Начнем с вышестоящих серверов для синхронизации времени, рекомендуется выбирать ближайшие к вам сервера, их адреса можно получить на сайте ntppool.org. Затем найдем в конфигурационном файле следующую секцию:
И заменим значения на следующие:
В нашем примере приведены настройки для использования российских серверов времени. Ниже зададим настройку для синхронизации с аппаратными часами на случай отсутствия синхронизации с серверами в интернет:
Первая строка задает адрес аппаратных часов — 127.127.1.0, вторая указывает приоритет — stratum — он выбран таким образом, чтобы при наличии интернета NTP-сервер не синхронизировался с аппаратными часами. У серверов входящих в пулы ntp.org значение stratum равно двум.
Затем перейдем к списку контроля доступа, который состоит из сетевых адресов отсортированных по возрастанию адресов и масок. Запись по умолчанию — default соответствует адресу 0.0.0.0 с маской 0.0.0.0, если в записи не указана маска, то автоматически подставляется значение 255.255.255.255, что соответствует конечному хосту.
Кроме адресов строки списка содержат флаги, флаги указывают на те или иные ограничения, если строка не содержит флагов — это означает полный доступ к серверу. По умолчанию список контроля доступа, следующий:
Разберем его подробнее. Первые две строки задают значения по умолчанию, т.е. для любых клиентов, в сетях IPv4 и IPv6:
Перечисленные флаги имеют значения:
- kod — отправка клиенту, посылающему нежелательные запросы, пакета KoD (Kiss O’Death), получатель такого пакета обязан выполнить предписанную ему проверку и изменить свое поведение, в противном случае такой клиент будет отключен от сервера.
- notrap — запрет приема управляющих сообщений
- nomodify — запрет приема сообщений, изменяющих состояние сервера
- nopeer — запрет установки одноранговых отношений с другими NTP-серверами
- noquery — запрет любых запросов для синхронизации времени поступающих с других серверов
- limited — запрет обслуживания, если интервал между пакетами от клиента превышает разрешенные значения
Под ними расположены строки, дающие полный доступ к серверу локальной системе:
Отсутствие маски указывает на то, что это конечный узел, а отсутствие флагов предоставляет полный доступ.
При необходимости мы можем добавить свои записи, скажем для клиентов собственной сети с меньшим числом ограничений:
Если нужно запретить доступ к серверу времени, то следует использовать флаг ignore. Допустим, мы хотим запретить доступ для всех клиентов доменной сети, кроме эмулятора PDC:
Расположение строк не имеет значения, так как при запуске сервера все адреса будут отсортированы по возрастанию адреса/маски.
После внесения изменений следует перезапустить службу:
Проверить ее статус можно командой:
Состояние синхронизации с вышестоящими серверами можно узнать командой:
Которая выдаст нам следующий вывод:
На что следует обратить внимание? Прежде всего на символы слева от адреса сервера:
- * — сервер выбран для синхронизации
- + — сервер пригодный для синхронизации
- — — синхронизация с этим сервером не рекомендуется
- x — сервер недоступен
Затем на колонку refid — показывающее вышестоящий сервер синхронизации и колонку offset, которое показывает расхождение ваших часов с эталоном, при положительном значении наши часы спешат, при отрицательном отстают.
В колонке st указывается stratum — приоритет сервера, а delay содержит задержку ответа от сервера. Как видим, в нашем случае служба времени выбрала для синхронизации сервер с приоритетом 1, который синхронизируется от GPS-часов, несмотря на более высокий уровень задержки при работе с ним.
Ну и не забудьте разрешить доступ к вашему NTP-серверу в брандмауэре, добавив в правила iptables строку:
При необходимости можно ограничить доступ сетевым интерфейсом:
Как видим, настроить собственный сервер времени очень и очень просто, можно просто установить пакет и работать. Но гораздо лучше разобраться с настройками, хотя бы на базовом уровне, после чего для вас конфигурация NTP перестанет быть «китайской грамотой» и вы будете понимать, как именно работает ваш сервер.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Как мне настроить локальный NTP-сервер?
Я установил NTP-сервер на Ubuntu Server 10.04, используя:
Демон NTP, кажется, работает и слушает порт 123.
Однако я не смог получить время с другой машины:
Есть ли какие-либо необходимые конфигурации, чтобы сделать?
HOWTO: Настройка NTP-сервера
В этом руководстве описывается, как настроить компьютер в качестве локального сервера протокола сетевого времени (NTP) и / или как использовать демон NTP для регулярного поддержания точного системного времени.
Что такое NTP?
Сетевой протокол времени (NTP) — это протокол, разработанный для точной синхронизации локальных часов с сетевыми серверами времени. Сеть серверов времени NTP настроена иерархически, так что любой пользователь может войти в систему как сервер на некотором уровне (более подробную информацию см. На странице Википедии).
Иерархия NTP разделена на разные уровни, называемые тактовыми слоями. Самый точный уровень, Stratum 0, зарезервирован для атомных часов и т. Д. Следующий уровень, Stratum 1, обычно используется сетевыми машинами, локально подключенными к часам Stratum 0. Stratum 2 . 15 — это машины NTP, которые, в свою очередь, подключены к часам более низкого уровня и друг другу.
В этом руководстве описывается, как точно синхронизировать данные с машинами Stratum 1 и 2 и как можно точнее поддерживать системные часы в течение дня. Также включены разделы о том, как разрешить вашей машине работать в качестве сервера Stratum 2/3 для других машин в вашей локальной сети.
Должен ли я сделать NTP-сервер?
Нет . абсолютно нет! Если вы удовлетворены тем, что часы в вашей сети имеют какое-то неизвестное отличие от стандартного времени (и друг друга), вам не нужно настраивать NTP-сервер. Я установил один на своем ноутбуке, чтобы синхронизировать несколько машин в локальной сети в течение <1 мс для эксперимента по биоинженерии. Кроме того, существуют различные другие преимущества, которые описаны ниже.
Мотивация:
Как правило, немодифицированные блоки Ubuntu используют ntpdate ( /usr/sbin/ntpdate ) для периодической синхронизации часов с некоторым внешним сервером времени. Этот подход синхронизирует часы с разрешением курса (обычно один раз в день).
Компьютерные часы несовершенны и будут дрейфовать от (правильного) сервера времени в течение дня. Кроме того, скорости дрейфа в часах разных компьютеров различаются, так что к концу дня могут существовать значительные различия между разными локально сетевыми машинами, которые могут мешать определенным операциям (например, когда-либо возникают жалобы на make-файл при перемещении исходного кода среди разные машины?).
Можно запустить демон NTP локально на компьютере в вашей сети. Это имеет несколько преимуществ: во-первых, демон NTP постепенно «изучает» скорость дрейфа вашего локального компьютера и может скорректировать ее в течение дня. Синхронизация с серверами времени верхнего уровня происходит несколько раз в день, и одновременно можно использовать много разных серверов времени, чтобы сделать синхронизацию более точной. Таким образом, демон NTP действует как клиент точного времени, сохраняя ваши системные часы как можно ближе к стандартному времени.
Помимо поддержания точных системных часов, демон NTP позволяет машине в вашей сети (если вы хотите) работать в качестве сервера времени NTP. Это позволит очень быстро и точно синхронизировать другие машины в вашей локальной сети с вашим сервером времени в локальной сети, поскольку задержка в сети сведена к минимуму. Таким образом, различия в тактах между машинами в вашей сети сводятся к минимуму. Mac и даже Windows-боксы также могут синхронизироваться с NTP-сервером, если вы его настроите.
Существуют и другие, менее личные мотивы для настройки машины в качестве NTP-сервера. Во-первых, это может снизить нагрузку на NTP-серверы более высокого уровня, поскольку другие машины в вашей локальной сети могут синхронизироваться с локально установленным сервером времени. Кроме того, ntpdate устарела в пользу использования флага -q для ntpd (который имитирует его функциональность). Таким образом, даже если вы не хотите постоянно запускать ntpd в фоновом режиме, ntpdate в конечном итоге будет заменен на ntpd, так что вы можете захотеть ознакомиться с ним сейчас
Как поддерживать точные системные часы с помощью ntpd
- Установите демон NTP
Сначала установите демон NTP (ntpd):
Как упоминалось ранее, ntpd может действовать как клиент (синхронизировать системное время) и как сервер (обеспечивая точное время для других машин).
При желании вы также можете удалить предыдущую (устаревшую) программу синхронизации времени, ntpdate. Возможно, будет разумнее сделать это после того, как у вас работает ntpd
- Настройте демона правильно
Файл конфигурации для ntpd находится по адресу /etc/ntp.conf . Файл Ubuntu по умолчанию, вероятно, требует некоторой модификации для оптимальной производительности.
Первый раздел, который вы можете изменить, — это список серверов, с которыми нужно синхронизироваться. Раздел по умолчанию, вероятно, выглядит следующим образом:
Чтобы получить максимально точное время, предпочтительно связываться с несколькими различными NTP-серверами и держать их как можно ближе к вашему физическому местоположению. В сети есть различные списки серверов, вероятно, лучший из них находится здесь. Есть некоторые споры о правильном количестве серверов для использования. Один лучше, чем два, и три или более, вероятно, хорошая идея, если вы не слишком перегружены. Ниже приведен пример нескольких серверов времени, которые я использовал:
Найдя несколько хороших серверов, добавьте их в список, указав ‘iburst’ наиболее перспективный. Например:
Это заставит ntpd очень быстро синхронизироваться с этим сервером после запуска. В противном случае ntpd будет медленно стремиться к согласию со списком серверов (как это характерно), и может потребоваться 15-20 минут для достаточно хорошей синхронизации, чтобы действовать как сервер времени для остальной части вашей сети.
Кроме того, добавьте несколько дополнительных строк в конец списка серверов, чтобы указать текущее местное время по умолчанию, если вы временно потеряете подключение к Интернету:
Это предотвратит любую неприятность, если вы запускаете ntpd на ноутбуке или другой машине с периодическими периодами отключения от Интернета.
В общем, список серверов должен выглядеть примерно так (это мое, ваши серверы, вероятно, будут другими):
- Убедитесь, что конфигурация работает
Теперь, когда у вас есть правильный список серверов в вашем /etc/ntp.conf файле, пришло время запустить демон и посмотреть, правильно ли вы синхронизируете! Убедитесь, что у вас есть активное подключение к Интернету, а затем запустите:
Далее, просмотрите системный журнал, чтобы увидеть, синхронизируете ли вы с сервером времени:
Примерно через 10-15 секунд (или до 15-20 минут, если вы забыли поставить «iburst» после вашего любимого сервера), вы должны увидеть что-то вроде следующего в системном журнале:
Если это сообщение не приходит, вы еще не синхронизированы с сетью NTP-сервера. Проверьте список пиров NTP, с которыми вы общаетесь, используя следующее:
Если поля ‘delay’, ‘offset’ и ‘jitter’ не равны нулю и вы не синхронизированы, это, вероятно, означает, что вам просто нужно подождать некоторое время. Еще раз проверьте, что вы вставили аргумент «iburst» в свой список серверов! Мои коллеги, для справки, выглядят примерно так:
- Поделиться! (необязательный)
Когда ntpd запущен и синхронизирован с выбранными вами серверами времени, вы можете настроить его для работы в качестве сервера времени для других машин. Для этого добавьте раздел, подобный следующему /etc/ntp.conf :
- Синхронизировать! (необязательный)
После того, как вы настроили NTP-сервер, используя шаги 1-4, вы можете синхронизировать другие машины в вашей сети с вашим сервером различными способами. Я обрисую пару из них ниже:
Если у вас установлен ntpd на другом компьютере, вы можете использовать свой первый сервер в списке серверов вашего файла ntp.conf или один раз синхронизировать с параметром -q, как показано ниже:
Если у вас по-прежнему установлен ntpdate на другом компьютере, вы можете использовать его для синхронизации с вашим сервером следующим образом:
Примечание: если вы запускаете ntpd на машине и по какой-то причине по-прежнему хотите использовать ntpdate для установки времени, вы должны использовать опцию -u.
Машины Windows используют упрощенную версию NTP, называемую Simple Network Time Protocol (SNTP), и могут синхронизироваться с NTP-серверами. Чтобы выполнить синхронизацию с вашим новым сервером, дважды щелкните по времени и перейдите на вкладку «Интернет-время». Введите IP-адрес вашего сервера в поле «Сервер». Я приложил скриншот синхронизации Windows XP с сервером времени локальной сети, если кому-то будет интересно.
Это оно! Весь процесс не сложен, но может сбить с толку того, кто раньше не имел дело с сетью NTP. Надеюсь, это поможет! Дайте мне знать, если у вас возникнут проблемы с настройкой вашего сервера.
Синхронизация времени через Интернет в Ubuntu
В нашем мире все относительно. И время не исключение. Если точное время наручных часов зависит от их стоимости и производителя, то время на компьютере зависит, в первую очередь, от частоты синхронизации с серверами точного времени.
Автоматическая синхронизация точного времени с сервером расположенным в Интернете — это хороший способ держать электронные часы ОС всегда «подведенными». Благодаря этому на вашем компьютере часы будут показывать всегда актуальное время.
Как работает синхронизация времени через Интернет?
Синхронизация времени производится посредством специального протокола передачи данных — NTP (Network Time Protocol). Этот протокол включает в себя набор сложных алгоритмов, которые позволяют с большой точностью синхронизировать время (до тысячных миллисекунд расхождения).
Есть более упрощенная версия этого протокола — SNTP (Simple Network Time Protocol), который используется в сетях, где не требуется высокая точность синхронизации (до 1 сек. расхождения).
Вся модель синхронизации времени NTP выглядит в виде дерева. В «кроне» этого дерева находятся «первичные сервера». Таких серверов во всем мире несколько штук. На них чаще всего установлены атомные часы и другие дорогостоящие хронометры. Синхронизировать время с «первичными» серверами у Вас не получится либо из-за их большой загруженности, либо из-за ограничения самими серверами.
«Вторичные» сервера синхронизируются с серверами первого уровня посредством протокола NTP. Расхождение по времени между ними достигает порядка 20 миллисекунд. Таких серверов значительно больше и поэтому целесообразней настраивать синхронизацию именно с ними.
После этого могут идти сервера третьего, четвертого уровня и т. д., к которым чаще всего относятся сервера синхронизации времени различных провайдеров и других IT-компаний.
Настройка синхронизации времени в Linux Ubuntu
По-умолчанию в операционной системе Ubuntu, начиная с версии 9.10, время синхронизируется автоматически при каждом запуске ОС. Но не лишнем будет это проверить и убедится в правильности работы синхронизации.
Чтобы синхронизировать время в Ubuntu нам нужно:
- Установить пакет синхронизации времени ntp:
- ntp1.imvp.ru
- ntp.psn.ru
- time.nist.gov
- pool.ntp.org
- ru.pool.ntp.org
Обратите внимание на кавычки. Такое написание правильное.
После каждого включения компьютера ваше время будет синхронизировано через Интернет и всегда будет актуальным. Если есть необходимость синхронизировать время вручную, то делается это командой:
В качестве сервера можно указать любой другой NTP-сервер или через пробел указать несколько серверов.
Большинство продавцов и торговых фирм, которые реализовывают терминалы сбора данных Casio, хваля залежалые модели, обязательно отмечают присутствие интерфейса Bluetooth. При этом они умалчивают, что этот терминал сбора данных не имеет Wi-Fi модуля, который более востребован в работе. Bluetooth больше подходит для связи с мобильным принтером для быстрой печати ценников, а не для передачи данных на сервер, что нужнее чаще.
При покупке терминала следует обратить на это внимание.
- Для чего нужен каждый каталог в Linux или структура директорий ОС Линукс
- Как убрать зеленую кайму у шрифта в Gimp?
- Network Access Protection – проблемы с NAP и Cisco
- Красивая раскладка клавиатуры в Ubuntu
- Как добавить Telnet-клиент в Windows 7
- Все установленные пакеты в Debian
- Основные команды Linux — Справочник команд Линукс
- Александр #
3 сентября, 18:07
Спасибо. Добавил в свой список “how-to”
доброго времени суток!
наскольо сам помню тему, параметр
ntpd_enable=»YES»
не отвечает за “Настраиваем автоматическую синхронизацию при каждой загрузке ОС”, если точнее, он отвечает за запуск демона ntpd, который сам себе достаточно умный и сам решает когда синхронизироваться…
в Ubuntu синхронизация времени как раз и происходит при поднятии сетевого интерфейса (см. файл /etc/network/if-up.d/ntpdate)…
при чём “дебиановцы” умные ребята,- запуск “нтпдейт” настроен таким образом, что, если в системе, будет установлен полный пакет “нтп”, “нтпдейт” не будет мешать работе “нтп”, более того он (“нтпдейт”) в своей работе будет использовать настройки “нтп”…
в чём разница между этими двумя пакетами?
“нтпдейт” просто утилита которая запускается, выполняет работу и уходит… её можно сравнить с таким поведением: Вы просыпаетесь утром, набираете на телефоне службу точного времени, подводите часы, если они отстают, и не вспоминаете про часы до следующего утра…
“нтп” это демон, процесс постоянно висящий в памяти и постоянно делающий работу… его можно описать так: Вы нанимаете рабочего, который каждые десять минут (к примеру) звонит в службу точного времени и подводит часы, при этом он ведёт журнал, в котором записывает насколько он каждый раз подвёл часы… благодаря журналу даже если у Вас отключат телефон (пропало соединение с серверами верхних уровней) работник (“нпт”) сможет и сам подводить часы…
у меня в “локалке” я настроил сервер времени используя “нпт”… он раздаёт точное время доменным контроллерам (на “оффтопике”)… моё ИМХО – в локалке такой сервер нужен, дома хватает и “нтпдейта”…
У меня Mint 9, в нем нет файла /etc/rc.conf, что делать чтобы автоматически при каждой загрузке ОС была синхронизация?
В rc.conf нет параметра “ntpd_enable” для РЕДАКТИРОВАНИЯ =)
Но есть параметр “exit” с параметром “0”. Прочитал закоменченную сопроводиловку в файле – ниче толком не понял )
Я так понимаю логично было бы добавить ntpd_enable=»YES» ДО “exit 0”.
Но шипко смущает фраза
>> … By default this script does nothing.
Таки надо “exit 1”?
ОС – Убунту 10.04 с последними обновлениями
x0r: наскольо сам помню тему, параметр ntpd_enable=»YES» не отвечает за “Настраиваем автоматическую синхронизацию при каждой загрузке ОС”, если точнее, он отвечает за запуск демона ntpd, который сам себе достаточно умный и сам решает когда синхронизироваться…
Спасибо, за развернутый комментарий.
полезная статья! только для камчатски вроде как бесполезная :))
зы: почаще бы обновлялся раздел статей на вашем сайте;)
Спасибо за столь разжеванную статью. Очень полезная функция. Жаль, что она не встроена в саму утилиту настройки времени как в винде…
root@desktop:/home/pupkin# crontab -l
# m h dom mon dow command
* */8 * * * ntpdate ru.pool.ntp.org
ntpdate есть из коробки.
Очень тупой вопрос. А разве время не синхронизируется само?
Замечания по оговоркам в статье:
1) Тысячная миллисекунды называется микросекундой
2) Первичные сервера находятся не в КРОНЕ , а в КОРНЕ дерева серверов.
Настройки времени в Linux
В современных дистрибутивов с systemd служба синхронизации времени уже присутствует в дефолтной установке и реализуется через systemd-timesyncd. Эта служба призвана заменить ntpd, она интегрирована в systemd, поэтому для автоматической синхронизации времени рекомендуется использовать именно ее.
Проверим, как в вашем дистрибутиве настроена служба обновления времени, используя утилиту timedatectl, которая рекомендуется использовать вместо морально устаревшей tzdata:
Синхронизация времени уже включена и работает через timesyncd. Посмотрим ее настрой и статус:
Мы видим что синхронизация времени через интернет уже настроена и работает. Время обновляется с сервера ntp.ubuntu.com. При желании вы можете изменить сервер времени в файле /etc/systemd/timesyncd.conf.
Установка, настройка и изменение часового пояса
Команды тестировались для Ubuntu 20.04.1 LTS.
Настройка сервера времени NTP (ntpd)
NTP (Network Time Protocol — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов компьютера с серверами точного времени. NTP, основан на алгоритме Марзулло, использует для своей работы протокол UDP и учитывает время передачи.
ntpd — (Network Time Protocol (NTP) daemon) для FreeBSD.
Поэтому прописывать непосредственно 0.ubuntu.pool.ntp.org бесполезно так как он попадет по правило по умолчанию restrict default. Который в нашем случае все запрещает. Обойти это можно или прописав все IP данного пула в restrict или убрать restrict default ignore и использовать для защиты сервера времени фаервол.
Запускаем ntpd и командой sockstat смотрим процессы ntpd:
Утилитой ntpq можно проверить какие сервера доступны для синхронизации:
Проверочный запрос к нашему серверу утилитой Консольная утилита ntpdate для синхронизации времени. -q указывает не изменять время; -d отладочный режим без изменения времени
Трассировка NTP маршрута утилитой ntptrace
Настройка клиентов сервера времени
Если вам нужно только синхронизировать ваши часы при загрузке машины, вы можете воспользоваться утилитой Консольная утилита ntpdate для синхронизации времени. Это может подойти для некоторых настольных машин, которые часто перезагружаются и только требуют изредка синхронизироваться, но на большинстве машин должен работать ntpd.
Правим /etc/ntp.conf для того чтобы синхронизация производилась с нашим сервером.
и запустить службу, предварительно настроив ./etc/ntp.conf(см. выше)
periodic.conf status-ntpd
FreeBSD: 480.status-ntpd — выводит список известных NTP-серверу peer. Если стабильность работы NTP сервера важна — можно включить.
ntpd Fedora, Debian
Параметры запуска демона в следующем конфигурационном файле:
Параметр -g позволит синхронизировать часы, даже если образовалась очень большая разница во времени.