Синхронизация времени через Интернет в 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) Первичные сервера находятся не в КРОНЕ, а в КОРНЕ дерева серверов.