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"