NTP сервер в pfSense - синхронизация времени в сети
Точная синхронизация времени является критическим требованием для корректной работы сетевой инфраструктуры. Расхождение системных часов влияет на достоверность временных меток в журналах, валидность SSL/TLS-сертификатов, работу протоколов аутентификации (Kerberos, RADIUS), корректность CARP-кластеров и надёжность файловых систем с репликацией. pfSense включает встроенный NTP-сервер на основе демона ntpd, который синхронизирует собственные часы с внешними эталонными источниками и предоставляет сервис точного времени для всех устройств в локальной сети.
Значение точного времени
Некорректная синхронизация времени приводит к ряду практических проблем, которые не всегда очевидны при диагностике.
| Область | Последствия рассинхронизации |
|---|---|
| Журналирование | Некорректные временные метки делают невозможным корреляцию событий между устройствами |
| SSL/TLS | Сертификаты отклоняются как просроченные или ещё не действительные |
| Kerberos | Аутентификация завершается ошибкой при расхождении более 5 минут |
| CARP | Некорректная работа кластера отказоустойчивости |
| TOTP | Одноразовые пароли не совпадают с серверными |
| Резервное копирование | Инкрементальные бэкапы включают лишние файлы из-за неверных временных меток |
Перед предоставлением NTP-сервиса клиентам необходимо убедиться, что pfSense сам поддерживает точное время. По умолчанию pfSense синхронизируется с серверами из пула pool.ntp.org при загрузке системы.
Начальная синхронизация (Clock Bootstrap)
При запуске pfSense выполняет начальную синхронизацию часов. Если расхождение с эталонными серверами превышает 1000 секунд, ntpd отказывается выполнять корректировку и завершает работу. В таких случаях pfSense использует утилиту ntpdate для принудительной установки времени перед запуском ntpd.
Этот процесс особенно важен для систем без аппаратных часов реального времени (RTC), например, при работе на виртуальных машинах, где после перезагрузки системные часы могут значительно отличаться от реального времени.
Настройка NTP-сервера
Конфигурация NTP-сервера выполняется через Services > NTP.
Upstream серверы времени
Раздел NTP Servers определяет внешние источники времени, с которыми pfSense синхронизируется.
| Поле | Описание |
|---|---|
| Time Server | Адрес или имя NTP-сервера |
| Prefer | Отметить сервер как предпочтительный |
| No Select | Исключить из синхронизации, сохранив сбор статистики |
Рекомендуется настроить от трёх до пяти серверов. Три сервера позволяют ntpd определять, какой из источников предоставляет неверное время (алгоритм выбора большинства). Менее трёх серверов лишают ntpd возможности обнаружить отклонение.
Рекомендуемые серверы
| Сервер | Описание |
|---|---|
0.pfsense.pool.ntp.org | Пул по умолчанию для pfSense |
1.pfsense.pool.ntp.org | Пул по умолчанию для pfSense |
2.pfsense.pool.ntp.org | Пул по умолчанию для pfSense |
0.ru.pool.ntp.org | Региональный пул для России |
ntp1.stratum2.ru | Российский Stratum 2 сервер |
time.cloudflare.com | Cloudflare NTP (Stratum 3) |
time.google.com | Google NTP (Stratum 1) |
При наличии внутреннего NTP-сервера Stratum 1 (например, с GPS-приёмником) его следует указать как предпочтительный источник с установленным флажком Prefer.
Привязка к интерфейсам
По умолчанию NTP-сервер принимает запросы на всех интерфейсах pfSense. Для ограничения доступа следует выбрать конкретные интерфейсы.
| Сценарий | Рекомендуемые интерфейсы |
|---|---|
| Стандартная сеть | LAN |
| Сеть с VLAN | LAN, VLAN10, VLAN20 |
| Только для pfSense | Localhost (NTP не обслуживает клиентов) |
Внимание:
Выбор интерфейсов влияет не только на приём входящих запросов, но и на отправку исходящих запросов к upstream серверам. При выборе только LAN-интерфейса pfSense может потерять возможность обращаться к внешним NTP-серверам через WAN.
Orphan Mode
Orphan Mode обеспечивает предоставление времени клиентам даже при недоступности всех upstream серверов. При активации pfSense объявляет себя источником времени с заданным уровнем stratum, используя внутренние часы.
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
| Orphan Mode | Включение режима | Отключён |
| Stratum | Уровень, объявляемый клиентам | 12 |
Значение stratum 12 указывает клиентам, что источник является ненадёжным и следует использовать его только при отсутствии альтернатив. Не следует устанавливать значение ниже 5, чтобы избежать приоритетного выбора локальных часов над серверами интернета.
Orphan Mode полезен в изолированных сетях без доступа к интернету, а также для предотвращения полной потери синхронизации при кратковременных перебоях связи.
Ограничения доступа (Access Restrictions)
NTP-сервер pfSense поддерживает списки контроля доступа для управления тем, какие клиенты могут использовать сервис.
Ограничения по умолчанию
Ограничения по умолчанию применяются ко всем клиентам, для которых не определены специальные правила.
| Ограничение | Описание |
|---|---|
| Kiss-o’-Death | Отправка KoD-пакетов клиентам, превышающим допустимую частоту запросов |
| Modifications | Запрет модификации конфигурации через ntpq и ntpdc |
| Queries | Запрет запросов статуса через ntpq и ntpdc |
| Serve | Ограничение типов обслуживаемых пакетов |
| Peer | Запрет создания новых пиринговых ассоциаций |
| Trap | Запрет удалённого журналирования событий |
Пользовательские ограничения
Для отдельных подсетей допускается создание специальных правил с индивидуальными настройками. Это позволяет, например, предоставить полный доступ внутренним клиентам, одновременно ограничивая доступ из гостевой сети.
GPS и PPS источники времени
Для сред, требующих высокой точности синхронизации, pfSense поддерживает аппаратные источники времени - GPS-приёмники и PPS-сигналы.
Serial GPS
pfSense позволяет использовать GPS-приёмник, подключённый через последовательный порт, в качестве эталонного источника времени (reference clock).
| Параметр | Описание |
|---|---|
| GPS Type | Модель GPS-приёмника из списка или Custom |
| Serial Port | Порт подключения (cuau0 для аппаратного, cuaU0 для USB) |
| Baud Rate | Скорость последовательного порта (обычно 4800 bps) |
| NMEA Sentences | Типы NMEA-сообщений для интерпретации |
| Fudge Time 1 | Коррекция смещения PPS-сигнала (секунды) |
| Fudge Time 2 | Коррекция смещения данных GPS (секунды) |
| Stratum | Уровень, объявляемый для GPS (по умолчанию 0) |
GPS-приёмник с PPS-выходом обеспечивает точность синхронизации в пределах микросекунд, что превосходит любые сетевые NTP-серверы.
Внимание:
USB GPS-приёмники могут функционировать, однако они не являются надёжными источниками времени из-за нестабильной задержки USB-шины. Для точной синхронизации следует использовать приёмники с подключением через аппаратный последовательный порт.
PPS (Pulse Per Second)
PPS-сигнал представляет собой электрический импульс с частотой 1 Гц, генерируемый GPS-приёмником или иным устройством. Этот сигнал позволяет достичь субмикросекундной точности синхронизации.
Параметры PPS в pfSense:
| Параметр | Описание |
|---|---|
| PPS Signal Processing | Включение обработки PPS |
| Falling Edge | Использование заднего фронта импульса |
| Kernel PPS Clock Discipline | Передача PPS-сигнала непосредственно ядру ОС |
Kernel PPS Clock Discipline обеспечивает максимальную точность, однако требует аппаратной поддержки последовательного порта и корректной настройки драйвера.
Распространение NTP клиентам через DHCP
Для автоматической настройки NTP на клиентских устройствах рекомендуется передавать адрес NTP-сервера через DHCP.
Настройка DHCP-опции
В разделе Services > DHCP Server для соответствующего интерфейса необходимо указать адрес pfSense в поле NTP Server. При получении DHCP-аренды клиентские устройства автоматически настроят синхронизацию времени с pfSense.
| Параметр | Значение |
|---|---|
| NTP Server 1 | IP-адрес LAN-интерфейса pfSense |
| NTP Server 2 | Резервный NTP-сервер (опционально) |
Большинство операционных систем (Windows, macOS, Linux) автоматически применяют NTP-серверы, полученные через DHCP. Для устройств со статической конфигурацией NTP-сервер необходимо указывать вручную.
Мониторинг NTP
Status > NTP
Страница Status > NTP отображает текущее состояние синхронизации.
| Столбец | Описание |
|---|---|
| Status | Текущий статус каждого upstream сервера |
| Server | Адрес NTP-сервера |
| Ref ID | Идентификатор эталонного источника сервера |
| Stratum | Уровень удалённости от эталонного источника |
| Offset | Расхождение с локальными часами (миллисекунды) |
| Jitter | Вариация задержки между опросами |
Символы в столбце Status:
| Символ | Значение |
|---|---|
* | Текущий основной источник синхронизации |
+ | Кандидат на роль основного источника |
- | Сервер исключён алгоритмом выбора |
x | Сервер признан неисправным (falseticker) |
Журналирование
NTP поддерживает несколько уровней журналирования, настраиваемых в Services > NTP.
| Опция | Описание |
|---|---|
| Peer Messages | Журналирование событий пиринговых ассоциаций |
| System Messages | Системные события NTP |
| Statistics Logging | Сохранение статистики в /var/log/ntp |
| Reference Clock Statistics | Статистика аппаратных источников |
| Clock Discipline Statistics | Статистика коррекции часов |
Журналы NTP доступны через Status > System Logs на вкладке NTP. RRD-графики производительности NTP доступны через Status > Monitoring.
Диагностика проблем
Время не синхронизируется
- Проверить доступность upstream NTP-серверов: Diagnostics > Ping с адресами NTP-серверов
- Убедиться, что правила файрвола разрешают исходящий UDP-трафик на порт 123 с WAN-интерфейса
- Проверить статус NTP на странице Status > NTP - должен быть хотя бы один сервер с символом
* - Просмотреть журнал: Status > System Logs > NTP
- При значительном расхождении перезапустить NTP-сервис через Status > Services
Значительный дрейф времени
- Проверить, не работает ли pfSense на виртуальной машине с некорректной настройкой эмуляции часов
- Убедиться, что гипервизор не конфликтует с ntpd (VMware Tools, Hyper-V Integration Services иногда корректируют время параллельно с ntpd)
- Увеличить количество upstream серверов до 4-5 для улучшения точности
- Проверить значение Jitter на странице Status > NTP - значения выше 100 мс указывают на нестабильное сетевое соединение
Клиенты не получают время от pfSense
- Убедиться, что NTP-сервер привязан к интерфейсу, на котором находятся клиенты
- Проверить правила файрвола на LAN-интерфейсе - должен быть разрешён UDP-трафик на порт 123
- Проверить настройки DHCP - адрес pfSense должен быть указан в поле NTP Server
- На клиентском устройстве выполнить тестовый запрос:
ntpdate -q <ip-pfSense>(Linux/macOS) илиw32tm /stripchart /computer:<ip-pfSense>(Windows)
NTP блокируется файрволом
NTP использует UDP порт 123 как для входящих, так и для исходящих соединений. Необходимо убедиться в наличии следующих правил:
| Направление | Источник | Назначение | Порт | Протокол |
|---|---|---|---|---|
| Исходящее (WAN) | pfSense | Любой | 123 | UDP |
| Входящее (LAN) | LAN subnet | pfSense LAN IP | 123 | UDP |
Сравнение ntpd и chrony
pfSense использует классический демон ntpd. В Linux-дистрибутивах всё чаще применяется альтернативная реализация chrony. Основные различия:
| Характеристика | ntpd (pfSense) | chrony |
|---|---|---|
| Начальная синхронизация | Медленная (минуты) | Быстрая (секунды) |
| Работа на ВМ | Требует настройки | Адаптируется автоматически |
| Изолированная сеть | Orphan Mode | Local stratum |
| GPS/PPS | Встроенная поддержка | Встроенная поддержка |
| Протокол NTS | Не поддерживается | Поддерживается |
pfSense не поддерживает замену ntpd на chrony. При необходимости использования chrony его следует развернуть на отдельном сервере и настроить pfSense для синхронизации с ним.
Связанные разделы
- DHCP сервер pfSense - передача адреса NTP-сервера клиентам через DHCP-опцию
- DNS (Resolver и Forwarder) - разрешение имён NTP-серверов из пула pool.ntp.org
- Правила файрвола - управление доступом к NTP-сервису и разрешение исходящих NTP-запросов