| 最も正確な協定世界時をセットする為にNTPクライアントを使ってNTPタイムサーバーに情報を取りに行く様にしましょう。タイムサーバーの一覧はPublic
NTP Primary Time Serverを参考にしてください。ただし個人ユーザーがPublic NTP Primary
Time Serverに接続することは良い方法ではありません。Public NTP Primary Time Serverは世界中の研究所や大学、大手ISPからのアクセスが集中しています。個人ユーザーのアクセスはPublic
NTP Primary Time Serverの負荷を高くする原因になるわけです。ですからPublic NTP Primary
Time Serverのリソースは公的機関に譲るのがモラルです。私たちのサーバーを協定世界時(正確な時間)にあわせる為には研究所や大学、大手ISPにアクセスするのが一般の方法です。
<上位NTPサーバー>
一般に使うNTPサーバーをいくつか紹介します。http://www.jst.mfeed.ad.jp/はPublic
NTP Primary Time Serverから直に協定世界時を取得しているNTPサーバーを紹介しているサイトです。この他にも国内だけで星の数ほど存在します。
・ntp1.jst.mfeed.ad.jp (210.173.160.27)
・ntp2.jst.mfeed.ad.jp (210.173.160.57)
・ntp3.jst.mfeed.ad.jp (210.173.160.87)
<Solarisの場合>
Solaris8のntpdはxntpdとほぼ同等であるのですが、バグがある事で有名です。Solaris8でのntpdを利用する場合はxntpdを使うよう薦めます。xntpdを使う場合はメインページよりインストールログを参考にしてください。
まず、Solaris8に標準で付いていつバグありntpdをインストールしたxntpdに塗り替えます。
# cp /etc/init.d/xntpd
/etc/init.d/xntpd.old
# vi /etc/init.d/xntpd
|
xntpdを次の様に編集してください。
24行目:printf("-s -w -m") から printf("-s")
に変更
38行目:printf("-s -w")
から printf("-s") に変更
46行目(/usr/sbin/ntpdate $ARGS; sleep 2; /usr/lib/inet/xntpd) &
から (/usr/sbin/ntpdate $ARGS; sleep 2; /usr/local/ntpd/bin/ntpd -c
/etc/inet/ntp.conf) & に変更
48行目:/usr/lib/inet/xntpd & から /usr/local/ntpd/bin/ntpd -c /etc/inet/ntp.conf
& に変更
52行目:/usr/bin/pkill -x -u 0 '(ntpdate|xntpd)' から /usr/bin/pkill
-x -u 0 '(ntpdate|ntpd)' に変更
下の様になると思います。
#!/sbin/sh
[ ! -d /usr/sbin -o ! -d /usr/lib/inet ] && exit 1
case "$1" in
'start')
[ -f /etc/inet/ntp.conf ] || exit 0
ARGS=`/usr/bin/cat /etc/inet/ntp.conf | /usr/bin/nawk '
BEGIN {
first = 1
}
/^#/ {
next
}
/^multicastclient/ {
if (first) {
first = 0
printf("-s")
}
if (NF == 1)
printf(" 224.0.1.1")
else
printf(" %s", $2)
next
}
/^server 127.127/ {
next
}
/^server/ {
if (first) {
first = 0
printf("-s")
}
printf(" %s", $2)
next
}
'`
if [ -n "$ARGS" ]; then
# Wait until date is close before starting xntpd
# (/usr/sbin/ntpdate $ARGS; sleep 2; /usr/lib/inet/xntpd) &
(/usr/sbin/ntpdate $ARGS; sleep 2; /usr/local/ntpd/bin/ntpd -c /etc/inet/ntp.conf)
&
else
# /usr/lib/inet/xntpd &
/usr/local/ntpd/bin/ntpd -c /etc/inet/ntp.conf &
fi
;;
'stop')
# /usr/bin/pkill -x -u 0 '(ntpdate|xntpd)'
/usr/bin/pkill -x -u 0 '(ntpdate|ntpd)'
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
もともとxntpdは各ランレベルのrcにハードリンクされていますので、initのxinitdのファイル名は変更しない方が良いと思います。尚、Solaris9のxntpはセキュリティーアップデートよりバグが改善されている可能性があります。
<NTPクライアントの設定>
/etc/init.d/xntpdスクリプトを見れば分かるように/etc/inetd/ntp.confファイルがあれば起動時にntpdが立ち上がる様になっているはずです。ですからNTPを標準で起動させる為に/etc/init.d/ntp.confを作成しましょう。尚、ntp.confにはテンプレートが用意されています。
# cp /etc/inet/ntp.client
/etc/inet/ntp.conf
|
クライアントとして稼働するのであれば、NTPサーバーを定義しなければなりません。前章にも記述したようにプロバイダ等のNTPサーバーをここで指定します。/etc/inetd/ntp.confを次の様に記述して下さい。
#multicastclient
224.0.1.1
server 210.173.160.87
driftfile /var/ntp/ntp.drift
|
ntp.driftファイルは誤差調整用のファイルです。
<ntpdの起動>
ntpd.confの設定が終われば、ntpdを起動して協定世界時を取得しましょう。クライアントでもサーバーでも協定世界時を取得する場合はNTPのクライアントの設定を行ってからntpdを起動してください。
# /etc/init.d/xntpd
start
|
起動の確認はntpq -pで行って下さい。また、ntpq -pの後にサーバー名、IPアドレスを入力する事で、指定したNTPサーバーの状態も表示できます。
# /usr/local/ntpd/bin/ntpd
-q
|
NTPサーバーに対して、ntpが通るかどうかを見るにはntptraceコマンドを使って下さい。
# /usr/local/ntpd/bin/ntptrace
|
|