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.
Ответ 5
Вы не можете изменить порт NTP, но вы можете добавить cmd для iptables, чтобы перенаправить его через порт VPN.
Подробности: http://openvpn.net/archive/openvpn-users/2007-11/msg00223.html
Ответ 6
Вы можете использовать источник NAT на хосте, на котором запущен ntpd, чтобы заменить порт источника 123 номером порта выше 1024.