Синхронизация времени – NTP
Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью.
NTP-Client
Устанавливаем ntp
клиент:
sudo apt-get install ntp ntpdate
Необходимо настроить ntp
клиент для нашего региона. Нам нужен список серверов синхронизации времени. Сам список можно найти например на сайте www.pool.ntp.org/zone/@ который рекомендуется в конфигурационном файле NTP /etc/ntp.conf
. Если вы из России, тогда можете использовать тот же список, что у меня в примере.
Открываем /etc/ntp.conf
:
sudo nano /etc/ntp.conf
Находим такие строки:
server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic
И вместо них вписываем свой список серверов ntp
:
server 0.ru.pool.ntp.org iburst dynamic
server 1.ru.pool.ntp.org iburst dynamic
server 2.ru.pool.ntp.org iburst dynamic
server 3.ru.pool.ntp.org iburst dynamic
Остановим ntp
:
sudo service ntp stop
иначе при вводе следующей команды мы получим такое сообщение:
12 Jun 18:52:06 ntpdate[12097]: the NTP socket is in use, exiting
Сверимся с сервером при помощи ntpdate
:
sudo ntpdate -q 0.ru.pool.ntp.org
На что получаем ответ:
server 93.180.7.2, stratum 2, offset 3,256055, delay 0.02960
server 188.134.15.192, stratum 2, offset 3,259242, delay 0.03915
server 62.76.96.4, stratum 2, offset 3.256370, delay 0.02861
server 93.180.6.3, stratum 2, offset 3.256370, delay 0.02885
13 Jun 04:13:40 ntpdate[32722]: adjust time server 62.76.96.4 offset 3.256370 sec
Stratum 1
- Это сервер первого уровня (если stratum 16
, значит сервер сам не синхронизирован). Offset
- Расхождение во времени с этим сервером в секундах. delay
- Задержка синхронизации в секундах.
Что значит то, что наши часы спешат на 3 секунды по сравнению с правильными. Такая разница кажется не значительной до смехоты но она очень значительна например для программ синхронизации файлов, которые могут даже просто отказаться от выпонения своих функций по синхронизации. Значит нам нужно синхронизировать наши часы с сервером точного времени.
Разово синхронизируем часы при помощи того же ntpdate
:
sudo ntpdate -bs 0.ru.pool.ntp.org
Снова сверимся для того, чтобы убедиться в том, что наши часы синхронизированны с сервером точного времени:
sudo ntpdate -q 0.ru.pool.ntp.org
12 Jun 23:02:53 ntpdate[27338]: adjust time server 62.76.96.4 offset -0.000050 sec
Теперь часы идут точно!
Снова запустим ntp
:
sudo service ntp start
NTP-Server
Если у вас большая сеть и по политике безопасности сервер синхронизации времени ntp должен быть внутри корпоративной сети, тогда возложим эти функции на корпоративный сервер. Другими словами мы настроим один сервер синхронизироваться с внешним миром, а остальные сервера в нашей подсети будут синхронизироваться с этим.
Устанавливаем ntp-server:
sudo apt-get install ntp-server
На остальных компьютерах в сети указываем в роли сервера времени наш локальный ntp-сервер (вместо списка серверов).
Разрешение доступа из локальной сети:
По умолчанию наш сервер ntp
будет доступен всем хостам в Интернет. Параметр restrict
в файле /etc/ntp.conf
позволяет нам контролировать, какие машины могут обращаться к нашему серверу. Если мы хотим запретить всем машинам обращаться к нашему серверу ntp, тогда добавим следующую строку в файл /etc/ntp.conf
:
restrict default ignore
Если мы хотим разрешить синхронизировать свои часы с нашим сервером только машинам в нашей сети, но запретить им настраивать сервер или быть равноправными участниками синхронизации времени, то вместо указанной добавим строчку:
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
/etc/ntp.conf
может содержать несколько директив restrict
.
restrict 10.0.0.0 mask 255.0.0.0 noquery
Примечание: Если наш ntp-сервер стоит за шлюзом, тогда надо на шлюзе разрешить входящий и исходящий трафик по 123 порту.
Разрешение для входящего трафика:
sudo iptables -I INPUT -p udp --dport 123 -j ACCEPT
Разрешение для исходящего трафика:
sudo iptables -I OUTPUT -p udp --sport 123 -j ACCEPT
Если эта статья помогла вам, пожалуйста, оставьте комментарий
Спасибо за прочтение!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.