図を参照してください。
LANには2台のコンピュータがあり、そのうちの1つだけがインターネットに接続されています(他のインターフェイスを介して)。サーバー1にはジャンクハードウェア時計があります。サーバー2には良いハードウェアRTCがあります。
残念ながら、サーバー1は通常インターネットに接続されていますが、良いハードウェアRTCを備えたサーバーはそうではありません。したがって、インターネット接続の状態に応じて、サーバー1が最も正確であるか非常に不安定です。
両方のシステムが緊密に同期された状態を維持することが重要です。
各システムの階層を自動的に調整して、システムがシナリオ 1 からシナリオ 2 に自動的に失敗するようにできますか?
答え1
まず、階層へのアクセスが許可される可能性はほとんどありません。1Stratum 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
最初の 2 行はホストの NTP トラフィックを許可します。server2
ただ。注:TCP接続が必要かどうかは100%確信できませんが、問題ではありません。-d lowstratumserver
このコンピュータが他のサーバー(低レベルのサーバーのみ)にアクセスできないように、この2行を追加することもできます。次の行は、確立された接続の戻りトラフィックを許可します。 4行目はネットワークアドレス変換を有効にします。最後の行はIPパケット転送を有効にします。これでserver1
(最小)ルーターができました。
server2
デフォルトのルーターがない場合は、下位server1
レベルのサーバーへの明示的なパスも追加する必要があります。
ip route add lowstratumserver via server1
これはネットワーク接続のためのルーターとしてserver2
機能し、他のすべては一般的なルーターとして機能します。server1
lowstratumserver
その後、構成は代わりにserver2
インターネット上の低レベルサーバーをNTPソースとして使用しますserver1
。
最後に、インターネットの代わりにStratum 1サーバーserver1
に接続するように設定します。server2
代わりにserver2
、インターネットの下位レベルのサーバーと同期し、フェールオーバー設定を追加しなくてもserver1
常にserver1
同期されますserver2
(せいぜい脆弱です)。
これにより、追加のホップによって精度がわずかに低下しますが、低品質のRTCを使用するシステムよりも、ローカルネットワーク上のシステムを優れたハードウェアRTCを使用するシステムと同期する方が常に優れています。