Настройка NTP сервера в локальной сети
Делал проверку своих сервисов, решил написать заметку Как настраивать NTP сервер для синхронизации времени компьютеров в локальной сети.
Если у вас в локальной сети более 10 компьютеров и есть на чем развернуть сервер времени, то почему бы и нет?
У нас есть FreeBSD — интернет-шлюз, файловый сервер, DNS, VPN, локальный сайт, теперь еще сделаем NTP сервер или проще говоря сервер времени.
По-умолчанию FreeBSD уже содержит все необходимое, остается только настроить.
1. Заносим данные для автозапуска сервера NTP в
ee /etc/rc.conf |
ntpd_enable="YES" ntpd_program="/usr/sbin/ntpd" ntpd_config="/etc/ntp/ntp.conf" ntpd_sync_on_start="YES" ntpd_flags="-p /var/run/ntpd.pid" |
Этим мы задаем, что сервис разрешен, нужно стартовать и синхронизировать при старте, собственно где находится исполняемый файл, его файл конфигурации и пид файл (который содержит номер процесса для перезапуска или остановки ntpd)
Далее нам нужно создать и наполнить файл конфигурации ntp.conf
ee /etc/ntp/ntp.conf |
# указываем сервера точного времени server 78.152.160.1 iburst prefer server 178.150.103.191 iburst server 91.198.10.20 iburst server 89.209.81.54 iburst server 94.158.46.253 iburst # задаем где хранится файл с информацией о смещении времени # локального сервера относительно серверов точного времени driftfile /var/db/ntp.drift # место где хранится лог-файл logfile /var/log/ntp.log # раздаем доступы и ограничения # по умолчанию никому ничего restrict default ignore # в локальном сервере можно все restrict 127.0.0.1 # разрешаем синхронизироваться с удаленными серверами restrict 78.152.160.1 noquery notrap restrict 178.150.103.191 noquery notrap restrict 91.198.10.20 noquery notrap restrict 89.209.81.54 noquery notrap restrict 94.158.46.253 noquery notrap # наша сеть может только принимать точное время restrict 10.0.0.0 mask 255.255.248.0 nomodify notrap |
Внимание! Сервера задаю по IP, по имени работало не очень хорошо, тем более что я перед тем как их указывать проверил время доступа и стратум.
Создаем файл ntp.drift (лог файл процесс может создать сам)
touch /var/db/ntp.drift |
Добавляем в фаерволл (ipfw) разрешение для 123 порта протокола UDP
ipfw add allow udp from any to any 123 |
Запускаем ntpd (чтобы не перезагружаться)
/etc/rc.d/ntpd start |
После запуска ждем около 10 минут! (необходимо время для синхронизации)
И можно проверить список наших «доноров» (командой в консоли ntpq -p)
ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *infocom.km.ua 62.149.0.30 2 u 490 1024 377 45.930 -16.149 21.967 +191.103.150.178 62.149.0.30 2 u 769 1024 377 64.991 -6.117 1.788 +shkvoren.tntu.e 62.149.0.30 2 u 645 1024 377 70.006 -7.799 0.304 +otrada.od.ua 32.246.249.54 2 u 521 1024 377 90.805 1.578 12.525 +jason-freebsd.l 81.17.128.133 2 u 507 1024 377 80.592 -4.894 3.034 |
Если стратум везде 2, то замечательно, бывает что сервер плохой или недоступен, то стратум (колонка st) станет 16.
Можно проверить наш сервер, для этого выполним (вместо 10.0.0.1 поставим свой IP адрес, который будет задаваться для компьютеров в локальной сети)
ntpdate -q 10.0.0.1 server 10.0.0.1, stratum 3, offset -0.000000, delay 0.02565 15 Apr 12:09:27 ntpdate[95916]: adjust time server 10.0.0.1 offset -0.000000 sec |
Порядок.
Еще я присвоил в своем DNS запись time.windows.com = 10.0.0.1
таким образом не пришлось перенастраивать компьютеры с Windows (они по-умолчанию начали синхронизироваться с локальным сервером времени).
Можно сделать ротацию логов, но суда по тому насколько там мало записей, можно не ротироваться лет 50.
В ходе настройки вы можете сталкиваться с предупреждениями
ntpd : no IPv6 interfaces found
похоже что отключить шестой IP можно только при установке из порта (там есть опция [ ] IPV6 Enable IPv6)
ntpd как указать только ip
не понятно как заставить демона ntpd прослушивать только определенные IP
обычно решают настройками фаерволла
ntpd включить режим отладки
указать флаг -d (Specify debugging mode, но должна быть поддержка (по-умолчанию не включена))
Frequency format error in /var/db/ntp.drift
когда файл ntp.drift пустой, то может выводиться такое сообщение
ntpd Bad file descriptor
когда файла ntp.drift не существует (обычно путают путь к файлу в конфиге ntp.conf)
in_classd=0 flags=0 fails: Address already in usepid
ntpd: bind() fd 11, family 2, port 123, addr
с этим не совсем понятно ругается как будто порт уже занят, но sockstat | grep ‘123’ до запуска не показывал открытых портов