利用可能な接続に基づいて NTP サーバーを変更する

利用可能な接続に基づいて NTP サーバーを変更する

図をご参照ください。

LAN 上に 2 台のマシンがありますが、そのうち 1 台だけがインターネットに接続されています (別のインターフェイス経由)。サーバー 1 のハードウェア クロックは不良です。サーバー 2 のハードウェア RTC は良好です。

残念ながら、サーバー 1 は通常インターネットに接続されていますが、優れたハードウェア RTC を備えたサーバーにはインターネット接続がないため、インターネット接続の状態に応じて、サーバー 1 が最も正確になるか、信頼性が非常に低くなるかのどちらかになります。

両方のマシンが互いに緊密に同期された状態を保つことが重要です。

各マシンの階層を自動的に調整することで、システムをシナリオ 1 からシナリオ 2 に自動的に移行させることは可能ですか?

シナリオ 1 とシナリオ 2

答え1

まず、Stratumへのアクセスが許可される可能性は非常に低いです1ただし、Stratum 1 サーバーの管理者に知られており、管理者から明示的に許可されている場合は除きます。ただし、この回答ではサーバーの Stratum は重要ではないため、わかりやすくするために、このマシンを「低 Stratum」サーバーと呼ぶことにします。

server2を ではなく、低ストラタム サーバから時刻を取得するように設定する必要がありますserver1。そのためには、 が (少なくとも NTP 用に) 上のインターネット リンクにアクセスできる必要がありますserver1server2に低ストラタム サーバにアクセスできるインターネット リンクがない場合は、 で次のコマンドを (root として) 実行して、低ストラタム サーバにアクセスできるようにすることができますserver1

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

最初の2行はホストからのNTPトラフィックを許可しますserver2 のみ. 注: TCP 接続が必要かどうかは 100% 確信はありませんが、問題にはならないはずです。-d lowstratumserverこのマシンが他のサーバーにアクセスできないように、この 2 行も追加することをお勧めします (低階層のサーバーのみ)。次の行は、確立された接続からの戻りトラフィックを許可します。4 行目は、ネットワーク アドレス変換を有効にします。最後の行は、IP パケット転送を有効にします。これで、server1(最小限の) ルーターが完成しました。

server2デフォルト ルータがない場合はserver1、低層サーバの明示的なルートも追加する必要があります。

ip route add lowstratumserver via server1

これにより、は へのネットワーク接続用のルーターとしてserver2使用され、その他すべてには通常のルーターが使用されます。server1lowstratumserver

次に、server2ではなく、インターネット上の低ストラタム サーバーを NTP ソースとして使用するように設定しますserver1

最後に、インターネット上の Stratum 1 サーバーではなく、server1に接続するように設定します。server2

は、server2ではなくインターネット上の低階層サーバーと同期するようになりましたserver1。また、常にserver1と同期するためserver2、フェイルオーバー設定 (脆弱になる可能性あり) を追加する必要がなくなります。

この場合、ホップ数が増えるため精度が若干低下しますが、ローカル ネットワーク上のマシンを、低品質のハードウェア RTC を搭載したマシンではなく、優れたハードウェア RTC を搭載したマシンと同期する方が常に優れています。

関連情報