インターネットのないローカルネットがあり、そこにあるすべてのコンピューターの時間を同期したい。私は絶対時間を気にしません、それはすべてのためにちょうど同じであるべきです。
これに関するいくつかの投稿を見つけました。最も有用なものは次のとおりです。
サーバー
私はIP 192.168.1.123でサーバーをセットアップしましたが、それはうまく機能しているようです:デーモン「ntpd」が実行されており、etc/ntp.confに行を追加していました
# this sets the source to local time
server 127.127.1.0
fudge 127.127.1.0 stratum 8
# this makes the ntpd deamon to send out its time on the local net.
broadcast 192.168.255.255
Ntpqコマンドで確認しました:
ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.255.255 .BCST. 16 B - 64 0 0.000 0.000 0.000
「BCST」はさらに放送中と言い、IPはローカルネット(Bクラスネットワーク、したがって2x 255)上のすべてのコンピューターへの放送を示します。
クライアント
クライアント側にもntpをインストールし、デフォルトの/etc/ntp.confを使用して次の行を追加しました
server 192.168.1.123 iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 8
192.168.1.123はサーバーブロードキャストのローカルIPであり、他の行はクライアント(ラップトップ)に、ネットワーク接続がオフのときに独自のクロックを使用するように指示する必要があります。クライアントでサービスを再起動し、ntpqを実行して接続を確認しました
ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.1.123 .INIT. 16 u 1 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 8 l 6 64 1 0.000 0.000 0.000
このコマンドを繰り返すと、「when」列が両方をカウントアップし、64秒に達すると再び0で始まることがわかります。 64秒後にこれがこれに変わると予想していました。
ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.123 .INIT. 16 u 1 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 8 l 6 64 1 0.000 0.000 0.000
サーバーIPの前の「*」に注意してください。しかし、それはnotでした。約1時間後に得たものは
ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.1.123 .INIT. 16 u 1 64 0 0.000 0.000 0.000
*LOCAL(0) .LOCL. 8 l 63 64 377 0.000 0.000 0.000
NTPには2つのソースが設定されているが、リモートソースが機能していない/使用できない/使用されていないため、フォールバックケースのローカルクロックが使用されているため、その解釈が正しいかどうかを確認してください。
私が試したもの
1時間以上待機し、Sudo /etc/init.d/ntp restart
でntpd
を数回再起動し、再起動しました。さらに、ローカルセクションクロックをコメントアウトしたため、唯一のサーバーはserver 192.168.1.123
でした。その「*」を表示することができませんでした。また、私はntp.confのセクションを見ました
#if you want to listen to time broadcasts on you local subnet,
#de-comment the next lines. Please do this only if you trust
#everybody on the network!
#disable auth
#broadcastclient
コメントを解除してサービスを再起動しようとしましたが、それでも星は表示されませんでした。ただし、このセクションは、ntp構成で見た他の投稿またはインターネットの結果で見つかったため、最後のセクションについて疑問に思っています。ローカル設定にはいくつかのものがあり、ほとんどはサーバーアドレスだけで見つけられるようです。クライアントからサーバーへのPingは問題ありません。ファイアウォールなどはありません。
質問
私はアイデアがありません。私は時間を送信している完全に動作するNTPサーバーを備えたサーバーを持っていると思います。しかし、サーバーから時間情報を受信できないクライアントがあります。
クライアントを実行するにはどうすればよいですか?
問題は解決され、システムは動作するようになりました。この要約は、自分自身と、オフラインNTPサーバーをセットアップする必要がある他のユーザー(再度)に対して行います。実際の問題は、ブロードキャストモードでの実験がサーバー上のntpdを破壊し、別のサーバーの再起動で再び機能したことであるように思われました。上記の記事を読んだときにうまくいかなかった理由はよくわかりません。
背景
問題の一部は、NTPがどのように機能し、何をしているのか理解できなかったことです。マニュアルページもサーバーガイド16.04も、異なるコンピューターが連携して動作するための簡単な概要を示していません。まず、NTPクライアントとサーバーは誤解を招きます。常に同じプログラム、NTPデーモン、 "ntpd"。時刻同期を機能させるには、ローカルネットワーク上のすべてのコンピューターにインストールする必要があります。私はまだWindowsクライアントについてはチェックしませんでしたが、それらのバージョンもどこかにあると確信しています(それについての情報がある場合はコメントしてください-組み込み関数が好ましいでしょう)。オフラインシステムはシステムクロックでのみ動作します。メインクロックだけでなく、複数のシステムクロックを使用すると有益です。各クロックが時間のずれを減らすために追加されるためです。言い換えれば、1つのクロックですべてのコンピューターが同期されますが、より多くのクロックを考慮すると、絶対時間はより安定して正確になります。私が読んだものから、4は良い数字であるはずです。 NTPは、同時にサーバーとしてもクライアントとしても機能できます。デフォルトの構成ファイルには、実際にはサーバーロールの構成セクションはありません。単純なモデルとして、各ntpd
インスタンスは、定期的なポーリングによってどこかから時間情報を取得するクライアントです。別のntpd
をポーリングするか、ローカルのオンボードクロックをポーリングします。他の人からの投票に答えると、サーバーになります。たとえば、プロキシサーバーによってインターネットに接続されているネットワーク。そのプロキシサーバーはntpd
を実行して、複数のインターネットNTPサーバーをポーリングし、そのために独自の時間をsnycします。すべてのローカルクライアントがその(同期化された)時間の間そのプロキシサーバーをポーリングし、ポーリングへの応答を開始すると、それはNTPサーバー自体になります。オフラインの場合は、オンラインサーバーがオンボードクロックに置き換えられることを除いて、まさにそれです。
構成セットアップでは、/etc/ntp.conf
ファイルを編集する必要があります。デフォルトは非常に充実しています。以下を除くすべてを削除しました:
# this is the IP or name of the local networks NTP server. This line
# should be commented out on the server
server 192.168.1.111
# this enables checking the local clock. Do not change that IP values!
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# this lines are required to run the ntpq -p command to verify the
# function of the system
restrict 127.0.0.1
restrict ::1
この例のサーバーにはIP 192.168.1.111があります。この構成は、ネットワーク上のすべてのPCで同じにすることができます。ラップトップではないクライアントのローカルクロックセクションのみをコメント化します。回線は、しばらくの間ネットを離れて動作する可能性のあるラップトップおよびその他のデバイスに保持する必要があります。最初のサーバーセクションは、サーバー上でコメント化する必要があります。
編集後、開始/停止スクリプトでサービスを再起動します
Sudo /etc/init.d/ntp restart
チェック実行用
ntpd -p
質問のバージョンよりも少し短く、同じ出力が得られます。クロックラインの前に、使用されていることを示す*
があります。動作中のサーバーの出力は次のとおりです。
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 2 1 6 64 377 0.000 0.000 0.000
列がカウントアップするとき、リーチは0を超えるものです。動作中のクライアントの出力は次のとおりです。
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.111 LOCAL(0) 3 u 31 64 377 0.206 -5.900 0.654
Refid = .INIT.
をまだ使用している場合、機能しません。数字は明らかに異なります。クライアントは0.000 0.000 0.000の値を表示しないでください。追加のフォールバッククロックが設定されたクライアントの出力(現在使用されていないことに注意してください-*
なし):
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.111 LOCAL(0) 3 u 31 64 377 0.206 -5.900 0.654
LOCAL(0) .LOCL. 8 l 6 64 1 0.000 0.000 0.000
added infosデフォルトの構成は、ブロードキャスト送信およびブロードキャスト受信オプションを記述します。通常の操作ではこれをアクティブにしないでください。システムを稼働させ、クライアントとサーバーを構成する必要はありません。何かが動かなくなった場合は、サービスを再起動するだけでなく、完全に再起動してください。 ubuntuサーバーでも。システムが実行されなかったとき、ps -e |grep ntp
shouldが2つの 'ntpd'プロセスであることに注意しました。ペアは一貫して開始および停止できます。実行中のバージョンでは、各コンピューターに1つしか表示されませんでした。デフォルトの設定ファイルには、役に立つかもしれない他の制限オプションとロギングオプションがあります。それらをテストしませんでした。
うまくいけば、それがいつか役に立つと思います。訂正がある場合はコメントしてください、私は答えを更新しようとします。
猫男
PS: Ken Mollerup に大いに感謝します。そのコメントはNTPシステムのより良い理解につながります。