RedHat-NTP設定

NTP(Network Time Protocol)について

NTPとは

NTPとは、ネットワークに接続した機器が正しい現在時刻を取得するための通信プロトコルです。

NTPサーバ(タイムサーバ)を設定すると、定期的にNTPサーバにアクセスして、自動的に時刻を補正することができます。

NTPの一般的なポート番号は、「123」です。


公開NTPサーバについて

日本国内には公開NTPサーバがいくつも稼働しているので、ネットワーク的に近くにあるサーバを無料で利用することができます。

ただし、多くの人が特定のNTPサーバに偏って利用している場合には、そのサーバに負荷が集中して正常なサービスができないことがあります。


stratumについて

NTPは「stratum」と呼ばれる階層構造を持っており、最上位のNTPサーバが原子時計やGPSなどの正確な時刻源から正しい時刻を得て、下位のNTPサーバはそれを参照して時刻同期を行っています。

「Stratum-1」サーバは原則として、プロバイダ等の代表的マシン (=公開NTPサーバ) がアクセスするものであり、個人や個々の組織などから、直接アクセスするべきではありません。

※例外的に、日本標準時を供給している独立行政法人情報通信研究機構(NICT)によるサービスとしてStratum-1を個人利用することが可能です。


ntpdについて

ntpdはクライアントでありサーバでもあります。つまり、ntpdは上位NTPサーバに対してはクライアントとして振る舞い、同時に下位NTPサーバ(NTPクライアント)に対してはサーバとして振る舞います。

他のサーバからの参照を受けつけない末端のクライアントであってもntpdを使う場合には、それがポートをリスニングする"サーバプログラム"であることを意識する必要があります。(なお、時刻同期コマンド「ntpdate」は完全にNTPクライアントです。)


NTPを設定する

設定ファイル「ntp.conf」を編集する

NTPサーバ設定ファイル「ntp.conf」を編集します。

設定ファイルでよく利用するキーワードは以下の通りです。

指定 説明
server 時刻を同期するNTPサーバを指定する(クライアントとして設定する)
peer 相互に時刻を同期するNTPサーバを指定する(クライアント兼サーバとして設定する)
restrict 指定したNTPサーバとのNTP通信を許可する

なお、NTPサーバへの接続を確認するに、pingやnslookupコマンドなどで事前に調べておきます。


# vi /etc/ntp.conf
server 130.69.251.23    # ntp.nc.u-tokyo.ac.jp
server 133.31.180.6     # ntp.sut.ac.jp (tusntp.tus.ac.jp)
server 130.34.11.117    # ntp1.tohoku.ac.jp (zao.net.tohoku.ac.jp)
server 130.34.48.32     # ntp2.tohoku.ac.jp (izumi.gw.tohoku.ac.jp)

アップデートの実行

ntpdは、サーバの時刻が現在時刻とあまり乖離していると、同期引き込みができない場合があります。

ntpdの起動に先立ち「ntpdate」コマンドでサーバの時刻を手動で設定して置きます。ntpdateコマンドはntpdが動作していると使えないので、ntpd起動前にrootで適当なNTPサーバを利用して下記コマンドを実行しておきます。


# ntpdate 130.69.251.23

NTPデーモンを起動する

NTPデーモンを起動します。


# service ntpd start

なお、NTPデーモンを停止する場合やNTPデーモンを再起動する場合には下記コマンドを実行します。


# service ntpd stop
# service ntpd restart

自動起動設定

ランレベルを設定します。


# chkconfig ntpd on

自動起動設定を確認します。


# chkconfig --list ntpd

NTP動作確認

ntpqコマンドの「-p」オプション指定でNTPサーバとの接続状態を確認します。

サーバ名の前に「*」マークが付けば、NTPサーバと同期していることが確認できます。(一定時間後に有効となりますので、しばらく待つ必要があります。)


$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*tntp.nc.u-tokyo .GPS.            2 u  527 1024  377    4.289    6.328   4.234


NTP通信できない場合

設定ファイルで下記のようにrestrictにignoreが指定されている場合、serverオプションで指定した NTPサーバを使用することはできません。


restrict default ignore

NTP サーバへのアクセスが可能になるように、restrictオプションを追記して、defaultエントリの設定を上書きしなければなりません。

restrictのフラグは以下のものがあります。

指定 説明
ignore 全てのNTPパケットを拒否します。
noquery ntpdのクエリー(照会)を無視します。
nomodify 時刻問い合わせに応答するが、サーバの時刻の変更要求などのntpqクエリー(照会)を無視します。
noserve 時刻同期要求は拒否しますが、ntpq のクエリー(照会)は許可します。
notrust 指定したホストを参照先サーバとして使用しません。
notrap trapサービス(SNMP のようなネットワークを経由したイベントロギングマネージャによって利用される)のためのパケットを拒否します。

例えば以下のように記述します。


# vi /etc/ntp.conf
restrict default ignore # アクセスを拒否する
restrict 127.0.0.1      # 自分自身のアクセス: すべて許可

restrict 130.69.251.23 nomodify notrap notrust
restrict 133.31.180.6 nomodify notrap noquery
 
server 130.69.251.23    # ntp.nc.u-tokyo.ac.jp
server 133.31.180.6     # ntp.sut.ac.jp (tusntp.tus.ac.jp)

サーバの時刻設定

手動による時刻設定にはdateコマンドを実行します。

時刻を確認する場合には下記コマンドを実行します。


# date

時刻を設定する場合には下記コマンドを実行します。


# date -s "2006/02/20 19:03"