thumb

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