時計は時間が経つにつれて徐々に狂っていきますが、これはLinuxやWindowsなどコンピュータの時計も同じです。

サーバーのログには時刻が書き込まれます。
また、メールサーバーの場合はヘッダーに時刻を書き込みます。

その際、時計が狂っていると何かと不便です。

クライアントのログとサーバーのログの時刻が合わなければ、ログ解析が困難になりますし、メールの送信時刻が実際の時刻と異なっているのも好ましいことではありません。

特に、サーバーのログは、場合によっては何らかの証拠として提出しなければならないこともあるので、正確な時刻に合わせることはサーバー管理にとって必須の作業となります。

インターネットの世界では、時刻を同期させるためのプロトコルであるNTP(Network Time Protocol)を用いてコンピュータの時計を基準時刻に合わせます。
基準時刻を持つNTPサーバーは公開サーバーとしてインターネット上に複数台設置されており、ローカルネットワーク内のNTPサーバーはそれらのNTPサーバーと時刻を同期します。

ntpdのインストール

$ su -
Password: 
# yum install ntp

ntp.confの編集

ntpdの設定ファイルであるntp.confを編集します。
ntp.confでは時刻同期先となるNTPサーバーの指定や、時刻同期の要求を許可するNTPクライアントの設定等を行います。

基準時刻を持つNTPサーバーは多数公開されています。
それらのNTPサーバーは階層構造となっていて、最上位の階層にくるNTPサーバーをStratum 1(ストレータム1)と言います。
日本では福岡大学のNTPサーバー2台がStratum 1にあたります。
また、その下位にくるStratum 2以下のNTPサーバーは最終的にStratum 1のNTPサーバーと同期されます。
ntpdでは、上位stratumだけではなく、複数の同位・下位stratumのNTPサーバーと同期可能です。

日本での代表的なNTPサーバーの一部が下記になります。

Stratum ホスト名 備考
Stratum 1 ntp.nict.jp 情報通信研究機構が公開している。Stratum 1のNTPサーバーを一般ユーザが直接利用すべきではないとされているが、高い処理能力を持ち合わせていることから一般ユーザーが直接利用しても良いとされている。
Stratum 1 clock.nc.fukuoka-u.ac.jp 福岡大学が公開している。NTPサーバと言えば福岡大学というイメージがあり、たくさんのユーザーが利用していたが、アクセス集中による過負荷に悩まされている。
Stratum 1 clock.tl.fukuoka-u.ac.jp 福岡大学が公開している。
Stratum 1 ntp1.jst.mfeed.ad.jp インターネットマルチフィード(MFEED)が公開している。

ntp.confの設定例

# vi /etc/ntp.conf
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

server ntp.nict.jp
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

ntp.confの主なキーワードは下記になります。

キーワード 解説
server 参照するNTPサーバーを指定する。複数行記述することで、複数のNTPサーバーを指定することも可能。
restrict 特定のホストからのアクセス制御を指定する。

restrictで指定可能なフラグは下記になります。

フラグ 解説
ignore 全てのパケットを拒否する。
noquery ntpdのクエリー(照会)を無視する。
nomodify サーバーの状態を変更しようとするntpq のクエリーを無視する。
notrust 指定したホストを参照先サーバーとして使用しない。
notrap trapサービスのためのパケットを拒否する。

コマンドによる時刻同期

# ntpdate -b ntp1.jst.mfeed.ad.jp
29 Sep 19:43:43 ntpdate[3273]: step time server 210.173.160.27 offset 0.014301 sec

ntpdateコマンドはNTPを使用して時刻を合わせるコマンドです。
指定されたNTPサーバーに対し時刻を問い合わせ、教えてもらった時間を設定します。
ntpdを起動する前に時刻を合わせておきます。

ntpdの起動

# /etc/rc.d/init.d/ntpd start
Starting ntpd:                                             [  OK  ]

再起動後もntpdが起動するように設定します。

# chkconfig ntpd on

ntpqコマンドでntpdの動作を確認します。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-b2.nict.go. .NICT.           1 u   51   64    7   17.308  443.265 154.609
 ntp1.jst.mfeed. 172.29.2.50      2 u   50   64    7   10.756  446.675 155.030
 ntp2.jst.mfeed. 133.243.236.17   2 u   49   64    7    9.947  447.816 154.781
 ntp3.jst.mfeed. 172.29.3.50      2 u   50   64    7   15.771  443.772 151.893

NTPクライアントの設定

ローカルネットワークのコンピュータが上記で構築したNTPサーバーを参照するように設定します。

CentOSでのNTPクライアント設定手順

# vi /etc/ntp.conf
server	192.168.0.3

serverキーワードにて、参照先のNTPサーバー(上記で構築したNTPサーバー)を指定します。

# /etc/rc.d/init.d/ntpd start
Starting ntpd:                                             [  OK  ]
# chkconfig ntpd on