Синхронізація часу – 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.