Синхронизация времени через Интернет в Ubuntu

Как работает синхронизация времени через Интернет?

Синхронизация времени производится посредством специального протокола передачи данных – NTP (Network Time Protocol). Этот протокол включает в себя набор сложных алгоритмов, которые позволяют с большой точностью синхронизировать время (до тысячных миллисекунд расхождения).


Есть более упрощенная версия этого протокола – SNTP (Simple Network Time Protocol), который используется в сетях, где не требуется высокая точность синхронизации (до 1 сек. расхождения).


Вся модель синхронизации времени NTP выглядит в виде дерева. В «кроне» этого дерева находятся «первичные сервера». Таких серверов во всем мире несколько штук. На них чаще всего установлены атомные часы и другие дорогостоящие хронометры. Синхронизировать время с «первичными» серверами у Вас не получится либо из-за их большой загруженности, либо из-за ограничения самими серверами.


Синхронизация времени через Интернет в Ubuntu

«Вторичные» сервера синхронизируются с серверами первого уровня посредством протокола NTP. Расхождение по времени между ними достигает порядка 20 миллисекунд. Таких серверов значительно больше и поэтому целесообразней настраивать синхронизацию именно с ними.


После этого могут идти сервера третьего, четвертого уровня и т. д., к которым чаще всего относятся сервера синхронизации времени различных провайдеров и других IT-компаний.

Настройка синхронизации времени в Linux Ubuntu

По-умолчанию в операционной системе Ubuntu, начиная с версии 9.10, время синхронизируется автоматически при каждом запуске ОС. Но не лишнем будет это проверить и убедится в правильности работы синхронизации.


Чтобы синхронизировать время в Ubuntu нам нужно:



  1. Установить пакет синхронизации времени ntp:
    sudo apt-get install ntp

  2. Добавить NTP-сервера, с которыми будем синхронизировать время. Для этого требуется открыть конфигурационный файл /etc/ntp.conf для редактирования:
    sudo gedit /etc/ntp.conf

    и в конце добавить все NTP-сервера из списка (полный перечень общедоступных NTP-серверов можно найти здесь):

    • ntp1.imvp.ru

    • ntp.psn.ru

    • time.nist.gov

    • pool.ntp.org

    • ru.pool.ntp.org


    Должно получится так:

    1. If you want to listen to time broadcasts on your local subnet, de-comment the
    2. next lines. Please do this only if you trust everybody on the network!
      #disable auth
      #broadcastclient

      server ru.pool.ntp.org
      server pool.ntp.org
      server time.nist.gov
      server ntp.psn.ru
      server ntp1.imvp.ru



  3. Настраиваем автоматическую синхронизацию при каждой загрузке ОС. Для этого открываем конфигурационный файл /etc/rc.conf:
    sudo gedit /etc/rc.conf

    в котором редактируем параметр ntpd_enable. Должно получиться так:

    ntpd_enable=»YES»

    Обратите внимание на кавычки. Такое написание правильное.




После каждого включения компьютера ваше время будет синхронизировано через Интернет и всегда будет актуальным. Если есть необходимость синхронизировать время вручную, то делается это командой:


sudo ntpdate time.nist.gov

В качестве сервера можно указать любой другой NTP-сервер или через пробел указать несколько серверов.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен

Комментарии (10)

  • Александр #

    Спасибо. Добавил в свой список “how-to”

  • x0r #

    доброго времени суток!

    наскольо сам помню тему, параметр
    ntpd_enable=»YES»
    не отвечает за “Настраиваем автоматическую синхронизацию при каждой загрузке ОС”, если точнее, он отвечает за запуск демона ntpd, который сам себе достаточно умный и сам решает когда синхронизироваться…

    в Ubuntu синхронизация времени как раз и происходит при поднятии сетевого интерфейса (см. файл /etc/network/if-up.d/ntpdate)…
    при чём “дебиановцы” умные ребята,- запуск “нтпдейт” настроен таким образом, что, если в системе, будет установлен полный пакет “нтп”, “нтпдейт” не будет мешать работе “нтп”, более того он (“нтпдейт”) в своей работе будет использовать настройки “нтп”…

    в чём разница между этими двумя пакетами?
    “нтпдейт” просто утилита которая запускается, выполняет работу и уходит… её можно сравнить с таким поведением: Вы просыпаетесь утром, набираете на телефоне службу точного времени, подводите часы, если они отстают, и не вспоминаете про часы до следующего утра…
    “нтп” это демон, процесс постоянно висящий в памяти и постоянно делающий работу… его можно описать так: Вы нанимаете рабочего, который каждые десять минут (к примеру) звонит в службу точного времени и подводит часы, при этом он ведёт журнал, в котором записывает насколько он каждый раз подвёл часы… благодаря журналу даже если у Вас отключат телефон (пропало соединение с серверами верхних уровней) работник (“нпт”) сможет и сам подводить часы…

    у меня в “локалке” я настроил сервер времени используя “нпт”… он раздаёт точное время доменным контроллерам (на “оффтопике”)… моё ИМХО – в локалке такой сервер нужен, дома хватает и “нтпдейта”…

    с уважением…

  • Boston #

    У меня 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 с последними обновлениями

  • Mut@NT #

    x0r: наскольо сам помню тему, параметр ntpd_enable=»YES» не отвечает за “Настраиваем автоматическую синхронизацию при каждой загрузке ОС”, если точнее, он отвечает за запуск демона ntpd, который сам себе достаточно умный и сам решает когда синхронизироваться…

    Спасибо, за развернутый комментарий.

  • KwadroBait #

    полезная статья! только для камчатски вроде как бесполезная :))

    зы: почаще бы обновлялся раздел статей на вашем сайте;)

  • Спасибо за столь разжеванную статью. Очень полезная функция. Жаль, что она не встроена в саму утилиту настройки времени как в винде…

  • Anonymus #

    root@desktop:/home/pupkin# crontab -l
    # m h dom mon dow command
    * */8 * * * ntpdate ru.pool.ntp.org
    ntpdate есть из коробки.

  • Очень тупой вопрос. А разве время не синхронизируется само?

  • Евгений #

    Замечания по оговоркам в статье:
    1) Тысячная миллисекунды называется микросекундой
    2) Первичные сервера находятся не в КРОНЕ, а в КОРНЕ дерева серверов.