NTP (Russian)

From ArchWiki

Jump to: navigation, search
Image:Tango-preferences-desktop-locale.png This page was marked to be translated.
If you understand both "original" and "target" languages of this page, please help complete the translation.
i18n
English
Русский

Статья описывает различные возможности синхронизации времени и даты вашей системы с удалённым сервером. Вначале описывается openntpd, лёгкое в использовании решение. Затем оригинальный ntpd.

OpenNTPD

Использование OpenNTPD вместо ntpd

OpenNTPD - это свободная и лёгкая в использовании реализация сетевого протокола времени (Network Time Protocol). Он предоставляет возможность синхронизировать локальные часы с удалёнными NTP-серверами и может сам действовать как NTP-сервер, настраивая время в локальной сети.

OpenNTPD в основном разрабатывается господином Хеннингом Брауэром (Henning Brauer) как часть проекта OpenBSD.

OpenNTPD - это новый способ реализации NTP протокола, который намного проще в настройке и использовании, чем ntpd.

Вначале надо установить пакет OpenNTPD, который доступен в репозитории [community].

pacman -S openntpd

После установки следует отредактировать файл /etc/ntpd.conf.

Конфигурация по умолчанию обычно приемлема, если всё, что вы хотите, - это синхронизировать локальный компьютер.

# $OpenBSD: ntpd.conf,v 1.7 2004/07/20 17:38:35 henning Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Адреса, которые прослушиваются (ntpd по умолчанию не слушает)
#listen on *
#listen on 127.0.0.1
#listen on ::1

# синхронизация с отдельным сервером
#server ntp.example.org

# использовать два выбранных наугад сервера из 8
# смотрите http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.org

Чтобы синхронизироваться с отдельным сервером, раскомментируйте директиву server:

server ntp.example.org

Директива "servers" работает так же, как и директива "server", однако, если доменное имя резолвится на несколько IP адресов, то синхронизация произойдёт со всеми из них. Сервер по умолчанию, "pool.ntp.org" работает и приемлем в большинстве случаев.

pool.ntp.org

Может быть использовано любое количество директив "server" или "servers".

Если вы хотите, чтобы OpenNTPD на вашем компьютере был также и сервером времени, просто откомментируйте и отредактируйте директиву "listen". Например:

listen on *

будет прослушивать все интерфейсы.

А

listen on 127.0.0.1

Будет слушать только интерфейс loopback.

Если вы хотите видеть статус вашей синхронизации, посмотрите в /var/log/daemon.log

ntp

pacman -S ntp

Настройка /etc/ntp.conf

Самая первая строка в вашем ntp.conf должна быть похожа на эту:

restrict default noquery notrust nomodify

По существу, она запрещает всем всё изменять. После этого, вам необходимо дать знать ntpd, кому вы хотите разрешить пользоваться вашим NTP-сервером. Здесь вы можете указать какие-то другие IP-адреса, которые должны с вами синхронизироваться. Например:

restrict 1.2.3.4
restrict 192.168.0.0 mask 255.255.255.0 nomodify

Это говорит ntpd о том, что 1.2.3.4 и все адреса из сети 192.168.0.0 могут синхронизироваться с вашим сервером, но всем им не разрешено что-либо изменять. Все другие IP-адреса в мире будут по-прежнему подчиняться дефолтным запретам (первая строка в файле ntp.conf).

Теперь необходимо указать сервера с уровнем достоверности (stratum) 2, с которыми наш сервер будет синхнизироваться. (Это просто примеры; используйте NTP-сервера, которые к вам ближе). Пожалуйста, поищите на этой странице сервера, близкие по расположению.

server ntp1.cs.wisc.edu
server ntp3.cs.wisc.edu
server ntp3.sf-bay.org

Если у вас нет серьезной причины не делать этого, лучшего всего использовать сервера pool.ntp.org. Можно выбрать альтернативный вариант из этого списка.

Если мы сейчас закончим настройку, мы никогда не сможем подключиться к серверу, потому что ответ от каждого из трёх серверов, перечисленных выше, никогда не сможет дойти до нашего сервера из-за дефолтных ограничений (пока мы не уменьшим эти ограничения, как сделали с адресом 127.0.0.1 и подсетью 192.168.0.).

Чтобы исправить это, вставьте в ntp.conf следующие строки:

restrict ntp1.cs.wisc.edu noquery nomodify
restrict ntp3.cs.wisc.edu noquery nomodify
restrict ntp3.sf-bay.org noquery nomodify

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

Единственная вещь, которую нам осталось сделать, - добавить drift-файл (который хранит информацию об отклонениях ваших часов) и log-файл.

driftfile /etc/ntp.drift
logfile /var/log/ntp.log

Полностью конфигурационный файл будет выглядеть примерно так:

# дефолтные ограничения
restrict default noquery notrust nomodify

# здесь переопределяем дефолтные ограничения
restrict 10.1.1.0 mask 255.255.255.0 nomodify

# публичные NTP-сервера для синхронизации(stratum 2)
server ntp1.cs.wisc.edu
server ntp3.cs.wisc.edu
server ntp3.sf-bay.org

restrict ntp1.cs.wisc.edu noquery nomodify
restrict ntp3.cs.wisc.edu noquery nomodify
restrict ntp3.sf-bay.org noquery nomodify

# NTP drift file - хранит информацию об отклонениях времени
driftfile /etc/ntp.drift

# NTP log
logfile /var/log/ntp.log

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

# дефолтные ограничения
restrict default noquery notrust nomodify

# разрешить полный доступ через loopback интерфейс
restrict 127.0.0.1

# публичные NTP-сервера для синхронизации (stratum 2)
server ntp1.cs.wisc.edu
server ntp3.cs.wisc.edu
server ntp3.sf-bay.org

restrict ntp1.cs.wisc.edu noquery nomodify
restrict ntp3.cs.wisc.edu noquery nomodify
restrict ntp3.sf-bay.org noquery nomodify

# NTP drift file - хранит информацию об отклонениях времени
driftfile /etc/ntp.drift

# NTP log file
logfile /var/log/ntp.log

... или если вас вообще не заботят ограничения, такой конфигурационный файл (заметьте, что в нем вообще нет ограничений, таким образом, нет необходимости уменьшать ограничения для 127.0.0.1 чтобы разрешить синхронизацию):

# публичные NTP-сервера для синхронизации (stratum 2)
server ntp1.cs.wisc.edu
server ntp3.cs.wisc.edu
server ntp3.sf-bay.org

# NTP drift file - хранит информацию об отклонениях времени
driftfile /etc/ntp.drift

# NTP log file
logfile /var/log/ntp.log


A Note about Security

You may wonder about all of the restrict lines. The reason for them is security. If you don't want a secure NTP server, don't add any restrict lines to your ntp.conf file. If you want a secure NTP server, start out by adding a default restrict that doesn't allow anything to contact your server, then add more (less restrictive) restrict lines - allowing certain addresses various access privilages.


/etc/rc.d/network file modification

One more thing that you may want to do. In some cases, your /etc/ntp.conf file may be overwritten by dhcp. To avoid this, edit the /etc/conf.d/dhcpcd file and add -N to the line that starts with 'dhcpcd -t 10'.


FYI: This was my experience/solution with setting the time.

On my system my /etc/conf.d/dhcpcd contains a single line:

    DHCPCD_ARGS="-t 30 -h $HOSTNAME"

I assume it needs to be changed to:

    DHCPCD_ARGS="-N -t 30 -h $HOSTNAME"

Some have suggested adding -R to preserve /etc/resolv.conf as well.

To fix Time use /etc/rc.local

To set the correct time; Set time and start ntpd at boot via /etc/rc.local


Relevant sections of /etc/rc.conf


    HARDWARECLOCK="UTC"
    TIMEZONE="US/Mountain"
    
    Network/ DHCP section:
       
    lo="lo 127.0.0.1"
    eth0="dhcp"
    INTERFACES=(lo eth0)
    
    Daemons subsection:
    
    DAEMONS=(syslog-ng hotplug !pcmcia network netfs !ntpd crond dbus hal alsa gdm)

This is my /etc/rc.local


    #!/bin/bash
    #
    # /etc/rc.local: Local multi-user startup script.
    #
    
    # Re-copy ntp.conf (was over written by dhcp)
    cp /root/CONFIG.BAK/ntp.conf.bac /etc/ntp.conf
    # I advise you keep your desired /etc/ntp.conf
    # OUTSIDE of /etc
    
    # Set time
    /usr/bin/ntpdate ntp.nasa.gov #Use any time server you like here
    
    # Start ntpd
    /etc/rc.d/ntpd start


And here is my /root/CONFIG.BAK/ntp.conf.bac (this is just a copy of the desired /etc/ntp.conf)


    # default restrictions
    restrict default noquery notrust nomodify
    
    # override the default restrictions here
    restrict 127.0.0.1 nomodify
    restrict 192.168.2.0 mask 255.255.255.0 nomodify
    
    # public NTP servers to sync with (all stratum 2)
    server ntp.nasa.gov #Use any time server you like here
    
    restrict ntp.nasa.gov noquery nomodify
    
    # NTP drift file - used to keep track of your system clocks
    driftfile /etc/ntp.drift
    
    # NTP log file
    logfile /var/log/ntp.log


Leave /etc/conf.d/dhcpcd at default. Mine is a single line and reads


    DHCPCD_ARGS="-t 30 -h $HOSTNAME"


With this configuration I get the correct time and ntpd running at boot. There may be a better way, but this worked for me. I hope it helps.


Updating your system immediately using ntpdate

It is recommended to add a line like the following to your /etc/rc.local file so when you boot your system, your time will be correct (use an NTP server close to your location).

/usr/bin/ntpdate ntp1.cs.wisc.edu

Running ntpdate when you boot up is a good idea because ntpd may take a long time to synchronize your local clock depending on how far off the time is. If your clock is synchronized when ntpd starts, then it's sole purpose is to keep it synchronized. To run ntpd at startup, add ntpd to the daemons section of the /etc/rc.conf file.

ntpd will work well if you have a connection to the internet all the time. If you are using dialup, you may just want to stick with using ntpdate via the command line.

Querying your NTP server using ntpq

There is a default restrict statement for the localhost that includes an ignore flag. Without overriding it (adding the line restrict 127.0.0.1) you will not be able to query your NTP server. If that's not a concern to you, then leave out the restrict line for your localhost. You will still be able to synchronize with your stratum 2 servers.

Внешние Ресурсы

Personal tools