Изменение NTP-сервера на основе доступных подключений

Изменение NTP-сервера на основе доступных подключений

Пожалуйста, обратитесь к иллюстрации.

У меня есть две машины в локальной сети, только одна из них имеет подключение к Интернету (через другой интерфейс). На сервере 1 установлены неисправные аппаратные часы. На сервере 2 установлены хорошие аппаратные часы реального времени.

К сожалению, у сервера 1 обычно есть подключение к Интернету, а у сервера с хорошим аппаратным RTC — нет, поэтому в зависимости от состояния подключения к Интернету сервер 1 либо самый точный, либо крайне ненадежный.

Крайне важно, чтобы обе машины работали в тесной синхронизации друг с другом.

Возможно ли сделать так, чтобы система автоматически переходила от сценария 1 к сценарию 2, возможно, посредством автоматической корректировки уровня каждой машины?

Сценарий 1 против сценария 2

решение1

Во-первых, вам вряд ли разрешат доступ к Stratum1сервер, если только вы не известны администраторам сервера Stratum 1 и они не дали вам явного разрешения на это. Сказав это, то, какой у этого сервера стратум, не имеет значения для этого ответа, поэтому я буду называть эту машину сервером "низкого стратума" для ясности.

Вам следует настроить его server2на получение времени с сервера нижнего уровня, а не с server1. Для этого потребуется, чтобы он мог (по крайней мере для NTP) получить доступ к интернет-ссылке на server1. Если server2у нет ссылки на Интернет, с помощью которой он мог бы получить доступ к серверу нижнего уровня, то вы можете разрешить ему сделать это, выполнив следующие команды на server1(как root):

iptables -A FORWARD -s server2 -p udp --dport 123 -j ACCEPT
iptables -A FORWARD -s server2 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

Первые две строки разрешают трафик NTP от хостаserver2 только. Примечание: Я не уверен на 100%, что TCP-соединения обязательны, но это не повредит. Вы можете также добавить -d lowstratumserverэти две строки, чтобы эта машина не могла получить доступ ни к одному другому серверу (только к серверу нижнего уровня). Следующая строка разрешает обратный трафик от установленных соединений. Четвертая строка включает преобразование сетевых адресов. Последняя строка включает пересылку IP-пакетов. С ними server1теперь есть (минимальный) маршрутизатор.

Если маршрутизатор по умолчанию server2отсутствует server1, вам также потребуется добавить явный маршрут для сервера нижнего уровня:

ip route add lowstratumserver via server1

При этом server2будет использовать server1его как маршрутизатор для сетевого подключения lowstratumserverи свой обычный маршрутизатор для всего остального.

Затем настройте server2использование в качестве источника NTP сервера нижнего уровня в Интернете, а не server1.

Наконец, настройте его server1так, чтобы он подключался к server2, а не к серверу Stratum 1 в Интернете.

Теперь server2синхронизируется с сервером нижнего уровня в Интернете, а не с server1; и server1будет синхронизироваться server2всегда, устраняя необходимость добавлять настройку отказоустойчивости (которая в лучшем случае будет нестабильной).

Это приведет к небольшой потере точности из-за дополнительного скачка, но всегда лучше синхронизировать машины в вашей локальной сети с машиной с хорошим аппаратным RTC, чем с машиной с некачественным.

Связанный контент