TOPへ ID:050009
 

 AIXサーバーを時刻同期させる 


 
+AIXサーバーを時刻同期させる

 ・基準となるNTPサーバーを構築する
 ・AIXサーバーを時刻同期クライアントとする設定
 ・時刻同期の確認

 
cronで定期的に時刻同期

 ・時刻同期サーバを構築する

 ・時刻同期に関する注意事項
 



1.基準となるNTPサーバーを構築する

 AIXサーバーが基準とするNTPサーバー(network time protocol server)を構築する。

 ここでは、「同一LAN上に存在するWindowsクライアントに、仮想NTPサーバーツールを導入することで代用する」例をしめす。

 (1)時刻が正確なWindowsクライアント端末を用意する。

   当クライアント端末には、「時刻あわせツール」を事前に入れておくといい。
   時刻あわせツールには以下のようなパターンがある。

   ア.通常の時刻あわせツール :桜時計EZe-timingなど
   イ. NTP/SNTP経由でなくHTTP経由で時刻あわせを行うもの :TimeTuneAutoなど  
   ウ.メール送受信時に時刻あわせを行うツール :Beckey2プラグイン Adjust Timeなど

 (2)上記のクライアント端末に、仮想NTPサーバーツールを導入する。

   フリーウェアの「ローカル擬似NTPサーバ」を導入する。

       < こちら

 (3)ローカル擬似サーバーを起動し、「設定」ダイアログで「使用するNTPのポート番号」をデフォルトのNTPポートである「123」
    に設定する。

 (4)ローカル擬似サーバーは常駐型のアプリーケーションである。Windowsクライアント起動時に、自動的に起動・常駐するように
    「スタートアップ」に登録する。


2.AIXサーバーを時刻同期クライアントとする設定

 ntpはデフォルトで導入されているため、設定作業のみとなる。(ソースからコンパイルする場合はこちら

 (1)事前時刻あわせ

   同期先との時刻誤差が1000秒以上ある場合は、xntpdデーモンが時刻同期をあきらめ消失してしまう。
   事前に時刻同期を行う。

   手動で時刻を指定し、時刻あわせを行う。
   > date mmddHHMMccyy
    (mm = 月、dd = 日、HH = 時、MM = 分、ccyy = 西暦4桁)
    (例: > date 061221112004)

 (2)xntpdデーモンの起動設定

   デーモン始動設定ファイル「/etc/rc.tcpip」について、xntpdデーモン起動に関する記述を有効にする。
   > vi /etc/rc.tcpip

   以下の行のコメントを外す。

   変更前:
   # Start up Network Time Protocol (NTP) daemon
   #start /usr/sbin/xntpd "$src_running"


   変更後
   # Start up Network Time Protocol (NTP) daemon
   
start /usr/sbin/xntpd "$src_running"  <-- コメントを外す

 (3)「/etc/ntp.conf」の設定
 
   NTP構成ファイル「/etc/ntp.conf」ファイルについて、以下記述を行う。

   server 192.168.0.3  minpoll 6 maxpoll 10 <-- [上記「1.基準となるNTPサーバーを構築する」で用意したWindowsPCのIP]
   driftfile /etc/ntp.drift
   tracefile /etc/ntp.trace

   restrict:
   フィルタの設定。下に書いてあるルールほど有効
   例)
   restrict default ignore  <-- 基本的に通信は拒絶
   restrict 127.0.0.1     <-- 自分自身は許可
   restrict [自分のネットワーク] mask 255.255.255.0  <-- 自身のローカルLANは許可
   restrict [サーバ1] noquery nomodify ←サーバ1との通信は許可。時刻問い合わせと時刻変更要求は拒絶

   
server:
   基準とするNTPサーバーのIPアドレスを設定する。

    minpoll/maxpoll:
    NTPサーバへの時刻同期問い合わせ間隔。ビット数で指定する。最小値は4(16秒)。
    minpollのデフォルトは6(64秒)、maxpollのデフォルトは10(1024秒)。

   
driftfile:
   xntpdが計算したドリフト(周波数誤差)値の記録に使用する「ドリフトファイル」の名前を指定する。

   起動時に当ファイルが存在した場合、当ファイルの値が周波数誤差のxntpdの内部値を初期化するのに使用される。
   その後、当ファイルは1時間に1回ずつ周波数誤差の現在値で更新される。

   
tracefile:
   デバックモード(-d)でxntpdデーモンを起動した場合に、当ファイルにトレースを書き込む。

 (4)ntpのポート番号を確認する。
   > view /etc/services

   
以下記述を確認する。

   
ntp 123/tcp # Network Time Protocol  <-- ntpポートはデフォルトの123番
   ntp 123/udp # Network Time Protocol

 (5)xntpdデーモンを起動する。

   ア.xntpdデーモンを起動する。
    > startsrc -s xntpd
    0513-059 xntpd サブシステムは始動しました。サブシステム PID は 12740 です。

   イ.xntpdデーモンの起動を確認する。
    > lssrc -s xntpd
    Subsystem Group PID Status
    xntpd tcpip 12740 活動状態

3.時刻同期の確認

 (1)時間を置き、ntpqコマンドで同期状況を確認する。
    出力結果の左端に「*」がついていたらOK。
   > ntpq -p
     remote        refid st t when poll reach delay offset disp
   ==============================================================================
   
* [時刻同期先のIP] Local(0) 5 u 127 128 377 0.46 0.050 0.05

   一番左から

   "*" :現在参照同期中
   "+" :クロック誤り検査に合格
   "#" :参照同期中だが距離がある
   " " :参照していない(同期していない)
   "x" :クロック誤り検査に不合格
   "." :参照リストから外された

   remote :時刻同期サーバー・アドレス
   refid :参照ID(サーバが参照しているマシンID。不明な場合は0.0.0.0)
   st :サーバーのストラータム(一次サーバは1、二次サーバは2)
   t :ピアの型(1:Local、u:unicast、m:multicast、b:broadcast)
   when :最後のパケットを受信したタイミング(何秒前に受信したか?)
   poll :ポーリングの時間間隔(秒単位)
   reach :到達可能性に関するレジスタ・データ(8進数:到達可能性が多いほど大)
   delay :推定遅延(ミリ秒単位)
   offset :偏差補償(ミリ秒単位)
   disp :分散(ミリ秒単位)


4.cronで定期的に時刻同期

   以下コマンドを1〜2時間置きに実行するよう、cronに登録しても同等の精度は得られる。常駐プロセスであるxntpdの脆弱性を回避するのに
   有効な手段である。
    > ntpdate [時刻同期サーバーのIPアドレス]
     
(当コマンドはxntpdデーモンが停止している状態で実行すること)


5.時刻同期サーバを構築する

  基本的には、「上記で時刻同期クライアントとして設定したPC = 下位の時刻同期サーバ」となっており、当PCを時刻同期先に設定することで、
  さらに時刻同期クライアントを追加していくことが可能である。

  しかし、インターネットに接続できないようなローカルな環境で、NTPサーバーを構築する場合には以下点に注意する。

  ntpd v4 では階層(st)16のサーバとは同期を取らない。上位のサーバと同期のとれない時のST(参考:SNMP)は16となるので、サーバと
  なることが出来ない。本来はGPSや無線時刻コード受信機から時刻を取得するときに使用する機能である参照クロック機能を利用すれば、
  自らのSTを自由に設定できる。これにより、上位のNTPサーバを参照できない時にも、LAN内部向けサーバとしての階層(ST)を維持することが
  出来る。
    > vi /etc/ntp.conf

    (以下行を追加)
    server 127.127.1.0        # local clock      
<-- 自身の内蔵時計を時刻同期サーバとして宣言
    fudge 127.127.1.0 stratum 4  # not disciplined
    <-- NTPサーバとしての階層は4

    (自身で以下のコマンドを実行)
    > ntpq -p
    remote   refid     st t  when  poll  reach  delay  offset  disp
    ==============================================================================
    *LOCAL(0) LOCAL(0)  
4 l   9    64  377   0.00  0.000  10.01

    (時刻同期クライアントより実行)
    > ntpq -p
    remote       refid     st t  when poll  reach  delay  offset  disp
    ==============================================================================
    *192.168.0.110 LOCAL(0)   
5 u  47  64   1    0.44  -1.334 1.34

  IPの127.127.1.0 のうち 127.127 は固定。1.0 は時計の種類とユニット番号を表す。GPSや無線時刻コード受信機を使用する場合は指定の
  番号を利用するが、本使い方では適当に設定すればよい。
  stratumでは階層(st)を指定する。外部のNTPサーバも参照し、そちらを優先させたい場合は、外部のNTPサーバよりも低い階層(st)を指定
  しておけばよい。もしntp.nasa_n.govの階層(st)が3の場合は下記のように設定しておけば、普段はntp.nasa_n.govと同期を取り、
  回線断時等ntp.nasa_n.govと同期が取れないときは自らが階層(st)5のためのNTPサーバとなることができる。
    server 127.127.1.0        # local clock 
    fudge 127.127.1.0 stratum 4  # not disciplined

    server ntp.nasa_n.gov prefer   <-- 「prefer」を指定したサーバに対し、優先的に時刻同期を行う

  ちなみに、以下組み合わせで同期可能な旨、実証済み。設定後、しばらく待たないとうまく同期できない(*1)ので注意する。
  (「> ntpq -p」コマンドの実行結果先頭に、「*」がつくまではそのまま待つ)
  参考)Windows Server2003において、Windows以外の時刻同期サーバとの同期に失敗する

    時刻同期サーバ:AIX 5.3
    時刻同期クライアント:Windows2000/XP

   (*1)うまく時刻同期できない例
      「日付と時刻のプロパティ」 - 「インターネット時刻」の同期メッセージに
      「[時刻同期サーバ]と同期中にエラーが発生しました。タイム サンプルは拒否されました。ピアの階層は、ホストの階層よりも少ないです。」
      と出力される。
    
      また、「> w32tm /resync」コマンドにより、手動で同期させようとしても失敗する。



6.時刻同期に関する注意事項

(1)通常、時刻同期に必要なプロセスxntpdは、/etc/rc.tcpipにより起動されるが、HACMP(IBM製クラスターソフト)でスタンバイ機として
   起動されている系は、rc.tcpipが呼ばれない状態となり、xntpdは起動しないことになる。

   別途、inittabに、「xntpdプロセスが起動していなければ起動させる」旨のシェルを登録し、サーバ起動時に本プロセスが起動してくるよう
   対応を行う必要がある。
 

AIX、RS/6000、UNIX、Linux