ネットワーク時間プロトコルとサーバー同期ネットワーク時間の概要

NTPの紹介

ネットワークタイムプロトコル(英語:ネットワークタイムプロトコル、略称:NTP)は、OSIモデルのアプリケーション層にある、パケットスイッチングを介してデータネットワーク内の遅延が変動するコンピューターシステム間のクロック同期のためのネットワークプロトコルです。1985年以来、NTPは現在も使用されている最も古いインターネットプロトコルの1つです。NTPは、デラウェア大学のDavid L.Millsによって設計されました。
NTPは、参加しているすべてのコンピューターのCoordinated Universal Time(UTC)時間を、エラーから数ミリ秒以内に同期させることを目的としています。Marzulloアルゴリズムの修正バージョンを使用して正確なタイムサーバーを選択し、可変ネットワーク遅延の影響を軽減するように設計されています。NTPは通常、パブリックインターネットで数十ミリ秒のエラーを維持でき、理想的なLAN環境で1ミリ秒を超える精度を達成できます。非対称ルーティングと輻輳制御により、100ミリ秒(またはそれ以上)のエラーが発生する可能性があります。
このプロトコルは通常、マスタースレーブアーキテクチャとして説明されますが、ピアツーピアネットワークで使用することもできます。この場合、両方のピアがもう一方の端を潜在的な時間ソースとして識別できます。送信および受信のタイムスタンプは、ユーザーデータグラムプロトコル(UDP)のポート123を使用して実装されます。これは、ブロードキャストまたはマルチキャストを使用することもできます。この場合、クライアントは、最初のラウンドトリップキャリブレーション交換後に時間の更新を受動的にリッスンします。NTPは、次の跳躍秒調整の警告を提供しますが、ローカルタイムゾーンまたは日光節約時間に関する情報を送信しません。
現在のプロトコルはバージョン4(NTPv4)であり、RFC5905ドキュメントで推奨されている標準です。RFC1305で指定されているバージョン3と下位互換性があります。

ntpコンポーネントは、Linuxプラットフォームでのntpプロトコルのソフトウェア実装です。一部のLinuxオペレーティングシステムには、デフォルトでntpコンポーネントがインストールされています。ntpが最初にインストールされていない場合は、プロトコルを使用して時間同期を完了できます。

サーバーがインターネットにアクセスできる時間同期方法

DNSが構成されています

サーバーは外部ネットワークにアクセスでき、DNSで直接構成されます

ntpdate 0.cn.pool.ntp.org 或 nptdate ntp1.aliyun.com

外部ネットワーク時間を同期させることができます。

DNSが構成されていません

セキュリティ上の理由から、一部のサーバーは外部ネットワークに接続されていますが、DNSは構成されていません。この場合、時間はタイムサーバーのIPアドレスから直接同期する必要があります。Aliyun(ntp1.aliyun.com)のタイムサーバーIPを使用して、直接同期できます。

ntpdate 120.24.81.91  或者 清华的时间服务器ntpdate 84.16.73.33

サーバーがインターネットにアクセスできない場合の時間同期方法

LAN上にサーバー(IPアドレスはIP_TIME)があり、時刻が正しいと仮定して、このサーバーをLAN ntpタイムサーバーとして構成すると、他のサーバーが実行されます。

ntpdate IP_TIME

このようにして、少なくともすべてのサーバーがこのサーバーの時刻と同期されます。このサーバーをネットワーク時刻と同期する必要があるかどうかは、機能要件によって異なります。本当に必要な場合は、これがインターネットにアクセスでき、上記のようにネットワーク時間に同期できる必要があります。残りはインターネットにアクセスできない状態のままにすることができます。

例えば

2つのLinuxサーバーAとBがあり、両方をネットワーク時間に同期させる必要があると想定します。
Aは外部ネットワークに接続されています。DNSサーバーは構成されていませんが、120.24.81.91(Alibaba Cloud Time Server)にpingを実行できます。時間を直接同期させることができます。
Bは外部ネットワークを開かず、ping 120.24.81.91は接続を報告します。ネットワークに到達できません。外部ネットワークサーバーからの時刻を確実に同期できません。ntpdate 120.24.81.91を実行すると、同期に適したサーバーが見つからないか、サーバーを使用できず、終了することが報告されます。
ネットワーク時間プロトコルとサーバー同期ネットワーク時間の概要
ソリューションは3つのステップに分かれており、AとBのファイアウォールが閉じられ、プロセス全体がルートアカウントによって操作されます。

  1. 外部ネットワークからの時刻を同期し、
  2. Aをntpサーバー(NTPサーバー)として構成し、
  3. BはAからの時間を同期します。

ASyncネットワーク時間

サーバーの最初の同期時刻は次のように表示されます

[root@localhost ~]# ntpdate 120.24.81.91
10 Aug 09:46:07 ntpdate[15071]: step time server 120.24.81.91 offset 1.423469 sec

2回目は次のように表示されます

[root@localhost ~]# ntpdate 120.24.81.91
10 Aug 14:16:14 ntpdate[12150]: adjust time server 120.24.81.91 offset -0.030012 sec

実行されるたびに、オフセットの背後にあるエラーが変化し、傾向はますます正確になります。

AをNTPサーバーとして構成する

AをNTPサーバーとして構成するには、最初に構成ファイル/etc/ntp.confを変更します。変更して見下ろす方法。
変更が完了したら、次のcatコマンドを実行します。ただし、192.168.2.0が自分のLANのネットワークセグメントに変更される場合を除き、その他の要件は次と同じである必要があります。以下よりも多くのステートメントがある場合は、コメントアウトして、そうでないものを追加します。たまたま以下と同じで、192の場所がLANセグメントでもある場合は、何も変更する必要はありません。

#cat /etc/ntp.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'  

restrict default ignore                                //#设置默认策略为允许任何主机进行时间同步
restrict 127.0.0.1                                         //给于本机所有权限
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap     //给于局域网机的机器有同步时间的权限
server 0.127.127.1.0               //设置时间服务器为本机,可以设为120.24.81.91外网服务器
server  127.127.1.0  # local clock
fudge  127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay  0.008
keys    /etc/ntp/keys

次に実行します

# /etc/init.d/ntpd start 或 #service ntpd start

OKが表示され、成功を示します。マシンはすでにNTPサーバーです。

構成ファイルが繰り返し変更される場合は、

# /etc/init.d/ntpd restart

構成ファイルを再ロードします。

BとAの同期時間

AがNTPサーバーサービスを開始した後、Bで同期時間コマンドを実行する前に5分間待機する必要があります。この時間は、NTPサーバーが現地時間を同期するために使用されます。
5分後にBで実行

[root@DB1 ~]# ntpdate AIP (AIP是A的内网IP地址)
10 Aug 13:35:59 ntpdate[10737]: adjust time server AIP offset 0.004937 sec

、AからBのシステム時間を同期できます。これは、外部ネットワーク時間を同期するのと同じです。

AがNTPサーバーを起動してから5分待たずに、すぐにBと時刻を同期するとどうなりますか?

NTPサーバー自体の時刻がオペレーティングシステムと同期されていないため、エラーが返されます

no server suitable for synchronization found

ntpdate -dAIPコマンドを使用して表示できます。

[root@DB1 ~]# ntpdate -d AIP
10 Aug 13:28:07 ntpdate[10719]: ntpdate [email protected] Thu Oct  5 04:11:32 EDT 2006 (1)
Looking for host 192.168.2.10 and service ntp
host found : 192.168.2.10
transmit(192.168.2.10)
receive(192.168.2.10)
省略
192.168.2.10: Server dropped: strata too high
server 192.168.2.10, port 123
stratum 16, precision -20, leap 11, trust 000
refid [192.168.2.10], delay 0.02573, dispersion 0.00000
省略  

「サーバーが削除されました:階層が高すぎます」および「階層16」というプロンプトが表示されます。
層の通常の範囲は「0〜15」です。
何もする必要はありません。しばらく待ってからコマンドを実行してみてください。階層11、精度-20、飛躍00、信頼000になります。Stratum 11は正常範囲であり、ntpdateAIPを実行することで時刻が正常に同期されます。

サーバーBが常にサーバーAと整合性がある場合はどうすればよいですか?

B.時間を頻繁に修正する必要がある場合、crontabは目的を達成するためにntpdateコマンドを構成します。

crontab -e  
9 7 * * * /usr/sbin/ntpdate  AIP

オペレーティングシステムの時刻をハードウェアの時刻に同期することで、必要に応じてcrontabを設定することもできます。ハードウェア時間をオペレーティングシステムの時間と一致させることの利点は、サーバーの再起動後にハードウェアの時間がシステム時間を上書きすることによって引き起こされるエラーを回避できることです。

LANのNTPサーバーとして機能しながら、外部ネットワークから時刻を同期できますか?

テスト後、ntpdサービスの実行中はntpdateコマンドを実行できません。ネットワーク時間を頻繁に同期し、LANのNTPサーバーとして他のサーバーと時間を同期するには、Aのcrontabタイミングタスクを次の順序で実行する必要があります。

1. ntpdate 外网时间服务器ip
2. service ntpd start
3. 间隔一段可接受的时间,间隔约长,和网络时间的误差越大。
   此时B可同步到A的时间
4. service ntpd stop
下面循环回第一步
1. ntpdate 外网时间服务器ip

おすすめ

転載: blog.51cto.com/14947900/2550843