« Windows Vista,WebDAVが使えず | Main | 最近のphpMyAdminが難しい件(FreeBSDでphpMyAdmin) »

September 26, 2007

FreeBSD,時刻合わせ:ntpd

 Portsnapを毎日しているのだが,Apacheの新しいヴァージョンがアップデートできない,eGroupWareをインストールしてみたが,設定でこけてinternal errorになってしまう,など不具合が目立ってきた.ここで一発再インストールしたくなってきたところだ.再インストールを躊躇する最大の原因はX.orgのアップグレードだ(本blogではGUI環境なしとか言っているが実はgnomeが入っていたりする).アップデートの注意点は技術評論社のサイトに書いてあるが,自分の場合は/usr/ports/UPDATINGに書いてあるとおりにコマンドを打ち込んでいくことでうまく行った.
 さて,で,なぜntpdなのかと言うと,設定の仕方をここに書いておかないと,Unix初心者の自分としては再インストールしたときなにをどうすればいいのかわからなくなってしまうからである.このように,X.orgのアップグレードの仕方も,ここに書いておけばいちいち検索しなくてすむのである.
 で,で,ntpdの設定である.時刻合わせにはFreeBSDではntpdとntpdateがあるが,ntpdはデーモンなので自動的に時刻の面倒を見てくれるが,ntpdateはコマンドなのでcronとかで定期的に実行しなければならない.それだけの理由でntpdを選んだ.インストールは標準でされている.設定だけだ.
 次に問題となるのが,親となるntpサーバーである.結構ネット上の情報では気軽にntpサーバーを指定しているが,すごくアクセスが集中して困ってるntpサーバーもあるようである.本来であれば,ntpサーバーはプロバイダーが用意するべきであるが,ニフティではウェブサーバーだのメールサーバーにtracerouteして,途中に引っかかるホストにことごとくntpq -pしてみたが,応答を返すホストはなかった(OCNとかはあるのにね)そこであたしが選んだのがNICTのntpサーバーである.ホスト名はntp.nict.jpとあるが,時刻合わせのたびにDNSの問い合わせをするものナニであるので,nslookupしてみた.

> nslookup ntp.nict.jp
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name:   ntp.nict.jp
Address: 133.243.238.243
Name:   ntp.nict.jp
Address: 133.243.238.244
Name:   ntp.nict.jp
Address: 133.243.238.163
Name:   ntp.nict.jp
Address: 133.243.238.164
よって,この4サーバーを親時刻サーバーとする.  設定ファイルは/etc/ntp.confである.内容は
server 133.243.238.244 # ntp.nict.jp
server 133.243.238.163 # ntp.nict.jp
server 133.243.238.164 # ntp.nict.jp
server 133.243.238.243 # ntp.nict.jp
server 127.127.1.0
fudge  127.127.1.0 stratum 10
driftfile /etc/ntpd.drift
である.5行目,6行目は同期に失敗した時用に,ローカルマシンの内臓時計と同期する(そしてその優先順位は低くする)と言うことである.公開サーバーではなく,ファイアーウォールの中のLAN内にあり,ほかのマシンに時刻配信をするのでなければ,上記設定ファイルで十分である(もっと野望のある方はここら辺を).最終行の/etc/ntpd.driftファイルを
> touch /etc/ntpd.drift
で作っておく.Driftfileは/etcに作る必然はなく,/varの下位ディレクトリに置く流儀もあるようである.  あとは,ntpdがデーモンとして起動するように/etc/rc.confに
# ntpd
xntpd_enable="YES"    # Run ntpd Network Time Protocol (or NO).
xntpd_program="/usr/sbin/ntpd"  # path to ntpd, if you want a different one.
ntpd_flags="-p /var/run/ntpd.pid -f /etc/ntpd.drift" # Flags to ntpd
と,記述しておけばよいかと思う(2行目は特にいらない).  FreeBSDを再起動してしばらく待つ(どれだけ待てばよいか知らない)で,
> ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-a3.nict.go. .PPS.            1 u   60   64  377    6.175   98.694  20.293
+ntp-b2.nict.go. .PPS.            1 u    4   64  377    7.630   89.940  31.785
+ntp-b3.nict.go. .PPS.            1 u   60   64  377    7.763   98.272  20.693
+ntp.nict.jp     .PPS.            1 u    7   64  377    6.135  106.025  19.015
 LOCAL(0)        73.78.73.84      5 l   60   64  377    0.000    0.000   0.002
と言うように,'*'印や'+'印が先頭行にあれば同期はうまくいっている.サーバーの時刻とローカルの時刻があまりにも違っていると“アマリニモチガーイマスヨ”と英語でlogに出る.dateコマンドで大体あわせてから再起動しよう.

こうやって書いているのが積もり積もって,“FreeBSDのインストールだったらスコスコblog”ってなったらいいな.(道のりは程遠い)

May 31, 2008. 追記
 本記事をみている人がまあまあいるようなので,訂正する.FreeBSD 7.0では上記rc.confでは動かない.現在,筆者の環境のrc.confのntp部分は

ntpd_enable="YES"
ntpd_program="/usr/sbin/ntpd"
ntpd_config="/etc/ntp.conf"
ntpd_sync_on_start="YES"
ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"

となっている.こちらの方のやり方を参考にした.

Jul 26, 2009. 追記
 RFC 的には,ntpのサーバー名は IP address で記述するのではなく, dns 的な名前で運用する方がいいらしい,したがって現在筆者は server ntp.nict.jp などとして運用している.

|

« Windows Vista,WebDAVが使えず | Main | 最近のphpMyAdminが難しい件(FreeBSDでphpMyAdmin) »

Comments

ちなみに、OCNなら地道に調べなくても、きちんと公開されています。
http://www.ocn.ne.jp/ocnweb/service/ntp/

Posted by: valp | January 31, 2009 at 02:57 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/37290/16581340

Listed below are links to weblogs that reference FreeBSD,時刻合わせ:ntpd:

« Windows Vista,WebDAVが使えず | Main | 最近のphpMyAdminが難しい件(FreeBSDでphpMyAdmin) »