Есть компьютер с 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.confecho quit
(источник - http://www.arda.homeunix.net/ntpsetup.html)
Записываем куда-нибудь, где не потеряется.
Конфиг ntpd следующего вида:
/etc/ntp.confserver <сервер>
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
просто хочу обратить внимание, что провайдер (в России) не имеет права самовольно приостанавливать предоставление услуг связи
>просто хочу обратить внимание, что провайдер (в России) не имеет права самовольно
>приостанавливать предоставление услуг связиДело в том что в случае PPPoE эти пи...сы просто режут сессию кусками по 24 часа.Особенности работы биллинговой системы - чтобы было что тарифицировать, ну и неплательщики заодно в пределах 24 часов обнаруживают что они забыли заплатить :)
а не изобретаете ли вы велосипед? в последних версия ntpd это победили
Возможно, но мне пришлось так делать.У раньше было через ntpdate, настроил ntpd, но он слетал, когда обрубали канал. Потому пришлось делать так.
Хотя возможно установка ntpd из портов поможет, но хотелось сделать на базовой системе.
После реконнекта тупо рестартуем ntpd
> После реконнекта тупо рестартуем 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
>
>Тупое, но неудачное решение. Прочтите внимательно:
>Написать можно что угодно.
У меня частенько стратум падает с 2 до 3.
Помогает только рестарт.
При высокой загрузке канала у ntp-демона наступает деградация.
Добавить в 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
и ещё, ключи генерировать пришлось так:
env RANDFILE=/dev/random ntp-keygen -M