NTPで時計合わせ

今までノートPCでは気付いたときにrootになってntpdateで ntpdate ntp2.jst.mfeed.ad.jp とかやってた.ノートなのでよくオフラインになっているのだが,そのときにntpdからクエリを飛ばすと文句を垂れるんじゃないかと思っていたせいだ.しかしオフライン時にも適当にごまかす機能があると分かったので今度からntpdで自動化する.しかもこちらの方が時間合わせが滑らかだったり色々優れている.というわけで /etc/ntp.conf を次のようにした.

server ntp.example.com prefer minpoll 10 # 本当は大学のNTP鯖
server ntp2.jst.mfeed.ad.jp minpoll 10
server ntp3.jst.mfeed.ad.jp minpoll 10
server ntp1.jst.mfeed.ad.jp minpoll 10
server ntp02.example.net minpoll 10 # 本当はプロヴァイダのNTP鯖
server ntp03.example.net minpoll 10 # 本当はプロヴァイダのNTP鯖
server ntp01.example.net minpoll 10 # 本当はプロヴァイダのNTP鯖

server 127.127.1.0 minpoll 10  # local clock
fudge  127.127.1.0 stratum 10

driftfile /etc/ntp/drift 

server は3つ以上指定しておくと何かのアルゴリズムで調整が働くんだとか.今回のキモは 127.127.1.0 の辺りで,こう書くと(本当は意味のないIPアドレ スだが)ntpdはローカル時計を参照する仕様になっている. stratum 10 とすることで他の鯖が利用できるならば無視されるようにした.なお,どうでもいい個人のノートPCなので minpoll 10 としてクエリを投げる間隔を最短でも2^{10}秒すなわち17分に設定し,鯖に負担をかけないようにした.
その後 ntpd を /etc/init.d/ntpd restart により再起動.10秒程経って ntpq -p とすると鯖一覧が表示されるが, when 欄が12とかになっていたら設定がきちんと認識されている(12秒前に問い合わせが終了した,等の意).上手くいっていたらさらに数時間後に ntpq -p して同期具合を確認.行頭に + の付いた鯖が調整アルゴリズムに従って利用中のもので, * の付いた鯖とは完全に同期している(ころころ変わるけど).
さてこんなこともあり,UTMCの鯖(前からntpdが動いていた)の設定も改善しようと思ってやはり次のようにしてみた(↑とはログ周りが微妙に違うけど大したことではない).

# /etc/ntp.conf, configuration for xntpd

# ntpd will use syslog() if logfile is not defined
logfile /var/log/ntpd

driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server ntp.example.com prefer minpoll 10 # 本当は大学のNTP鯖
server ntp2.jst.mfeed.ad.jp minpoll 10
server ntp3.jst.mfeed.ad.jp minpoll 10
server ntp1.jst.mfeed.ad.jp minpoll 10
server ntp.example.net minpoll 10 # 本当はプロヴァイダのNTP鯖
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10 # very low priority 

ところがローカル時計が認識されない. /var/log/ntpd には再起動の際に次のような行が書き込まれていた.

12 Feb 05:45:59 ntpd[27700]: attempt to configure invalid address 127.127.1.0 

UTMCの鯖はDebian Woodyで, dpkg -s ntp すると Version: 1:4.1.0-8 だそうだが... 何で? "invalid adress 127.127" とかググっても「対応してないんじゃねぇの?」くらいしか出て来ない.しかも役立ちそうなレスがちょうど鯖移管のゴタゴタで消えていたらしくてがっかり.ntp-doc というパッケージに入っていたHTMLマニュアルには普通に載ってたんだが... まぁ常時オンラインだからいいか,とコメントアウトしておく.