На днях я обнаружил, что на домашнем сервере время убежало вперёд аж на 15 минут. Я был удивлён этим фактом, так как думал что в Linux происходит автоматическая синхронизация времени с NTP-серверами. В общем так оно и есть, но почему-то в Ubuntu 9.04 «Jaunty Jackalope» в конфигурационном файле /etc/default/ntpdate было указано:
1.
# Set to "yes" to take the server list from /etc/ntp.conf, from package ntp,
2.
# so you only have to keep it in one place.
3.
NTPDATE_USE_NTP_CONF=yes
Что означает, что нужно смотреть список серверов в файле /etc/ntp.conf, который появляется только после установки пакета ntp.
Видимо предполагается, что если этого файла не существует, то нужно
обращаться к серверам, указанным в этом же файле. Но у меня это
почему-то не происходило.
Из сложившейся ситуации я вижу как минимум два выхода:
- Установить пакет ntp;
- Исправить значение параметра с «yes» на «no».
В первом случае на сервере будет установлен NTP-сервер и появиться возможность синхронизировать время всех локальных компьютеров с ним (внеся изменения в параметр NTPSERVERS в файле /etc/default/ntpdate на компьютерах-клиентах). Этот вариант я и выбрал:
1.
sudo aptitude install ntp
Для домашней и корпоративной сети обновляться можно с серверов уровня 2 (stratum 2), которые в свою очередь синхронизируются с серверами уровня 1, а те в свою очередь сверяются с высокоточными часами, например, с системой GPS, ГЛОНАСС или атомным эталоном времени.
Сервера уровня два есть у каждого провайдера, а значит можно синхронизироваться с ними. Для того чтобы проверить какого уровня сервер нужно выполнить:
1.
ntpdate -q ntp.ubuntu.com
где
ntp.ubuntu.com — сервер, указанный по-умолчанию в Ubuntu. Вместо него
этой команде можно передать имя любого другого NTP-сервера, или его
IP-адрес.
Ответ будет примерно таким:
1.
ntpdate -q ntp.ubuntu.com
2.
server 91.189.94.4, stratum 2, offset -0.015269, delay 0.08423
3.
20 Jul 07:44:10 ntpdate[2915]: adjust time server 91.189.94.4 offset -0.015269 sec
Для настройки NTP-сервера используется конфигурационный файл /etc/ntp.conf.
Для добавления дополнительных NTP-серверов вставьте строки в формате «server "address”». Мой список серверов выглядит так:
1.
# You do need to talk to an NTP server or two (or three).
2.
server ntp21.imvp.ru
3.
server ntp.ubuntu.com
После внесения изменений в файл /etc/ntp.conf необходимо перезапустить NTP:
1.
sudo /etc/init.d/ntp restart
Так как NTP использует 123 udp-порт для соединения с NTP сервером, то может понадобиться добавить правила в фаервол:
1.
# NTP outgoing client request
2.
iptables -A output -p udp -s 192.168.1.1 --sport 1024:65535 -d 0/0 --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
3.
iptables -A input -p udp -s 0/0 --sport 123 -d 192.168.1.1 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Теперь NTP-сервер настроен и с ним можно сверяться.