Пример настройки NTP (Network Time Protocol) на шлюзе «С-Терра Шлюз»
Настоящий документ содержит описание способа совместного использования Продуктов компании ООО
«С-Терра СиЭсПи» и Продуктов третьих производителей.
ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов.
Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.
Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах
только после тестовой и/или опытной эксплуатации.
NTP – протокол для синхронизации внутренних часов компьютера по сети.
С-Терра Шлюз может выступать NTP клиентом, NTP сервером, так и одновременно клиентом и сервером.
В данной инструкции предполагается, что NTP сервер (который также является клиентом) настраивается на шлюзе (его IP-адрес 10.0.1.100) в условном центре, а NTP клиентами являются шлюзы, установленные в условных филиалах.
Рассматривается два варианта настроек – без аутентификации NTP сервера и с аутентификацией по симметричному ключу.
Настоятельно рекомендуется защищать обмен протокола NTP при помощи IPsec, так как встроенной аутентификации в протоколе NTP недостаточно для обеспечения надлежащей защиты.
1. На шлюзе должен быть открыт порт 123 протокола UDP (по умолчанию открыт).
2. На шлюзе должен быть настроен соответствующий часовой пояс:
root@sterragate:~# dpkg-reconfigure tzdata
3. На шлюзе должны быть заданы рабочие DNS-сервера:
root@sterragate:~# vim.tiny /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
1. Выполните предварительные требования.
2. Очистите конфигурационный файл /etc/ntp.conf службы ntp, выполнив команду:
root@sterragate:~# echo > /etc/ntp.conf
3. Добавьте в конфигурационный файл /etc/ntp.conf следующие строки:
root@sterragate:~# vim.tiny /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
restrict default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
где:
· driftfile /var/lib/ntp/ntp.drift – файл для записи смещения частоты локального генератора тактовых импульсов (не рекомендуется менять).
· server 0.ru.pool.ntp.org iburst – указываем сервер, с которым будет производиться синхронизация времени.
· restrict default kod notrap nomodify nopeer noquery – разрешаем всем только синхронизацию времени.
· restrict 127.0.0.1 – разрешаем любой доступ сервера к самому себе.
Более подробнее смотрите описание параметров по ссылке https://manpages.debian.org/jessie/ntp/ntp.conf.5.en.html.
4. Перезагрузите службу ntp:
root@sterragate:~# service ntp restart
5. Подождите 10 – 15 минут и выполните:
root@sterragate:~# ntpq –p
remote refid st t when poll reach delay offset jitter
==============================================================================
+webhost2.mitht. 77.37.134.150 2 u 229 256 377 44.955 2.320 1.446
*time.ooonet.ru 194.190.168.1 2 u 26 256 377 27.832 1.751 0.926
+89.169.173.117 89.109.251.24 2 u 129 256 377 4.846 1.504 0.492
+46-8-40-31.regn 212.20.50.208 2 u 99 256 377 50.095 1.747 0.976
Обратите внимание на звездочку (*), которая говорит о том, что синхронизация производится с данного сервера.
6. Для того чтобы служба ntp запускалась после перезагрузки системы, выполните команду:
root@sterragate:~# update-rc.d ntp enable
1. Выполните предварительные требования.
2. Очистите конфигурационный файл /etc/ntp.conf службы ntp, выполнив команду:
root@sterragate:~# echo > /etc/ntp.conf
3. Добавьте в конфигурационный файл /etc/ntp.conf следующие строки:
root@sterragate:~# vim.tiny /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server 10.0.1.100 iburst
restrict default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
где:
· driftfile /var/lib/ntp/ntp.drift – файл для записи смещения частоты локального генератора тактовых импульсов (не рекомендуется менять).
· server 10.0.1.100 iburst – указываем сервер, с которым будет производиться синхронизация времени (10.0.1.100 – IP- адрес шлюза с настроенным NTP сервером).
· restrict default kod notrap nomodify nopeer noquery – разрешаем всем только синхронизацию времени.
· restrict 127.0.0.1 – разрешаем любой доступ сервера к самому себе.
4. Перезагрузите службу ntp:
root@sterragate:~# service ntp restart
5. Подождите 10 – 15 минут и выполните:
root@sterragate:~# ntpq –p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.0.1.100 89.169.173.117 3 u 44 128 377 0.191 13.500 2.848
Обратите внимание на звездочку (*), которая говорит о том, что синхронизация производится с данного сервера.
6. Для того чтобы служба ntp запускалась после перезагрузки системы, выполните команду:
root@sterragate:~# update-rc.d ntp enable
1. Выполните предварительные требования.
2. Очистите конфигурационный файл /etc/ntp.conf службы ntp, выполнив команду:
root@sterragate:~# echo > /etc/ntp.conf
3. Создайте директорию для файла с ключами:
root@sterragate:~# mkdir -p /etc/ntp/
4. Создайте файл /etc/ntp/keys с ключами и добавьте в него ключ:
Идентификатор ключа (key ID), алгоритм хеширования (hash algorithm) и сам ключ (key) должны быть одинаковыми как на сервере, так и на клиенте.
root@sterragate:~# vim.tiny /etc/ntp/keys
# key ID | hash algorithm | key
1 MD5 secret
В качестве алгоритма хеширования поддерживается только MD5. Длина пароля ограничена 20 символами ASCII.
5. Добавьте в конфигурационный файл /etc/ntp.conf следующие строки:
root@sterragate:~# vim.tiny /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
restrict default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
keys /etc/ntp/keys
trustedkey 1
где:
· driftfile /var/lib/ntp/ntp.drift – файл для записи смещения частоты локального генератора тактовых импульсов (не рекомендуется менять).
· server 0.ru.pool.ntp.org iburst – указываем сервер, с которым будет производиться синхронизация времени.
· restrict default kod notrap nomodify nopeer noquery – разрешаем всем только синхронизацию времени.
· restrict 127.0.0.1 – разрешаем любой доступ сервера к самому себе.
· keys /etc/ntp/keys – файл с ключами.
· trustedkey 1 – список доверенных ключей (key ID) из файла с ключами (если ключей несколько, то укажите их через пробел «trustedkey 1 2 3»).
Более подробнее смотрите описание параметров по ссылке https://manpages.debian.org/jessie/ntp/ntp.conf.5.en.html.
6. Перезагрузите службу ntp:
root@sterragate:~# service ntp restart
7. Подождите 10 – 15 минут и выполните:
root@sterragate:~# ntpq –p
remote refid st t when poll reach delay offset jitter
==============================================================================
+webhost2.mitht. 77.37.134.150 2 u 229 256 377 44.955 2.320 1.446
*time.ooonet.ru 194.190.168.1 2 u 26 256 377 27.832 1.751 0.926
+89.169.173.117 89.109.251.24 2 u 129 256 377 4.846 1.504 0.492
+46-8-40-31.regn 212.20.50.208 2 u 99 256 377 50.095 1.747 0.976
Обратите внимание на звездочку (*), которая говорит о том, что синхронизация производится с данного сервера.
8. Для того чтобы служба ntp запускалась после перезагрузки системы, выполните команду:
root@sterragate:~# update-rc.d ntp enable
1. Выполните предварительные требования.
2. Очистите конфигурационный файл /etc/ntp.conf службы ntp, выполнив команду:
root@sterragate:~# echo > /etc/ntp.conf
3. Создайте директорию для файла с ключами:
root@sterragate:~# mkdir -p /etc/ntp/
4. Создайте файл /etc/ntp/keys с ключами и добавьте в него ключ:
Идентификатор ключа (key ID), алгоритм хеширования (hash algorithm) и сам ключ (key) должны быть одинаковыми как на сервере, так и на клиенте.
root@sterragate:~# vim.tiny /etc/ntp/keys
# key ID | hash algorithm | key
1 MD5 secret
В качестве алгоритма хеширования поддерживается только MD5. Длина пароля ограничена 20 символами ASCII.
5. Добавьте в конфигурационный файл /etc/ntp.conf следующие строки:
root@sterragate:~# vim.tiny /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
server 10.0.1.100 iburst key 1
restrict default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
keys /etc/ntp/keys
trustedkey 1
где:
· driftfile /var/lib/ntp/ntp.drift – файл для записи смещения частоты локального генератора тактовых импульсов (не рекомендуется менять).
· server 10.0.1.100 iburst key 1 – указываем сервер, с которым будет производиться синхронизация времени (10.0.1.100 – IP- адрес шлюза с настроенным NTP сервером) и key ID из файла с ключами.
· restrict default kod notrap nomodify nopeer noquery – разрешаем всем только синхронизацию времени.
· restrict 127.0.0.1 – разрешаем любой доступ сервера к самому себе.
· keys /etc/ntp/keys – файл с ключами.
· trustedkey 1 – список доверенных ключей (key ID) из файла с ключами (если ключей несколько, то укажите их через пробел «trustedkey 1 2 3»).
6. Перезагрузите службу ntp:
root@sterragate:~# service ntp restart
7. Подождите 10 – 15 минут и выполните:
root@sterragate:~# ntpq –p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.0.1.100 89.169.173.117 3 u 44 128 377 0.191 13.500 2.848
Обратите внимание на звездочку (*), которая говорит о том, что синхронизация производится с данного сервера.
8. Для того чтобы служба ntp запускалась после перезагрузки системы, выполните команду:
root@sterragate:~# update-rc.d ntp enable
1. Проблема со работой NTP сервиса после старта ОС.
Если конфигурация шлюза достаточна объемная и в LSP или cisco-like консоли заданы маршруты до NTP серверов, то сервис NTP после старта ОС может зависнуть в состоянии INIT (связано это с тем, что сервис NTP запускается раньше, чем прогружается конфигурация и устанавливаются маршруты). Для того, чтобы предотвратить эту проблему, создайте скрипт /etc/network/if-pre-up.d/ntprestart и добавьте в него строки:
root@sterragate:~# vi /etc/network/if-pre-up.d/ntprestart
#!/bin/bash
INTERFACE="eth0"
if [[ $IFACE == $INTERFACE ]]; then
/root/ntprestart &
fi
exit 0
Установите права на запуск этого файла:
root@sterragate:~# chmod +x /etc/network/if-pre-up.d/ntprestart
Далее, необходимо создать скрипт «/root/ntprestart», который будет вызываться из скрипта «/etc/network/if-pre-up.d/ntprestart»:
root@sterragate:~# vi /root/ntprestart
#!/bin/bash
sleep <время ожидания в секундах>
service ntp restart
exit 0
Задайте нужное значение вместо <время ожидания в секундах>. Например, для LSP в 20000 строк нужно указать 260 секунд.
Установите права на запуск этого файла:
root@sterragate:~# chmod +x /root/ntprestart
Обратите внимание на то, в каких директориях создаются файлы.