サーバの時刻を自動設定にしました
■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
「*」がついていれば、同期したと言うことです。