Linux NTP クライアントによる時刻同期の設定

2010/07/10

Hyper-V のゲスト OS として、CentOS を利用している場合、時刻がずれることが多い。ここでは、CentOS において、NTP クライアントを実行する方法を紹介する。

ntp パッケージをインストールする。ntp パッケージには、NTP クライアントはもちろん、NTP サーバー機能も含まれている。

[root@centkun ~]# yum install -y ntp

手動で、タイムサーバー "ntp.nict.jp"( 任意 ) と時刻の同期を行う。

[root@centkun ~]# ntpdate ntp.nict.jp
7 Jul 14:33:15 ntpdate[7474]: step time server 133.243.238.244 offset -5520.903875 sec

ここで、ハードウェアクロックも同期させておく。

[root@centkun ~]# hwclock --systohc

次に、定期的にタイムサーバーと時刻合わせをするためにデーモンとして起動するようにする。ただし、NTP サーバーとして時刻の配信は行わない。(Hyper-V で、Linux を仮想 OS とする場合、NTP サーバーの構築は避けた方が良いだろう。)

"ntpd.conf" 構成ファイルを編集する。

[root@centkun ~]# vi /etc/ntp.conf 

同期先の任意のタイムサーバーを定義する。

(before)
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

(after)(after)
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst

"ntp.nict.jp" を同期先タイムサーバーとした。日本標準時プロジェクトの QA を参照すると、同じ内容を 3 行記述することが重要とのこと。

ファイルを保存し、ntpd を起動する。

[root@centkun ~]# /etc/init.d/ntpd start

デーモンが問題なく起動したら、ntpd を自動起動するように設定する。

[root@centkun ~]# chkconfig ntpd on

ntpd の状態を確認する。

[root@centkun ~]# ntpq -p
remote remote refid st t when poll reach delay offset jitter ==============================================================================
 ntp-a2.nict.go. .NICT. 1 u 4 64 177 10.161 -2607.3 1852.38
 ntp-b2.nict.go. .NICT. 1 u 13 64 177 11.350 -4465.9 2977.49
 ntp-b3.nict.go. .NICT. 1 u 25 64 77 11.259 -3179.3 1860.16
*LOCAL(0) .LOCL. 10 l 63 64 77 0.000 0.000 0.001

タイムサーバーの行頭に "*"  が表示されていれば時刻の同期が行われている。

今回のように時刻配信を行わない場合は、ポートを公開する必要はない。
もちろん、NTP サーバーとして利用する場合は、ポート (UCP:123) を開放する必要がある。

また、任意の NTP サーバーとの疎通確認は、"ntptrace" コマンドが利用できる。

[root@centkun ~]# ntptrace ntptrace ntp.nc.u-tokyo.ac.jp
ntp.nc.u-tokyo.ac.jp: stratum 1, offset 0.000012, synch distance 0.001138, refid 'GPS'