MyTetra Share
Делитесь знаниями!
Синхронизация времени
Время создания: 25.04.2013 22:48
Раздел: root - Linux
Запись: Yurons/mytetra/master/base/1366919304enpulze9o5/text.html на raw.github.com

Сетевой сервис синхронизации времени NTP Centos Ubuntu. Служба времени Linux.

Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью.

 

В Linux существует два понятия времени - аппаратное(время в биосе) и системное(с учетом часового пояса). Аппаратное время можно узнать командой hwclock (запускается от имени суперпользователя), где также показывается отставание аппаратных часов от системных(команда date).

[root@centos s]# hwclock

Втр 13 Сен 2011 03:48:49 -1.467155 секунд

 

Но при решении некоторых задач иногда бывает необходимо записать текущее значение аппаратных часов в системные, для этого используется команда hwclock с опцией --systohc, а если нужно сделать наоборот - записать значение системных часов в аппаратные команда запускается с опцией --hctosys.

[root@centos s]# hwclock --systohc

[root@centos s]# hwclock --hctosys

 

Если использовать команду date без каких либо опций, то выводится информация в след виде, где вызывают вопрос только 3 буквы - MSD - это летнее время в Москве (наступит осень и будет отображаться MSK).

[root@centos s]# date

Втр Сен 13 00:00:38 MSD 2011

 

MSK отличается в + от времени по гринвичу на 3 часа, а MSD на 4 .

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

 

Устанавливается время командой date с опцией s, от слова set.

[root@centos s]# date -s 19:10

Втр Сен 13 19:10:00 MSD 2011

 

Но откуда операционная система знает, в каком регионе в мы живем ? По какому времени ходят системные часы ? Реально они идут по гринвичу, а система смотрит на наличие файла /etc/localtime

[root@centos s]# file /etc/localtime

/etc/localtime: timezone data, version 2, 12 gmt time flags, 12 std time flags,no leap seconds, 129 transition times, 12 abbreviation chars

 

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

[root@centos s]# cp /usr/share/zoneinfo/America/New_York /etc/localtime

cp: переписать «/etc/localtime»? y

[root@centos s]# date

Втр Сен 13 11:19:37 EDT 2011

 

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

 

Меняя содержимое этого файла, мы меняем все значения, отвечающие за вывод времени, но при этом на системное время мы влияния не оказываем, т.к. оно "ходит" по Гринвичу.

 

Существует два стандарта времени GMT - Greenwich Mean Time - астрономическое (Среднее солнечное) время меридиана, проходящего через прежнее место расположения Гринвичской королевской обсерватории и UTC - всемирное координированное время, в сущности являющиеся одним и тем же. UTC появилось после того как в США возник вопрос "а по какой из 6ти деревень Гринвич, находящихся в разных штатах проходит Гривический мередиан". Чтобы не обижать национальные чувства американцев, было применено понятие UTC =))))))

Автоматическая синхронизация времени по протоколу NTP - Network Time Protocol.

 

Основной параметр серверов времени - Stratum - уровень сервера, сервера с этим параметром, равным 0 не общаются с клиентами, а позволяют синхронизировать время только других серверов синхронизации с уровенем 1 и ниже.

 

В Линукс есть программка ntpdate, с помощью которой можно синхронизировать системное время с сервером точного времени, предварительно указав при запуске программы(от roota)

[root@centos s]# ntpdate time.nist.gov

12 Sep 16:37:10 ntpdate[7743]: step time server 192.43.244.18 offset -68520.369071 sec

 

Если повторять синхронизацию постоянно, то все равно будут отклонения в несколько микросекунд.

 

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

[root@centos s]# crontab -e

0 * * * * /usr/sbin/ntpdate сервера NTP

 

Эта запись значит что каждый час будет запускаться синхронизация с сервером времени.(0.00 1.00 2.00 и тд)

 

Но можно все сделать гораздо удобнее, установив программу NTP

[root@centos s]# yum install ntp - для Centos

$ sudo apt-get install ntp - для UBUNTU

Теперь настроим программу NTP.

 

Файл конфигурации:

 

/etc/ntp.conf

 

server ntp.ubuntu.com

 

server time.nist.gov

 

server europe.pool.ntp.org

 

Разрешение доступа из локальной сети:

 

По умолчанию ваш сервер NTP будет доступен всем хостам в Интернет. Параметр restrict в

 

файле /etc/ntp.conf позволяет вам контролировать, какие машины могут обращаться к вашему

 

серверу.

 

Если вы хотите запретить всем машинам обращаться к вашему серверу NTP, добавьте

 

следующую строку в файл /etc/ntp.conf:

 

restrict default ignore

 

Если вы хотите разрешить синхронизировать свои часы с вашим сервером только машинам в

 

вашей сети, но запретить им настраивать сервер или быть равноправными участниками

 

синхронизации времени, то вместо указанной добавьте строчку

 

restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap

 

/etc/ntp.conf может содержать несколько директив restrict

 

restrict 10.0.0.0 mask 255.0.0.0 noquery

 

Логисервера:

 

/var/log/ntpstats/

 

Проверка запросов:

 

ntpq –p

 

Запуск сервера:

 

/etc/init.d/ntpd start или service ntpd start - для CentOS

 

/etc/init.d/ntp start или service ntp start - для Ubuntu.

 

* Опять же вводя команду узнать имя демона(ntp или ntpd) можно нажав кнопку TAB начав набирать имя сервиса.

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования