ローカルNTPサーバーをセットアップするにはどうすればよいですか?


16

以下を使用して、Ubuntu Server 10.04にNTPサーバーをインストールしました。

sudo apt-get install ntp

NTPデーモンが動作し、123ポートでリッスンしているようです。

ただし、別のマシンから時間を取得できませんでした。

sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

必要な構成はありますか?

回答:


19

Ubuntuフォーラムの優れたハウツーを次に示します。http//ubuntuforums.org/showthread.php?t = 862620

フラッグラントコピーパスタ:

HOWTO:NTPサーバーのセットアップ

このチュートリアルでは、マシンをローカルネットワークタイムプロトコル(NTP)サーバーとして設定する方法、および/またはNTPデーモンを使用して定期的に正確なシステム時間を維持する方法について説明します。

NTPとは何ですか?

ネットワークタイムプロトコル(NTP)は、ローカルタイムクロックをネットワークタイムサーバーと正確に同期するために設計されたプロトコルです。タイムサーバーのNTPネットワークは階層的に設定されているため、すべてのユーザーがシステムとして何らかのレベルでサーバーとして入力できます(詳細については、Wikipediaページを参照してください)。

NTP階層は、クロック階層と呼ばれるさまざまなレベルに分けられます。最も正確なレベルであるStratum 0は、原子時計などのために予約されています。次のレベルであるStratum 1は、通常、Stratum 0クロックにローカル接続されたネットワークマシンによって使用されます。Stratum 2 ... 15は、低レベルのクロックと相互に接続されているNTPマシンです。

このガイドでは、Stratum 1および2マシンと正確に同期し、1日を通して可能な限り正確なシステムクロックを維持する方法について説明します。また、ローカルネットワーク上の他のマシンのStratum 2/3サーバーとしてマシンを動作させる方法に関するセクションも含まれています。

NTPサーバーを作成する必要がありますか?

いや...絶対に違う!ネットワーク上のクロックが標準時間(および他の時間)との未知の差に満足している場合、NTPサーバーをセットアップする必要はありません。バイオエンジニアリング実験のために、1ミリ秒以内にローカルネットワーク上の複数のマシンを同期するために、ラップトップに1つセットアップしました。さらに、以下に説明する他のさまざまな利点があります。

動機:

定期的に、変更されていないUbuntuボックスは、ntpdate(/usr/sbin/ntpdate)を使用して、外部のタイムサーバーと定期的にクロックを同期します。このアプローチでは、時計をコースの解像度と同期します(通常は1日に1回)。

コンピューターの時計は不完全であり、日中に(正しい)タイムサーバーからずれます。さらに、異なるコンピューターのクロックのドリフト率は異なるため、1日の終わりには、ローカルにネットワーク化された異なるマシン間で大きな差が生じ、特定の操作に干渉する可能性があります(たとえば、ソースコードを別のマシン?)。

ネットワーク上のマシンでNTPデーモンをローカルで実行することができます。これには複数の利点があります。まず、NTPデーモンはローカルマシンのドリフトレートを徐々に「学習」し、1日を通してそれを修正できます。上位レベルのタイムサーバーとの同期は1日に複数回行われ、同期をより正確にするために多くの異なるタイムサーバーを同時に使用できます。このように、NTPデーモンは正​​確な時間クライアントとして機能し、システムクロックを可能な限り標準時間に近づけます。

NTPデーモンは、正確なシステムクロックを維持することに加えて、ネットワーク上のマシン(必要な場合)がNTPタイムサーバーとして動作することを許可します。これにより、ネットワーク遅延が最小限に抑えられるため、ローカルネットワーク上の他のマシンがLANタイムサーバーと非常に迅速かつ正確に同期できるようになります。このようにして、ネットワーク上のマシン間のクロックの差は可能な限り最小限に抑えられます。Mac、さらにはWindowsのボックスでさえ、NTPサーバーと同期することができます(設定した場合)。

マシンをNTPサーバーとして設定する他の、あまり個人的でない動機があります。まず、LAN上の他のマシンがローカルに確立されたタイムサーバーと同期する可能性があるため、これを行うと、高レベルのNTPサーバーへの負担が軽減されます。また、ntpdateは、ntpdに-qフラグを使用することを推奨して廃止されました(これはその機能を模倣します)。したがって、ntpdをバックグラウンドで継続的に実行したくない場合でも、ntpdateは最終的にntpdに置き換えられるため、すぐに慣れることができます。

ntpdで正確なシステムクロックを維持する方法

  1. NTPデーモンをインストールする

まず、NTPデーモン(ntpd)をインストールします。

sudo aptitude install ntpd

前述したように、ntpdはクライアント(システム時刻を同期する)とサーバー(他のマシンに正確な時刻を提供する)の両方として機能できます。

オプションで、以前の(廃止された)時刻同期プログラムntpdateを削除することもできます。おそらく、ntpdを動作させた後にそうするのが賢明かもしれません。

sudo aptitude remove ntpdate
  1. デーモンを適切に構成する

ntpdの構成ファイルはにあり/etc/ntp.confます。デフォルトのUbuntuファイルでは、最適なパフォーマンスを得るためにおそらく変更が必要です。

変更する最初のセクションは、同期するサーバーのリストです。デフォルトのセクションは、おそらく次のようになります。

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

できるだけ正確な時間を取得するために、複数の異なるNTPサーバーと通信し、できるだけ物理的な場所に近づけておくことが望ましいです。オンラインにはさまざまなサーバーリストがありますが、おそらくここに最適なものがあります。使用するサーバーの適切な数については、いくつかの議論があります。1つは2つよりも優れており、3つ以上はおそらく、船外に行かない限り良いアイデアです。私が使用したいくつかのタイムサーバーの例を次に示します。

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

いくつかの適切なサーバーが見つかったら、それらをリストに追加し'iburst'、最も有望なサーバーを追加します。例えば:

server nist1-dc.WiTime.net iburst

これにより、ntpdは起動後にこのサーバーと非常に迅速に同期します。そうしないと、ntpdはサーバーリストとの一致に向かってゆっくりと移動する傾向があり(その性質上)、ネットワークの残りのタイムサーバーとして機能するのに十分な同期をとるのに15〜20分かかる場合があります。

また、一時的にインターネット接続が失われた場合のデフォルトとして、現在の現地時間を提供するために、サーバーリストの最後にいくつかの追加行を追加します。

server 127.127.1.0
fudge 127.127.1.0 stratum 10

これにより、インターネットから断続的に切断される時間のあるラップトップまたはその他のマシンでntpdを実行している場合に、厄介さが防止されます。

全体として、サーバーリストは次のようになります(これは私のものです。サーバーはおそらく異なるでしょう)。

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. 設定が機能することを確認してください

/etc/ntp.confファイルに適切なサーバーリストがあるので、デーモンを実行して、適切に同期するかどうかを確認します。アクティブなインターネット接続があることを確認してから、次を実行します。

sudo /etc/init.d/ntp restart

次に、システムログを監視して、タイムサーバーと同期しているかどうかを確認します。

tail -f /var/log/syslog

約10〜15秒(または、お気に入りのサーバーの後に「iburst」を置くのを忘れた場合は最大15〜20分)で、システムログに次のようなものが表示されます。

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

このメッセージが表示されない場合は、NTPサーバーネットワークとまだ適切に同期されていません。次を使用して、通信しているNTPピアのリストを確認します。

ntpq -c lpeer

「遅延」、「オフセット」、および「ジッター」フィールドがゼロ以外で、同期していない場合、おそらくしばらく待つ必要があることを意味します。サーバーリストに「iburst」引数を挿入したことをもう一度確認してください。参考までに、私の仲間は次のようになります。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. 共有!(オプション)

ntpdが実行され、選択したタイムサーバーと同期したら、他のマシンのタイムサーバーとして機能するように設定できます。これを行うには、次のようなセクションを追加します/etc/ntp.conf

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. 同期!(オプション)

手順1〜4を使用してNTPサーバーを設定したら、ネットワーク上の他のマシンをさまざまな方法でサーバーと同期できます。以下にいくつかの概要を示します。

ntpd:

ntpdを別のマシンにインストールしている場合は、ntp.confファイルのサーバーリストの最初のサーバーを使用するか、次のように-qオプションを使用して1回同期できます。

ntpd -q [IP address of your server]

ntpdate:

ntpdateがまだ別のマシンにインストールされている場合は、次のようにそれを使用してサーバーと同期できます。

ntpdate [IP address of your server]

注:マシン上でntpdを実行していて、何らかの理由でntpdateを使用して時刻を設定したい場合は、-uオプションを使用する必要があります。

ウィンドウズ:

Windowsマシンは、Simple Network Time Protocol(SNTP)と呼ばれる簡易バージョンのNTPを使用し、NTPサーバーと同期できます。新しいサーバーと同期するには、時刻をダブルクリックして、「インターネット時刻」タブに移動します。[サーバー]フィールドにサーバーのIPアドレスを入力します。LANタイムサーバーと同期するWindows XPのスクリーンショットを添付しました。

それでおしまい!プロセス全体は難しくありませんが、以前にNTPネットワークをあまり扱ったことのない人にとっては混乱を招く可能性があります。これがお役に立てば幸いです!サーバーの設定に問題がある場合はお知らせください。

マイク

リンク集

次のリンクが参考になりました...あなたもそうかもしれません!

https://help.ubuntu.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http://lists.ntp.isc。 org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm


リンクをありがとう。実際、設定を変更しませんでした!しばらくしてからうまくいきました。
カレド

ntpサーバーで実行ntpdate -s a_stratum_1_server_addressすると、すぐに強制的に同期させることができます。次に、他の(クライアント)マシンで 'ntpdate -q your_local_ntp_server`を実行すると、次のような応答が返されますserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
キースレイノルズ

リンクのみの回答は古くなる可能性があります。回答自体に重要な情報を含めてください。
ゼータ

5

これについては多くのリンクがあり、手順を複雑にしているように思えます。私の場合、プロキシサーバーとファイアウォールとして機能する1台のマシンがあり、他のすべてのマシンはそれを介してインターネットに接続しています。ファイアウォールのポートを開きたくありませんでした。したがって、プロキシサーバーはタイム(ntp)サーバーであり、他のマシン(クライアント)はそこから時間を取得する必要があります

すべてのマシンにntpをインストールする必要があり、すべてのマシンにもntpqをインストールする必要があります。

まず、ntpが機能しているかどうかを確認します。デフォルトでは、ntpd(ntpデーモン)はインストールされるとすぐに実行され、デフォルトが機能するはずです。ただし、ntpはすぐには機能しないため、しばらくお待ちください。次に、コマンド:

ntpq -c lpeer

次のような出力が得られるはずです。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

または:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

もしそうなら、あなたは接続されており、あなたのタイムサーバーは時間を取得しています。そうでない場合は、使用します

ps -e | grep "ntp" 

ntpが実行中であることを確認し、再試行してください。また、ntpを再起動してください。

sudo /etc/init.d/ntp restart

接続が確立されるまでにしばらく時間がかかる場合があります(ごめんなさい!)。デーモンはサーバーを頻繁にポーリングしません。上記の出力の「when」列は、サーバーがポーリングされてからの時間を秒単位で示しています。

次に、タイムサーバーから他のマシンに時刻を送信させる必要があります。

/etc/ntp.confサーバー上のファイルを編集します。ネットワークの行を追加する必要があります。私の場合、10.0.0.0ネットワークがあります。ntp.confファイルに、次の行を追加しました。

broadcast 10.255.255.255

ネットワークの各セグメントにブロードキャスト回線を追加する必要があります。ネットワークが私のように単純な場合、上記のような1行で十分です。ここで、上記のコマンドを使用してntpを再起動し、ntpqを使用して再度確認すると、次のように表示されます。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

出来上がり、放送中です。

ここで、すべてのクライアントマシンにブロードキャストサーバーから時間を取得させる必要があります。それぞれで、ファイルを編集します。

/etc/ntp.conf

サーバーを指定する行が表示されます。

行を追加する

server 10.10.10.1

またはサーバーのアドレスは何でも。次に、上記のコマンドを使用して、クライアントマシンでntpを再起動します。または、プロセスIDを取得して強制終了し、再度実行することもできます。なんでも。

次に、十分な時間の後、ntpqで確認します。

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

クライアントがタイムサーバーを使用していることがわかります。

これには時間がかかります。


ntpdate -s a_stratum_1_server_addressntpサーバーで実行して、すぐにポーリングと同期を強制できます。
キースレイノルズ

このタイプのブロードキャストはすべてのスイッチでサポートされていますか?たとえば、UDPブロードキャストはほとんどのスイッチ/ルーターによってブロックされています。
タナシス

1

受け入れられた答え(2018年7月現在)は私にはうまくいきませんでした。この他の方法は、2018年7月のUbuntu 16.04 LTSで正常に機能しました。

インストールされていない場合、NTPをインストールします

sudo apt-get update
sudo apt-get install ntp

構成ファイルを編集して、NTPサービスが要求を受信できるようにします。

sudo nano /etc/ntp.conf --syntax=sh

この行のコメントを解除します。

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
# broadcast 192.168.111.255

に:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 192.168.111.255

NTPサービスを再起動します

sudo /etc/init.d/ntp restart

これで、NTPサーバーが機能し、別のコンピューターが自分のコンピューターと同期できるようになります。上記のテストのいずれも、正常に機能するntpdate -u YourComputerはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.