The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

ntpd на FreeBSD с подключением через PPP
Есть компьютер с 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 запустился после прописывания маршрута.
 
21.08.2008 , Автор: Furcube
Ключи: freebsd, ntp / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / FreeBSD специфика / Установка и апгрейд FreeBSD и приложений.

Обсуждение [ RSS ]
  • 1.1, guest (??), 14:04, 22/08/2008 [ответить]  
  • +/
    просто хочу обратить внимание, что провайдер (в России) не имеет права самовольно приостанавливать предоставление услуг связи
     
     
  • 2.4, User294 (??), 21:14, 22/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >просто хочу обратить внимание, что провайдер (в России) не имеет права самовольно
    >приостанавливать предоставление услуг связи

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

     

  • 1.2, mike_t (?), 16:09, 22/08/2008 [ответить]  
  • +/
    а не изобретаете ли вы велосипед? в последних версия ntpd это победили
     
     
  • 2.3, Furcube (ok), 21:04, 22/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно, но мне пришлось так делать.

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

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

     
     
  • 3.6, universite (ok), 09:35, 24/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    После реконнекта тупо рестартуем ntpd
     
     
  • 4.7, Sergei Vasilyev (?), 16:59, 28/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > После реконнекта тупо рестартуем 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)

     
     
  • 5.8, universite (ok), 18:38, 28/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >> После реконнекта тупо рестартуем ntpd
    >
    >Тупое, но неудачное решение. Прочтите внимательно:
    >

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

     

  • 1.9, Touch (?), 17:59, 22/09/2008 [ответить]  
  • +/
    Добавить в 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
     
  • 1.10, Touch (?), 22:55, 22/09/2008 [ответить]  
  • +/
    и ещё, ключи генерировать пришлось так:
    env RANDFILE=/dev/random ntp-keygen -M
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру