NTPD: использовать неограниченный порт для связи

При запросе ntp-серверов с командой ntpdate я могу использовать аргумент -u, чтобы сделать исходный порт неограниченным портом (порт 1024 и выше).

С ntpd, который предназначен для работы в фоновом режиме, я не могу найти способ включить этот параметр. Таким образом, исходный порт всегда 123. Он плохо работает с моей конфигурацией брандмауэра.

Есть ли опция конфигурации в ntp.conf, чтобы использовать случайный порт источника?

Ответ 1

Не кажется, что это возможно... см. страницу ntp:

Если вы собираетесь запустить ntpd, вам необходимо исправить вашу сеть/брандмауэр/NAT, чтобы ntpd мог иметь полный неограниченный доступ к UDP-порту 123 в обоих направлениях.

Если это невозможно, вам может потребоваться запустить ntpd на самом брандмауэре, чтобы он мог иметь полный неограниченный доступ к UDP-порту 123 в обоих направлениях, а затем предоставить ему время для ваших внутренних клиентов.

Если это невозможно, единственным вашим вариантом может быть приобретение необходимого оборудования для подключения к одному или нескольким вашим собственным компьютерам и запуск собственного сервера Stratum 1 или покупка предварительно упакованного сервера Stratum 1.

Ответ 2

Мне удалось решить эту проблему, заменив официальный NTPD на OpenNTPD. Хотя официальный NTPD фиксирован для UDP-порта 123, OpenNTPD использует непривилегированные порты.

Ответ 3

У меня была эта проблема раньше и не удалось найти решение. Я закончил тем, что просто добавил запись в crontab, которая запускает ntpdate один раз в час. Это дает достаточно хорошее разрешение для всего, что я делаю, поскольку мои часы никогда не дрейфуют более 1 секунды в час.

Ответ 4

Как писал @Andy_Whitfield, ntpd не может этого сделать. Но есть альтернативы, такие как OpenNTPD и Chrony. AFAIK, Chrony также используется Android.

В моей настройке я использую chrony. Он использует непривилегированный порт для запроса удаленных серверов. У этого метода гораздо больше шансов пройти NAT. Это тот же механизм, к которому также используется ntpdate -q для запроса сервера, но только при вызове как непривилегированный пользователь.

Я думаю, основная проблема, почему она иногда не работает, заключается в том, что многие маршрутизаторы NTP сами внедрили свои внутренние часы. На этих устройствах порт используется и, следовательно, не может быть NAT. Это может быть даже в случае, если устройство не отвечает на запросы NTP.

Ответ 6

Вы можете использовать источник NAT на хосте, на котором запущен ntpd, чтобы заменить порт источника 123 номером порта выше 1024.