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してみた.
よって,この4サーバーを親時刻サーバーとする. 設定ファイルは/etc/ntp.confである.内容は> nslookup ntp.nict.jp
Server: 192.168.1.1
Address: 192.168.1.1#53Non-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
である.5行目,6行目は同期に失敗した時用に,ローカルマシンの内臓時計と同期する(そしてその優先順位は低くする)と言うことである.公開サーバーではなく,ファイアーウォールの中のLAN内にあり,ほかのマシンに時刻配信をするのでなければ,上記設定ファイルで十分である(もっと野望のある方はここら辺を).最終行の/etc/ntpd.driftファイルを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
で作っておく.Driftfileは/etcに作る必然はなく,/varの下位ディレクトリに置く流儀もあるようである. あとは,ntpdがデーモンとして起動するように/etc/rc.confに> touch /etc/ntpd.drift
と,記述しておけばよいかと思う(2行目は特にいらない). FreeBSDを再起動してしばらく待つ(どれだけ待てばよいか知らない)で,# 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
> 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 などとして運用している.




![: 親和産業 [SS-EC100] エレクリーン100/グリス取リーナー](http://ecx.images-amazon.com/images/I/41D68bXXyJL._SL75_.jpg)
![: AINEX シリコングリス用ヘラ [GH01]](http://ecx.images-amazon.com/images/I/21YS3Y0DTVL._SL75_.jpg)
![: AINEX シルバーグリス [AS05]](http://ecx.images-amazon.com/images/I/21BASYAFF6L._SL75_.jpg)














Comments
ちなみに、OCNなら地道に調べなくても、きちんと公開されています。
http://www.ocn.ne.jp/ocnweb/service/ntp/
Posted by: valp | January 31, 2009 at 02:57 AM