====== Сервер точного времени ====== Возникла необходимость синхронизировать время на машинах в локальной сети. Для этого желательно настроить свой собственный NTP сервер. Тем более, что во FreeBSD сделать это совсем просто. Начнем с файла конфигурации сервера /etc/ntp.conf server ntp.psn.ru prefer server time2.one4vision.de server ntp.ucsd.edu server time.nist.gov driftfile /var/db/ntp.drift restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap Создадим файл /var/db/ntp.drift touch /var/db/ntp.drift В файлик /etc/rc.conf добавим строки которые позволят при старте системы запустить наш NTP сервер. ntpd_enable="YES" ntpd_flags="-c /etc/ntp.conf -l /var/log/ntpd.log -p /var/run/ntpd.pid" На этом собственно говоря все. Самое главное после запуска сервера (/etc/rc.d/ntpd start) не торопиться. Именно не торопиться! Если сразу после старта сервера попробовать синхронизировать время с нашим сервером, то скорее всего ничего не получится. По крайней мере у меня было так. Нужно немного подождать, хотя бы минут 15-20. Теперь, немного о том, как посмотреть что делает наш сервер. Делается это командой ntpq [root@gw ~]# ntpq -np remote refid st t when poll reach delay offset jitter ============================================================================== -77.78.110.71 195.113.144.201 2 u 449 1024 377 273.777 19.438 86.737 +91.121.45.45 145.238.203.14 2 u 180 1024 377 234.006 1.136 6.294 *84.2.42.31 172.20.1.162 2 u 206 1024 377 224.046 -2.157 14.703 +83.229.210.18 195.216.64.208 3 u 448 1024 377 168.998 -11.696 1.752 +82.219.4.30 195.66.241.10 2 u 638 1024 377 238.655 -5.773 28.231 Теперь, о значениях колонок: Символ в начале строки: * **пробел** - слишком большой страт, цикл или явная ошибка * **x** - фальшивый источник по алгоритму пересечения * **.** - исключен из списка кандидатов из-за большого расстояния * **-** - удалено из списка кандидатов алгоритмом кластеризации * **+** - входит в конечный список кандидатов * **#** - выбран для синхронизации, но есть 6 лучших кандидатов * ***** - выбран для синхронизации * **o** - выбран для синхронизации, но используется PPS **remote** Имя удаленного NTP-сервера. Если указать ключ -n, вы получите IP-адреса серверов вместо имён. **refid** Указывает, откуда каждый сервер получает время в данный момент. Это может быть имя хоста или что-то вроде .GPS., указывающее на источник глобальной системы позиционирования (Global Positioning System). **st** Stratum (уровень) это число от 1 до 16, указывающее на точность сервера. Единица означает максимальную точность, 16 -- сервер недоступен. Ваш уровень будет равен уровню наименее точного удаленного сервера плюс 1. **poll** Интервал между опросами (в секундах). Значение будет изменяться между минимальной и максимальной частотой опросов. В начале интервал будет маленьким, чтобы синхронизация происходила быстро. После того как часы синхронизируются, интервал начинает увеличиваться, чтобы уменьшить трафик и нагрузку на популярные сервера времени. **reach** Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с сервером. Бит выставлен, если удаленный сервер ответил. **delay** Количество времени (в секундах) необходимого для получения ответа на запрос "который час? ". **offset** Наиболее важное поле. Разница между временем локального и удаленного серверов. В ходе синхронизации это значение должно понижаться, указывая на то, что часы локальной машины идут все точнее. **jitter** Дисперсия (Jitter) -- это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Меньшее значение дисперсии предпочтительнее, поскольку позволяет точнее синхронизировать время.