自前でタイムサーバを立ち上げる

 NTPにはntpdというコマンド?があり、これを使えばそのサーバをタイムサーバ(NTPサーバ)として使うことができる。LAN内に複数のパソコンがある場合、一台をNTPサーバにし、他のパソコンは外部のNTPサーバではなくLAN内のNTPサーバと時刻同期させることができる。

1.NTPサーバの設定方法

 ntpdは、以下の2つの機能を持つ。

  1. /etc/ntp.confに記述したNTPサーバと自動的に同期を取る
  2. ntpdを起動したサーバはNTPサーバとなる

 つまり、LAN内に複数のパソコンがある場合、1台をNTPサーバにして、他のマシンはLAN内のNTPサーバと時刻同期を取るようにすれば、それぞれのマシンから外部NTPサーバを見に行くことなく、全台の時刻がそろうということである。

 では、NTPサーバの立ち上げ方を説明する。まず、/etc/ntp.confを作成する。

# vi /etc/ntp.conf

 ここには、同期を取りたい外部NTPサーバと、作業用ファイルを設定する。

server clock.nc.fukuoka-u.ac.jp
server clock.tl.fukuoka-u.ac.jp
driftfile /etc/ntp/drift

 同期を取りたいNTPサーバは複数設定できる。あまり多くても意味がないので、自分のサーバからなるべく近い地域にある外部NTPサーバを2〜3つ指定すればよいだろう。

 設定ファイルを作成したら、ntpdを起動する。

# /usr/local/bin/ntpd

 何のメッセージも表示されないが、ps axで見ると、ntpdが起動されていることが分かる。サーバ起動時にntpdが立ち上がるようにするには、/etc/rc.d/rc.localにntpdの起動スクリプトを記述する。

# vi /etc/rc.d/rc.local

 一番最後に、次のスクリプトを入力し、保存する。

if [ -f /usr/local/bin/ntpd ]; then
	(echo 'Starting NTP service') > /dev/console
	/usr/local/bin/ntpd > /dev/console
else
	(echo ' ntpd not found') > /dev/console
fi

 これで、サーバを再起動すれば、自動的にntpdが起動する。
(本当はchkconfig --add 〜ってやりたいんだけど、調査中ってことで・・・)
 ntpdは定期的に外部NTPサーバと同期を取るため、cronを使ってntpdateを実行する必要がない。よって、cronでntpdateを実行している場合は、削除しよう。

2.時刻同期の状況をチェックする

 ntpdは、/etc/ntp.confに設定した外部NTPサーバと自動的に同期を取る。同期の状況を調べるには、次のコマンドを実行する。

# ntpq -p

 ntpdが起動されていれば、次のような結果が表示される。

     remote           refid      st t when poll reach   delay   offset  jitter
================================================================================
*clock.nc.fukuok .GPS.            1 u  403 1024   77   39.486  -16.011  14.580
+clock.tl.fukuok .GPS.            1 u  525 1024  377   39.963  -16.192   1.161

 *が付いているサーバと同期を取っていることが分かる。offsetは時刻のずれを表す。この場合、clock.nc.fukuoka-u.ac.jpと同期を取り、ずれは-16.011秒であることが分かる。
 ntpdを起動した直後は、どちらにも*が付かない。起動後10分程度待ってからntpq -pを実行しよう。

 このように、ntpdは定期的に時刻を合わせるソフト?である。直ちに時刻を合わせたいのであれば、ntpdateを実行すればよい。ただし、ntpdateはntpdが起動していると実行できないため、killコマンドでntpdを殺してから実行し、再度、ntpdを起動すればよい。

3.他のマシンから利用する

 自前のNTPサーバを利用すれば、他のマシンの時刻を外部NTPサーバを利用することなく同じ時刻にセットすることができる。LINUXでは、ntpdateコマンドで自前のNTPサーバを指定すればよい。Windows系では、有名な桜時計(フリーの時刻同期ソフト)などをインストールし、自前のNTPサーバを設定すればよい。

 また、WindowsXPには標準で時刻同期を取る機能がある(コンパネから「日付と時刻」を開き、「インターネット時刻」タブをクリック)。しかし、利用できるサーバはtime.windows.comとtime.nist.govの2つで、それ以外のサーバを指定することはできない。しかし、レジストリをいじれば、好きなNTPサーバを設定できる。

  1. レジストリエディタ(regedit)を起動する
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVirsion\DateTime\Serversキーを開く
  3. 「3」などの値を作成し、値のデータを自前のNTPサーバ名又はIPアドレスに設定する

 これで、同期を取るサーバに自前のNTPサーバを選択できるようになる。なお、レジストリで(規定)の文字列の値を作成した「3」に設定すれば、デフォルトで自前のNTPサーバを利用できる。


[ TOP ]