NTPで時刻を同期するように設定する



NTP(Network Time Protocol)のインストール
VMwareという仮想PCを使っているからだと思うけど時間がすごく遅れます。約9時間の稼動で約25分も遅れている・・・ちょっとひどいです。実際には負荷の状態で時刻が進んだり遅れたりとメチャメチャな状態です。
幸い私が使っているプロバイダにはNTPサーバがありますので定期的に時刻あわせを行うように設定します。

ntpdateで時刻の同期を取ったりntpdNTPサーバにしようと思ってパッケージよりntp-4.0.99iをインストールしてから気が付きましたが・・・・わざわざインストールしなくてもOSインストール時にすでにインストールされておりました。(/usr/sbin配下です)しょうがないのでpkg_deleteしましたが・・・インストールする前には慌てず確かめてからにしましょう。

[1]まずは手動で時刻合わせ。

ISPで用意されているNTPサーバのIPアドレス。(ntp.xxx.yyy.zzz)
ルーターのアドレス。(192.168.0.1)

時刻を合わせようとntpdateコマンドを実行するとエラー出力されうまく動作しません。
clio# ntpdate ntp.xxx.yyy.zzz
no server suitable for synchronization found

かなり悩んだのですが、このエラーの原因はダイヤルアップルーターのフィルターセッティングが関係していました。私が使っているRTA52iでは指定したNTPサーバとルータの時刻を合わせる設定はあるのですが、それ以外のローカルLAN側にあるPCからのNTPプロトコル要求を破棄するようになっています。これでは、いくらやってもできないわけです。
 

[システム管理][内部情報]の設定内容を見てみましょう。

ip filter 5 pass ntp.xxx.yyy.zzz 192.168.0.1 udp ntp ntp

このフィルタ定義はntp.xxx.yyy.zzzと192.168.0.1の間だけのntpプロトコル通信を許可しています。
これをローカルマシン全てはntp.xxx.yyy.zzzとのntpプロトコル通信を許可するように変えましょう。

[コマンド入力で変更]で下記を入力します。

ip filter 5 pass ntp.xxx.yyy.zzz 192.168.0.1-192.168.0.254 udp ntp ntp
 

さて実際に時刻の同期をとってみましょう。
clio# ntpdate ntp.xxx.yyy.zzz
27 Dec 10:53:55 ntpdate[1072]: step time server ntp.xxx.yyy.zzz offset 1338.301771 sec

これで同期をとることが出来ました。
 

[2]せっかくだからOS起動時に時刻の同期をとるようにしましょう。/stand/sysinstallで設定。

 

さ、これで設定は大丈夫です。マシン起動時にntpdateが動いて時刻の同期を行います。

ちなみに設定後は下記の記述が/etc/rc.confに追加されます。

# -- sysinstall generated deltas -- #
ntpdate_flags="ntp.xxx.yyy.zzz"
ntpdate_enable="YES"
 

[3]起動したあとも時刻は狂ってくるんだよな。

cronで定期的にntpdateするという方法もあるのですが、ここはNTPサーバとして機能させ自動的に時刻調整させましょう。
設定は簡単、/etc/ntp.conf と /etc/ntp.driftを作って自動起動するように/etc/rc.confに設定を追加するだけ。

/etc/ntp.confには時刻を参照するNTPサーバ名と時刻調整用のファイル(ntp.drift)の場所を記述します。

server  ntp.xxx.yyy.zzz
driftfile  /etc/ntp.drift
 

ntp.driftは空ファイルを作っておけばよいです。touch ntp.driftとかでOK。

あとは以下を/etc/rc.confに追加

xntpd_enable="YES"

以上で完了。