Jump to content
enpa

ntpd - локальный сервер времени

Recommended Posts

Установка и настройка ntpd

ntpd - The ISC ntp suite is a collection of tools used to synchronize the system clock with remote NTP time servers and run/monitor local NTP servers.

1. Устанавливаем Entware-3x

2. Заходим через SSH в настройки роутера и прописываем:

~ # opkg update
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/keen3x
~ # opkg install ntp-utils
Installing ntp-utils (4.2.8p10-1) to root...
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/ntp-utils_4.2.8p10-1_mipsel-3x.ipk
Installing libcap (2.25-1) to root...
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/libcap_2.25-1_mipsel-3x.ipk
Configuring libcap.
Configuring ntp-utils.
~ # opkg install ntpd
Installing ntpd (4.2.8p10-1) to root...
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/ntpd_4.2.8p10-1_mipsel-3x.ipk
Configuring ntpd.
~ # opkg install ntp-keygen
Installing ntp-keygen (4.2.8p10-1) to root...
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/ntp-keygen_4.2.8p10-1_mipsel-3x.ipk
Installing libevent2-core (2.0.22-1) to root...
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/libevent2-core_2.0.22-1_mipsel-3x.ipk
Configuring libevent2-core.
Configuring ntp-keygen.
~ # opkg install ntpdate
Installing ntpdate (4.2.8p10-1) to root...
Downloading http://entware-3x.zyxmon.org/binaries/mipsel/ntpdate_4.2.8p10-1_mipsel-3x.ipk
Configuring ntpdate.

3. Смотрим путь установочных файлов ntpd:

~ # opkg files ntpd
Package ntpd (4.2.8p10-1) is installed on root and has the following files:
/opt/etc/ntp.conf
/opt/sbin/ntpd
/opt/sbin/ntpq
/opt/etc/init.d/S77ntpd
/opt/etc/hotplug.d/iface/20-ntpd

нам нужен /opt/etc/init.d/S77ntpd

4. Запускаем S77ntpd:

~ # /opt/etc/init.d/S77ntpd start
 Starting ntpd...              done.

5. Останавливаем S77ntpd:

~ # /opt/etc/init.d/S77ntpd stop
 Checking ntpd...              alive.
 Shutting down ntpd...              done.

6. Редактируем конфиг /opt/etc/ntp.conf:

Оригинальный конфиг:

# use a random selection of 4 public stratum 2 servers
# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers

#restrict default nomodify notrap noquery
#restrict default noquery

restrict 127.0.0.1

driftfile  /opt/var/lib/ntp/ntp.drift

server 0.openwrt.pool.ntp.org iburst
server 1.openwrt.pool.ntp.org iburst
server 2.openwrt.pool.ntp.org iburst
server 3.openwrt.pool.ntp.org iburst


# GPS(NMEA)+PPS
#server 127.127.20.0 minpoll 4 prefer
#fudge 127.127.20.0 flag3 1 flag2 0

# SMA PPS
#server 127.127.28.0 minpoll 4 prefer
#fudge 127.127.28.0 refid PPS flag3 1

#server 192.168.1.253

Меняем конфиг /opt/etc/ntp.conf:

# use a random selection of 4 public stratum 2 servers
# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers

#ignore
restrict default ignore

#permit
restrict 127.0.0.1
restrict 127.127.1.0

#restrict noquery notrap
restrict ntp2.stratum2.ru noquery notrap
restrict ntp3.stratum2.ru noquery notrap
restrict ntp4.stratum2.ru noquery notrap

#local host
restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap nopeer

#server ntp
server 127.127.1.0 iburst
server ntp2.stratum2.ru iburst prefer
server ntp3.stratum2.ru iburst 
server ntp4.stratum2.ru iburst

#block
restrict −4 default kod notrap nomodify nopeer noquery
restrict −6 default kod notrap nomodify nopeer noquery

#files
driftfile /opt/var/spool/ntp/ntp.drift
logfile /opt/share/log/ntp

7. Запускаем S77ntpd:

~ # /opt/etc/init.d/S77ntpd start
 Starting ntpd...              done.

8. Проверяем работу NTP-серверов:

~ # ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        .LOCL.           5 l   28   64    1    0.000    0.000   0.004
*n1.sigma.d6.hsd 88.147.254.228   2 u   16   64    1   24.394    3.070   2.151
+ns5.hsdn.org    255.233.161.33   2 u   18   64    1   22.982   -1.106   3.382
+91.226.136.155  35.122.95.18     2 u   18   64    1   27.698   -0.482   1.653
~ #

9, Проверяем работу локального NTP-сервера в клиенте, например Windows 10:

Жмем Win+R, в окне вводим timedate.cpl и далее вписываем ип адрес Домашней сети (Home VLAN)

 

2017-07-05_19-34-38.thumb.png.519f0b4ed1222822602c310a334c9002.png

2017-07-05_19-35-48.thumb.png.eb5e41c28bcb7763695e76957778d63f.png

Дополнительная информация по настройке - тут, тут2, тут3.

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

Edited by enpa
fix - путь для driftfile
  • Thanks 3
  • Upvote 1

Share this post


Link to post
Share on other sites

Эх, появись эта тема на пару месяцев раньше - мне, как опытному ламеру и сертифицированному гуманитарию, было бы куда легче настраивать ntpd: в сети слишком много инструкций и советов по решению проблем для очень разных систем и версий программы. С другой стороны, какая-то информация пригодилась и осела в голове и конфигах - может, смогу помочь обтесать инструкцию.

Для начала оговорюсь, что ставил и настраивал "голый" ntpd (без ntp-utils, ntp-keygen, и ntpdate) для Keenetic Ultra Rev.А (NDMS v2.08(AAGJ.0)C2, Entware-3x), т.е. возможно те проблемы, с которыми сталкивался я, у автора не возникали из-за разницы в оборудовании, версиях прошивок, и установленных пакетов. Теперь - к странностям, которые заметил в конфиге (опять же, крайне вероятно что это я ничего не понял) и решения тех проблем, с которыми я столкнулся:

  • путь в параметре "driftfile" к файлу "ntp.drift" оставлен по умолчанию, хотя в скрипте запуска "S77ntpd" вместо пути "/opt/var/lib/ntp/ntp.drift" указан "/opt/var/spool/ntp/ntp.drift". Из-за этого расхождения демон ожидаемо ругался в логах на отсутствие нужной папки и не мог записать файл на постоянную основу:
    6 Jul 17:11:50 ntpd[13546]: frequency file /opt/var/lib/ntp/ntp.drift.TEMP: No such file or directory

    Файл является критичным, т.к. именно в нём ntpd сохраняет вычисляемую им погрешность часов, и без неё работа демона не имеет смысла. Свою неполадку я решил редактированием пути в конфиге на путь из скрипта запуска. Помимо этого, стоит убедиться что ntpd имеет права производить запись по указанным путям и что файлы в указанных папках не стираются при перезагрузке роутера (в случае с путём из скрипта вышесказанное является верным - возможно, именно поэтому он и отличается от конфигурационного). Советую перепроверить оба пути на наличие файла погрешности, при его отсутствии - исправить конфиг.

  • Во-вторых: возможны неполадки при одновременной работе разных процессов обновления времени. Мне, например, пришлось отключить обновление времени в веб-интерфейсе NDMS.

  • В-третьих: при серьёзном расхождении времени системы с полученным временем от серверов (1000 секунд и более) ntpd "паникует" и отключается, с чем я по незнанию и столкнулся после перезагрузки роутера. Чтобы привести его в чувство, необходимо вручную задать дату со временем по любым достаточно точным часам и произвести перезапуск скрипта:

    date -s ГГГГ-ММ-ДД чч:мм
    /opt/etc/init.d/S77ntpd restart

    Чтобы каждый раз после перезагрузки роутера не заниматься вводом этих команд, дополнительно был установлен пакет "fake-hwclock", сохраняющий показания времени при выключении роутера в отдельный файл и выставляющий их при его включении (хотя, как понимаю, с этим так же может справиться и ntpdate, который себе я не ставил - призываю более компетентных людей на помощь). Допытывание у Гугла также показало, что аргумент "-g" при запуске ntpd заставляет его перестать паниковать и таки произвести сверку часов; я посчитал, что имеет смысл дополнительно его прописать в строке ARGS= скрипта автозапуска.

  • Возвращаясь к конфигу, хочу обратить внимание на пункт "server 127.127.1.0 iburst". Cудя по документации для сравнительно недавней версии 4.2.8p8, этот адрес - указание для ntpd использовать драйвер, позволяющий использовать собственные часы системы (в нашем случае - роутера) как источник точного времени при отсутствии более надёжных, т.е. если я правильно понимаю, параметр iburst для него не нужен. При этом на других сайтах в официальной вики ntp.org (версия из кэша Google, на случай если страница не только у меня недоступна) из-за неточности этого драйвера рекомендуют обязательно настроить этот сервер как сервер Stratum-10, цитирую:

    Цитата

    "Although the default stratum for the Undisciplined Local Clock is 5, in cases where an ntpd may become accessible outside of your immediate, controlled, network is it strongly suggested the the stratum of the Undisciplined Local Clock be raised to no less than 10" - "Хоть для Недисциплинированных Локальных Часов по умолчанию и выставлен часовой слой 5, настоятельно рекомендуется выставить для них часовой слой никак не меньше 10 на случай доступности ntpd вне пределов непосредственно контролируемой вами локальной сети"

    Благо, для этого надо лишь дописать в "ntp.conf" всего одну строчку: 

    fudge 127.127.1.0 stratum 10
  • Были у меня и ещё вопросы к предложенной конфигурации, но ввиду собственного ламерства будет гораздо честнее выложить инструкцию, на которую сам оглядывался при настройке, приложить собственный конфиг, и дождаться замечаний от более опытных пользователей.

    Скрытый текст
    
    # use a random selection of 4 public stratum 2 servers
    # see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
    
    # правила для блокировки ненужных запросов (варианты IPv4 и IPv6); отключение monitor во избежание 
    # использования ntp-сервера в ДДОС-атаках (https://habrahabr.ru/post/209438/ )
    restrict default nomodify notrap nopeer noquery
    restrict -6 default nomodify notrap nopeer noquery
    disable monitor
    
    # правила, разрешающие локалхосту обращаться самому к себе (варианты IPv4 и IPv6)
    restrict 127.0.0.1
    restrict -6 ::1
    
    # путь к файлу ntp.drift
    driftfile  /opt/var/spool/ntp/ntp.drift
    
    # сервера, с которыми происходит обновление времени
    server 0.ru.pool.ntp.org iburst
    server 1.ru.pool.ntp.org iburst
    server 2.ru.pool.ntp.org iburst
    server 3.ru.pool.ntp.org iburst
    
    # разрешение на запрос точного времени из локальной сети; 192.168.1.0 - подсеть, 255.255.255.0 - маска
    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap nopeer
    
    # закомментированые примеры настроек часов и/или источников сигнала эталонной частоты, подключённых к
    # локалхосту напрямую, а именно - приёмника GPS в первом случае, и шины(?) разделяемой памяти - во втором
    
    # GPS(NMEA)+PPS
    #server 127.127.20.0 minpoll 4 prefer
    #fudge 127.127.20.0 flag3 1 flag2 0
    
    # SMA PPS
    #server 127.127.28.0 minpoll 4 prefer
    #fudge 127.127.28.0 refid PPS flag3 1
    
    # закомментированый пример сервера точного времени в локальной сети
    #server 192.168.1.253
    
    # простые часы локалхоста как источник точного времени; по умолчанию - не используется при наличии более 
    # точных источников, вторая строка дополнительно это оговаривает
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10

     

 

Edited by UweStrich
указал ссылку на ntp.org, проясняющую настройки 127.127.1.0, и привёл цитату оттуда
  • Thanks 2

Share this post


Link to post
Share on other sites

@UweStrich да, спасибо, подтверждаю неправильный путь для файла ntp.drift В логе тоже есть такая запись:

7 Jul 06:26:56 ntpd[17696]: frequency file /opt/var/lib/ntp/ntp.drift.TEMP: No such file or directory
7 Jul 08:26:56 ntpd[17696]: frequency file /opt/var/lib/ntp/ntp.drift.TEMP: No such file or directory
7 Jul 10:26:56 ntpd[17696]: frequency file /opt/var/lib/ntp/ntp.drift.TEMP: No such file or directory
7 Jul 11:26:56 ntpd[17696]: frequency file /opt/var/lib/ntp/ntp.drift.TEMP: No such file or directory
7 Jul 12:26:56 ntpd[17696]: frequency file /opt/var/lib/ntp/ntp.drift.TEMP: No such file or directory

p.s.: не успел застать данную запись, уехал в отпуск. сейчас поправлю у себя в конфиге и в шапке.

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

Edited by enpa
  • Thanks 1
  • Upvote 1

Share this post


Link to post
Share on other sites
Скрытый текст

S85ORPCmfiI.jpg

Статья полезная и хотел бы вас попросить помощи касательно штатного NTP сервера и клиента. У меня два роутера один настроил как сервер, оба в лок сети, а второй просто клиент и никак не получается синхронизоваться с первым роутерм выступающий сервером, вроде бы локальная сеть и проброс порта делал 123 UDP все равно не идет, в чем проблема, как думаите? 

Share this post


Link to post
Share on other sites
23 часа назад, dcbeelinekz сказал:
  Показать содержимое

Статья полезная и хотел бы вас попросить помощи касательно штатного NTP сервера и клиента. У меня два роутера один настроил как сервер, оба в лок сети, а второй просто клиент и никак не получается синхронизоваться с первым роутерм выступающий сервером, вроде бы локальная сеть и проброс порта делал 123 UDP все равно не идет, в чем проблема, как думаите? 

Нужна включенная поддержка SNTP на сервере.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...