среда, 1 октября 2008 г.

Запуск ntpd под FreeBSD


Как это ни странно, но в стандартной поставке FreeBSD болванки для файла конфигурации ntpd (8) нет ни в /etc, ни в /usr/share/examples. Поэтому восполняю это досадное упущение. Взято из FreeBSD Handbook и http://support.ntp.org/bin/view/Servers/StratumOneTimeServers (список публичных ntp-серверов 1 страты). Называется файл конфигурации /etc/ntp.conf, минимально необходимое содержимое его такое:
# это сервера, откуда берем время
# если используется restrict, лучше брать те сервера, у которых
# 1 адрес, а не пул - а то придетс яписать доступ всем
server clock.nc.fukuoka-u.ac.jp prefer
server ntp1.mmo.netnod.se
server ntp.nic.cz
# а это ACL
restrict default ignore
restrict 127.0.0.1
# это те, от кого мы берем дату
restrict ntp.nic.cz noquery notrap
restrict ntp1.mmo.netnod.se noquery notrap
restrict clock.nc.fukuoka-u.ac.jp noquery notrap
# а это - наши клиенты
restrict x.x.x.x mask y.y.y.y nomodify notrap
restrict z.z.z.z mask w.w.w.w nomodify notrap

не забыть конечно добавить в /etc/rc.conf такое:
ntpd_enable="YES"
работает ntpd на порте 123 по протоколу UDP - так что эти порт должен быть открыт в firewall
Тестирование с UNIX-like клиента такой командой:
$ ntpdate -d your_server_addr
По ее выводу легко понять, какая дата получена с сервера (и получена ли вообще). Опция -d означает не устанавливать дату фактически, зато показать отладочную информацию (что нам и нужно).
Много полезного можно узнать, запуская на сервере команду ntpq (8) - напр. про соседей нам расскажут субкоманды peer и ass (sic!)

P.S. Во FreeBSD 7.1-PRERELEASE столкнулся со странным поведением стартового скрипта /etc/rc.d/ntpd - он зачем-то запускат два процесса ntpd (с клиента все выглядит нормально, но на сервере второй процесс переодически грязно ругается в логи). На всякий случай, если у кого-нибудь вдруг произойдет тоже самое (в чем лично я сильно сомневаюсь), сообщаю, что методом тыка удалось найти на эту беду управу. Помогает строчка
ntpdate_enable="YES"
в файле /etc/rc.conf Почему помогает - не знаю сам - придумалось оно путем сложных ассоциаций на тему строки REQUIRE в скрипте /etc/rc.d/ntpd

Комментариев нет: