URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 43465
[ Назад ]

Исходное сообщение
"Раздел полезных советов: ntpd на FreeBSD с подключением через PPP"

Отправлено auto_tips , 22-Авг-08 14:04 
Есть компьютер с FreeBSD 7.0 (но должно работать и для остальных версий)
Подключение к интернету производится через pppoe. Провайдер раз в сутки обрывает подключение,
соответственно при смене ip (он динамический) ntpd клинит - по команде ntpq -c pe
в колонке refid для всех серверов будет .INIT.

Когда искал решение, наткнулся на следующий скрипт (немного модифицировал для FreeBSD):

#!/bin/sh
#
# reconfigNtpd, written by Jan Ceuleers, March 2003, revised October 2003
#
# Purpose: ntpd running on a machine that has intermittent connectivity to
#          the Internet, and that does not have a static public IP address,
#          loses its associations with public NTP servers, even after the
#          connection to the Internet has been restored.
#          Restarting the ntpd daemon is a possibility, but the downside
#          is that this causes time not to be served to local clients until
#          ntpd has regained synchronisation.
#          A better way is to configure at least one local clock (the local
#          clock 127.127.1.0 at high stratum and/or a refclock), to cover
#          for the periods when there is no Internet connectivity, and to
#          use this script to unconfig/add{server,peer} all public time
#          servers at runtime (i.e. without restarting the daemon)
#
# Usage: reconfigNtpd | ntpdc
#
# Bugs: * This script only generates unconfig/addpeer and unconfig/addserver
#         pairs. Any relevant fudge statements or iburst options etc. are
#         ignored.
#
#       * Location of keys file is hard-coded rather than being derived from
#         ntp.conf
#

###
#
# Get keyid and password from /etc/ntp/keys
#
###
set -- $(grep "^15" < /etc/ntp.keys)
echo keyid $1
echo passwd $3

###
#
# Derive unconfig commands from ntpdc output
#
###
ntpdc -n -p | awk '!/==/ && !/^ / { if (substr($1,2) !~ /^127.127./)
print "unconfig " substr($1,2) }'

###
#
# Derive addserver commands from /etc/ntp.conf
#
###
awk '/^server[[:blank:]]/ { if ($2 !~ /^127.127./) print "addserver " $2
}' /etc/ntp.conf

###
#
# Derive addpeer commands from /etc/ntp.conf
#
###
awk '/^peer[[:blank:]]/ { print "addpeer " $2 }' /etc/ntp.conf

echo quit

(источник - http://www.arda.homeunix.net/ntpsetup.html)

Записываем куда-нибудь, где не потеряется.

Конфиг ntpd следующего вида:
/etc/ntp.conf

server  <сервер>
server  <сервер>

logfile /var/log/ntp.log
driftfile /var/db/ntp.drift
statsdir /var/db/ntpstats/
keys /etc/ntp.keys
trustedkey 1 2 15
controlkey 15        # ntpq
requestkey 15        # ntpdc

Теперь надо сгенерить ключи для управления.
env RANDFILE=/dev/random ntp-keygen
В директории, где запускали ntp-keygen будет файл
с ключами и симлинк ntpkey_MD5key_<название хоста>
В нём будут записаны 16 ключей надо взять содержимое этого файла и запихнуть его в /etc/ntp.keys

теперь (пере)запускаем ntpd
Для проверки делаем ./reconfigNtpd | ntpdc
Если про ошибки ничего не будет написано, значит всё хорошо.

Теперь цепляем это на ppp
Для этого пишем в файл /etc/ppp/ppp.linkup такое:

<название подключения>:
  !bg sh -c "sleep 5; <путь>/reconfigNtpd | ntpdc"

Задержку в 5 секунд сделал для того, чтобы ntpdc запустился после прописывания маршрута.

URL:
Обсуждается: http://www.opennet.me/tips/info/1741.shtml


Содержание

Сообщения в этом обсуждении
"ntpd на FreeBSD с подключением через PPP"
Отправлено guest , 22-Авг-08 14:04 
просто хочу обратить внимание, что провайдер (в России) не имеет права самовольно приостанавливать предоставление услуг связи

"ntpd на FreeBSD с подключением через PPP"
Отправлено User294 , 22-Авг-08 21:14 
>просто хочу обратить внимание, что провайдер (в России) не имеет права самовольно
>приостанавливать предоставление услуг связи

Дело в том что в случае PPPoE эти пи...сы просто режут сессию кусками по 24 часа.Особенности работы биллинговой системы - чтобы было что тарифицировать, ну и неплательщики заодно в пределах 24 часов обнаруживают что они забыли заплатить :)


"ntpd на FreeBSD с подключением через PPP"
Отправлено mike_t , 22-Авг-08 16:09 
а не изобретаете ли вы велосипед? в последних версия ntpd это победили

"ntpd на FreeBSD с подключением через PPP"
Отправлено Furcube , 22-Авг-08 21:04 
Возможно, но мне пришлось так делать.

У раньше было через ntpdate, настроил ntpd, но он слетал, когда обрубали канал. Потому пришлось делать так.

Хотя возможно установка ntpd из портов поможет, но хотелось сделать на базовой системе.


"ntpd на FreeBSD с подключением через PPP"
Отправлено universite , 24-Авг-08 09:35 
После реконнекта тупо рестартуем ntpd

"ntpd на FreeBSD с подключением через PPP"
Отправлено Sergei Vasilyev , 28-Авг-08 16:59 
> После реконнекта тупо рестартуем ntpd

Тупое, но неудачное решение. Прочтите внимательно:

#          Restarting the ntpd daemon is a possibility, but the downside

#          is that this causes time not to be served to local clients until

#          ntpd has regained synchronisation.

#          A better way is to configure at least one local clock (the local

#          clock 127.127.1.0 at high stratum and/or a refclock), to cover

#          for the periods when there is no Internet connectivity, and to

#          use this script to unconfig/add{server,peer} all public time

#          servers at runtime (i.e. without restarting the daemon)


"ntpd на FreeBSD с подключением через PPP"
Отправлено universite , 28-Авг-08 18:38 
>> После реконнекта тупо рестартуем ntpd
>
>Тупое, но неудачное решение. Прочтите внимательно:
>

Написать можно что угодно.
У меня частенько стратум падает с 2 до 3.
Помогает только рестарт.
При высокой загрузке канала у ntp-демона наступает деградация.


"ntpd на FreeBSD с подключением через PPP"
Отправлено Touch , 22-Сен-08 17:59 
Добавить в ntp.conf после основных серверов
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0
fudge   127.127.1.0 stratum 10

"ntpd на FreeBSD с подключением через PPP"
Отправлено Touch , 22-Сен-08 22:55 
и ещё, ключи генерировать пришлось так:
env RANDFILE=/dev/random ntp-keygen -M