サーバの時刻を自動設定にしました

03/06/11
こんな事を書くと笑われるかもしれませんが、サーバの時計が8分ぐらいずれてます・・・。先日、メールサーバのアヤシイ動き事件に遭ってから、ログをちょくちょく見たりしているのだけれど、ルータのログと照らし合わせたりするとき、やっぱりよくないなぁと。
なので、この際正確に時間調整させようと色々調べてみました。

VineLinux上で、自動的に時間を調整させる方法を以下に記しておきます。
ネット上には時間調節用のサーバがあり、それらを使って自鯖の時間を同期させることをNTP(Network Time Protocol)というらしいです。
まず、VineLinuxのデェフォルトで「ntpd」というサーバーが入っていると思うので、それが入っているかチェックしときます。おそらくデェフォルトでは起動していないと思います。
まず、コマンドラインによる時間調整ですが、その前にIPマスカレードの設定をしておきます。使用ポートはNTPサーバ側の123番ポートらしいです。これを許可させておきましょう。
今回は以下のようにパケットフィルターを設定しました。
尚、今回、NTPサーバに福岡大学のサーバ(133.100.9.2)を使用します。

LAN→WAN
サーバーのローカルIP:ポート*→133.100.9.2:ポート123 「UDP
WAN→LAN
133.100.9.2:ポート123→サーバのローカルIP:ポート* 「UDP

さて、実験してみましょう。

ターミナルを立ち上げて、以下のように打ち込みます。

 ROOT# ntpq -p 133.100.9.2
  remote refid st t when poll reach delay offset disp
 ===========================================
 *GPS_NMEA(1) .GPS. 0 l 184 16 377 0.00 0.002 0.03
 +clock.tl.fukuok .GPS. 1 u 218 64 376 3.11 -0.070 0.53
 +helio.tl.fukuok .GPS. 1 u 229 64 377 3.60 0.068 0.08
  geo.gen.u-ryuky clock.nc.fukuok 2 u 736 1024 376 52.40 7.090 19.15
 -ns.hiroshima-u. .GPS. 1 u 213 64 376 17.23 -0.724 2.14
 -onikobe.gw.toho .GPS. 1 u 199 512 377 57.82 -1.658 5.16
 -izumi.gw.tohoku .GPS. 1 u 359 128 264 60.33 -2.292 3.01
  LOCAL(0) LOCAL(0) 3 l 196 64 377 0.00 0.000 10.01
 xtime.nist.gov .ACTS. 1 u 336 256 377 189.33 -9.976 2.76

こうなれば成功ですが、タイムアウトとか表示されたら、ルータの設定が間違っているかもしれません。

次にntpdateコマンドによって、NTPサーバーの時間に合わせてみましょう。

 ROOT# ntpdate 133.100.9.2
7 Dec 22:35:31 ntpdate[21972]: step time server 133.100.11.8 offset -178.284741

同じようにこうなれば成功ですが、

7 Dec 22:30:00 ntpdate[21895]: no server suitable for synchronization found

この場合は、ルータの設定でフィルタリングされています。

10 Dec 01:14:40 ntpdate[15310]: the NTP socket is in use, exiting

この場合は、すでにntpdサーバが立ち上がっていると言うことです。

いちいちコマンドから調整するのはあれなので、ntpdサーバを立ち上げときます。
まず、
/etc/ntp.confをエディタで開いて次の行を加えます。

sever 133.100.9.2

#誤差調整用のファイル指定
driftfile /etc/ntp.drift

保存したら、Webminにアクセスし、「システム」→「起動とシャットダウン」とクリック。
ntpd」をクリック。
起動時に開始しますか」→「はい」をチェックし、「保存」ボタンを押します。

また、「ntpd」をクリックし、「今すぐ開始」ボタンをクリックし、起動させます。

Linuxは立ち上がり時、BIOSが保持する時間をシステム時間としてセットします。これにより、立ち上がってからntpdの補正が入るまで正確な時刻ではありません。これを解決するには、clockコマンドを使い正確なシステム時間BIOS時間に書き込みます。

 ROOT# clock;date ← clockはBIOS時間、dateはシステム時間を表示します
 Sun Dec 10 09:44:05 2000 -0.608239 秒 ← BIOS時間の表示
 Sun Dec 10 09:42:02 JST 2000 ← システム時間の表示
 (約2分BIOS時間が進んでいます。)
 ROOT# clock -w  ← システム時間をBIOS時間に書き込みます。
 ROOT# clock;date ← 再度、BIOSとシステム時間を表示
 Sun Dec 10 09:42:12 2000 -0.427271 秒
 Sun Dec 10 09:42:11 JST 2000
 (ほぼ一致しました。)
以上おいでん様のサイト から抜粋。

なお、clock;dateを実行しても、差が見られないし、時間も遅れた(もしくは進んだ)ままの場合も、コマンドラインで操作してもう一度clock;dateを実行したら差が見られました。
その後clock -wコマンドを打ち込むとシステム時間がBIOS時間に書き込まれたみたいです。

ちゃんと動作しているか確認してみましょう。

# ntpq -p

remote        refid  st t when poll reach delay offset jitter
===========================================
*clock.nc.fukuok .GPS.     1 u  37  64  377 72.192 6.353 0.736

*」がついていれば、同期したと言うことです。

<<Pre Next>>