ubuntuでchronyを使ってシステム時刻同期を行う設定方法

 1. 時刻同期が必要な理由

この問題を理解する前に、RTC、CST、および UTC の時間の概念を理解する必要があります。

(1)RTC

Linux システムでは、一般にハードウェア時間と呼ばれる RTC 時間も確認できます。つまり、コンピュータのマザーボード上の特別なクロック チップ ハードウェアによって生成されるティック信号によってタイミングがとられます。

(2)協定世界時

協定世界時、UTC は、時間を統一するために世界のさまざまな国で使用されている標準です。非常に高精度なセシウム原子時計が発する時刻信号によって得られるSI標準原子時を基準とした地球の標準時として把握できます。UTC はゼロ タイム ゾーンの時刻です。

(3)CST

CST の内容は複数ありますが、簡単に理解すると、各国のタイムゾーンにおける特定の時刻になります。

中部標準時 (米国) UT-6:00 (米国 cst 時間: ゾーン 0 ではマイナス 6 時間)

中部標準時 (オーストラリア) UT+9:30 (オーストラリア中央時間: プラス 9 時間半)

中国標準時 UT+8:00 (中国中央時間: プラス 8 時間)

キューバ標準時 UT-4:00 (キューバ cst: マイナス 4 時間)。
たとえば、UTC 時間が 0 時の場合、中国の北京時間は東 8 タイムゾーンにあるため、中国の CST 時間は 8 時 (UTC)時間 + 8 時間)。

RTC はマザーボード上の専用のクロック チップ ハードウェアを使用して時間を計測するため、なぜ時刻同期が必要なのかを説明できますが、一方では各コンピュータの RTC の開始時刻が異なり、他方では RTC の誤差が生じるからです。タイミング精度は比較的高いです。全員の時刻を統一するには、一定期間内に RTC を UTC と同期させる必要があります。CCTV が毎晩 8 時に時刻を報じているとき、私たち一人ひとりが時計の時刻を同期させることは理解できます。ただ、コンピュータの同期サイクルは数分に 1 回など、より頻繁に行われます。

RTC と UTC の同期により時刻の統一の問題は解決できますが、世界中の人々が UTC 時刻を使用すると生活上不便になる可能性があります。最も単純な答えの例は、地域ごとに太陽の昇る時間が異なり、日の出と日の入りを頼りにする人々の生活習慣に大きな影響を与えるということです。したがって、UTC 時刻と地域のタイムゾーンに応じて、UTC を特定のタイムゾーンの時刻 CST に変換し、RTC と CST を同期する必要があります。

2. 一般的に使用される時刻同期ツール

時刻同期ツールは、実際には、コンピュータ間の時刻同期要求を実行するソフトウェアです。一連のプロトコルに従って、ローカル コンピューターが時刻同期機能を提供するリモート サーバーに対して同期要求を開始すると、時刻同期機能を提供するリモート サーバーが同期時刻値をローカル コンピューターに返し、ローカル コンピューターはローカル時刻を取得するために特定の計算を実行するためにサーバーから返された時刻値。

現在一般的な時刻同期ツールには ntp と chrony があり、ntp は通信にポート 123/UDP を使用し、chrony は通信にポート 323/UDP を使用します。ntp は比較的古いため、ここでは時刻同期に chrony を使用します。ubuntu システムに chrony をインストールするには、次のコマンドを実行するだけです。

sudo apt install chrony

Chrony はサーバー プログラム chronyd とクライアント プログラム chronyc に分かれており、chronyd を使用して他のコンピューターに時刻同期サービスを提供したり、chronyc を使用して他の時刻同期サーバーへの時刻同期要求を開始したりすることもできます。以下、chronyサーバー、chronyクライアントの設定方法を順に紹介していきます。

3. chronyサーバーを構成する

chrony サーバーでインターネット上のすべてのコンピュータに時刻同期サービスを提供したい場合は、通常はクラウド サーバー (ここでは Alibaba Cloud サーバーを選択しました) を使用して、この chrony サーバーをパブリック ネットワーク サーバー上で実行する必要があります。chrony は通信にポート 323/UDP を使用するため、サーバー コンソールに移動してサーバーのポート 323/UDP に入る権限を開く必要があります。

次に、ubuntu サーバーの /etc/chrony/chrony.conf を入力して chrony サーバーを設定します。ここでは主にいくつかのパラメーターに焦点を当てます。

  • サーバー: 外部時刻同期サーバーの送信元アドレスを指定するために使用され、任意の数の送信元アドレスを追加できます。
  • pool: 外部時刻同期サーバー プールを指定するために使用されます。
  • allow: 特定の IP を持つクライアント コンピュータがこの chrony サーバーに時刻同期要求を送信できるようにします。すべて許可に設定すると、すべてのネットワーク セグメント上のクライアント コンピュータが要求を送信できることを意味します。
  • ローカル ストラタム: 外部時刻同期サーバーが利用できない場合、サーバーのローカル時刻が、要求元のクライアント コンピューターに返される戻り値として使用されます。

ここで、サーバーのソース アドレスは、以下に示すように、デフォルトで Alibaba Cloud によって提供されるソースを直接使用できます。

server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst

テストの便宜上、許可はすべて許可として構成されます。これは、すべてのネットワーク セグメント上のクライアントがリクエストの送信を許可されることを意味します。

allow all

ここで、ローカル ストラタム 10 は、外部時刻同期サーバーが利用できない場合に、サーバーのローカル時刻を要求元のクライアント コンピューターに返すことができるように設定されています。

local stratum 10

chronyサーバーの起動、停止、状態確認方法は以下のとおりです。

#启动chrony服务
service chrony start

#重动chrony服务
service chrony restart

#查看chrony服务状态
service chrony status

#停止chrony服务
service chrony stop

4. chrony クライアントを構成する

ubuntu システムクライアントに対応して、ubuntu サーバーの /etc/chrony/chrony.conf を入力して chrony クライアントを設定します。構成パラメータは上記の chrony サーバーのパラメータと似ていますが、クライアントは外部時刻同期サービスを提供する必要がなく、データのみを要求するため、allow パラメータを省略できる点が異なります。

ここで、サーバーの送信元アドレスは、上記の chrony サーバーの IP アドレスとして指定されています (特定の IP アドレスは、独自のクラウド サーバー コンソールで確認できます)。次に示すように、次の my_chrony_test.aliyuncs.com を独自のサーバー アドレスに置き換えることができます。以下:

server my_chrony_test.aliyuncs.com minpoll 4 maxpoll 10 iburst

chronyクライアントの起動、停止、状態確認方法は上記サーバーと同様で以下の通りです。

#启动chrony客户端
service chrony start

#重动chronyd客户端
service chrony restart

#查看chrony客户端
service chrony status

#停止chrony客户端
service chrony stop

次に、chrony クライアントでの一般的なコマンドがいくつかあります。

#查看可用的时间同步源
chronyc sources -v

#查看时间同步源的状态
chronyc sourcestats -v

#对客户端系统时间进行强制同步
chronyc -a makestep

timedatectl を使用してローカル システム時間を管理します。

#修改本地系统时间
timedatectl set-time "2022-03-01 10:01:01"

#查看时区列表
timedatectl list-timezones
timedatectl list-timezones |grep Asia/S

#修改时区
timedatectl set-timezone Asia/Shanghai

#让RTC去和UTC进行同步
timedatectl set-local-rtc 0
#让RTC去和本地系统时间CST进行同步(不推荐)
timedatectl set-local-rtc 1

#启用向外部时间同步服务器发起同步的功能
timedatectl set-ntp yes
#关闭向外部时间同步服务器发起同步的功能
timedatectl set-ntp no
 

5. まとめ

ローカル クライアント コンピューターを A、サーバー コンピューターを B、外部ネットワーク時刻同期ソース コンピューターを C とすると、時刻同期プロセスは実際には A->B->C->... となります。

A は、A と B の時刻を一致させるために、B に対して時刻同期要求を開始します。

独自のシステム時間を維持するために、B は同じ方法で C に対して時刻同期要求を開始し、B と C の時刻が一致するようにします。

C は、他の外部ネットワーク時刻同期ソースとさらに同期する必要がある場合があり、つまり、時刻同期はレイヤーごとに実行されます。

おすすめ

転載: blog.csdn.net/m0_68732180/article/details/130251743