web-dev-qa-db-ja.com

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

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

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

15
Khaled

Ubuntuフォーラムからの優れたハウツーは次のとおりです。 http://ubuntuforums.org/showthread.php?t=86262

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

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:

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

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

マイク

リンク集

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

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

17
RobotHumans

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

すべてのマシンに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

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

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

5
Wastrel

受け入れられた答え(2018年7月現在)は私にはうまくいきませんでした。この他の方法は、2018年7月のbuntu 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などの上記のテストはすべて正常に動作するはずです。