−ntpで時刻合わせ− |
|
特にって訳でもなかったのですが,サーバの時刻を正確にしようと思ったのは,主に以下の理由によります。
1 メールサーバを立ち上げてから,メールの送受信の時刻がどうもおかしくなるので,正確にしたい。
2 立ち上げたWEBページ(特にXOOPS)の掲示板などに関する時刻が正しくない。
3 作成したファイルをftp転送するとき,ファイルの作成日時がWindows機と異なるので,上書きの確認ができにくい。
といったところです。ちなみにWindows機は,ルータのntpサーバ機能を使って,時刻を同期させています。サーバもこれにならえばいいのですが,何事も勉強のため「ntpで時刻合わせ」となりました。 |
RedHatLinux7.3では,はじめからntpがインストールされているので,改めてインストールの必要はありません。一応インストールされているファイルを確認します。これで確認は完了です。確かにインストールされています。
続いて動作の確認をします。ここで,忘れてはならないことは,ntp(123)のパケットをサーバでもルータでも許可してやることです。
早速起動させてみましょう。
# service ntpd start
まはは
# /etc/init.d/ntpd start |
私の場合はすでに起動していました。次に,以下コマンドで,動作の確認をします。
# ntpq -p 133.100.9.2
remote refid st t when poll reach delay offset jitter
================================================================================
*GPS_NMEA(1) .GPS. 0 l 8 16 377 0.000 -0.002 0.020
+clock.tl.fukuok .GPS. 1 u 59 64 376 3.080 -0.076 0.040
helio.tl.fukuok .0.0.0.0 16 - - 1024 0 0.000 0.000 16000.0
xgeo.gen.u-ryuky .GPS. 1 u 248 1024 377 38.710 -75.112 5.520
-ns.hiroshima-u. .GPS. 1 u 213 64 376 17.23 -0.724 2.14 |
うまく動いていれば,上のように通信状態を表示します。一番左に「*」印が付いているサーバが同期中のサーバのようです。(最初は表示されませんが,しばらくすると「*」印が表示されます。私の場合20分程度経過してから表示されました。)
各項目の意味は,
| ※1項目目 |
| ' '(reject) | 距離が遠くて参照リストから外れたサーバー |
| 'x'(falsetick) | falseticker検査で参照リストから外れたサーバー |
| '.'(excess) | 参照サーバーが多くて参照リストから外れたサーバー |
| '-'(outlyer) | クラスタリング検査で参照リストから外れたサーバー |
| '+'(candidat) | 接続テストに合格し、いつでも参照可能なサーバー |
| '#'(selected) | 同期距離が遠いが参照可能なサーバー |
| '*'(sys.peer) | 同期中であると宣言されたサーバー |
| 'o'(pps.peer) | 同期中であると宣言されたサーバー(同期はPPS信号から間接的に行なう。) |
| ※2項目目以降の意味 |
| remote | リモート・サーバーのホスト名 |
| refid | 参照ID(不明の場合は、0.0.0.0) |
| st | stratum番号、サーバーが第何階層かを表します。 |
| t | 階層タイプ(l:local,u:unicast,m:multicast,b:broadcast) |
| when | 最後のパケットを受け取ってからの時間(単位:秒) |
| poll | ポーリング間隔(単位:秒) |
| reach | 到達可能なレジスタ・データ(8進数表現) |
| delay | パケット往復時間の遅延見積もり(単位:ミリ秒) |
| offset | 時刻サーバとのずれ(単位:ミリ秒) |
| jitter | 分散(単位:ミリ秒) |
です。すべて受け売りです。 |
では,ntpdateコマンドで時刻合わせをしてみましょう。
# ntpdate 133.100.9.2
14 Dec 02:08:21 ntpdate[15310]: the NTP socket is in use, exiting |
このメッセージが表示されて,時刻が同期できません。ntpdを起動すると常にntpソケットをオープンしているので,ntpdateが実行できませんが,ntpdが自動実行しているので問題ありません。すぐに時刻を合わせたい場合は,ntpdを停止してからntpdateを実行します。
# service ntpd stop
ntpdを停止中 [ OK ]
# ntpdate 133.100.9.2
14 Dec 08:35:31 ntpdate[21972]: step time server 133.100.9.2 offset -178.284741 |
時刻の同期がとれました。 |
さて,時刻合わせの環境設定です。いちいちntpdateコマンドで時刻合わせをするのは面倒なので, /etc/ntp.confファイルを編集して,国内向け公開サーバを指定します。
# vi /etc/ntp.conf
server 133.100.9.2
server 133.100.11.8
server 203.139.30.195
server 203.255.112.4
driftfile /etc/ntp/drift |
driftファイルは,元々この場所にありました。このファイルには,内蔵時計が進む傾向にあるのか、遅れる傾向にあるのか, またそれはどの程度なのかが記録されます。
これで完了のはずです。ntpdを起動させます。
# service ntpd start
ntpdを起動中 [ OK ]
# |
システム起動時に起動させるときは,chkconfigなどで設定します。 RedHatLinux7.3は初期設定で自動起動するようになっています。 |
|
|