NTPにはntpdというコマンド?があり、これを使えばそのサーバをタイムサーバ(NTPサーバ)として使うことができる。LAN内に複数のパソコンがある場合、一台をNTPサーバにし、他のパソコンは外部のNTPサーバではなくLAN内のNTPサーバと時刻同期させることができる。
ntpdは、以下の2つの機能を持つ。
- /etc/ntp.confに記述したNTPサーバと
自動的に同期を取る- 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を実行している場合は、削除しよう。
ntpdは、/etc/ntp.confに設定した外部NTPサーバと自動的に同期を取る。同期の状況を調べるには、次のコマンドを実行する。
# ntpq -p ntpdが起動されていれば、次のような結果が表示される。
remote refid st t when poll reach delayoffsetjitter ================================================================================ *clock.nc.fukuok .GPS. 1 u 403 1024 77 39.486-16.01114.580 +clock.tl.fukuok .GPS. 1 u 525 1024 377 39.963-16.1921.161*が付いているサーバと同期を取っていることが分かる。offsetは時刻のずれを表す。この場合、clock.nc.fukuoka-u.ac.jpと同期を取り、ずれは-16.011秒であることが分かる。
ntpdを起動した直後は、どちらにも*が付かない。起動後10分程度待ってからntpq -pを実行しよう。このように、ntpdは定期的に時刻を合わせるソフト?である。直ちに時刻を合わせたいのであれば、ntpdateを実行すればよい。ただし、ntpdateはntpdが起動していると実行できないため、killコマンドでntpdを殺してから実行し、再度、ntpdを起動すればよい。
自前のNTPサーバを利用すれば、他のマシンの時刻を外部NTPサーバを利用することなく同じ時刻にセットすることができる。LINUXでは、ntpdateコマンドで自前のNTPサーバを指定すればよい。Windows系では、有名な桜時計(フリーの時刻同期ソフト)などをインストールし、自前のNTPサーバを設定すればよい。
また、WindowsXPには標準で時刻同期を取る機能がある(コンパネから「日付と時刻」を開き、「インターネット時刻」タブをクリック)。しかし、利用できるサーバはtime.windows.comとtime.nist.govの2つで、それ以外のサーバを指定することはできない。しかし、レジストリをいじれば、好きなNTPサーバを設定できる。
- レジストリエディタ(regedit)を起動する
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVirsion\DateTime\Serversキーを開く
- 「3」などの値を作成し、値のデータを自前のNTPサーバ名又はIPアドレスに設定する
これで、同期を取るサーバに自前のNTPサーバを選択できるようになる。なお、レジストリで(規定)の文字列の値を作成した「3」に設定すれば、デフォルトで自前のNTPサーバを利用できる。