のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:122,149,138人
909,660,826頁
昨日:1,085人
2,981頁
今日:414人
800頁
最近の注目
人気の最安値情報

    ntp, ntpd(Linuxでの時計の合わせ方) anchor.png

    ntpdを使うと、時計を自動的に調整してくれるようになります。 ntpdは基準となるサーバ(最大3つ)を見ながら時計を調整します。まず、ntpdをインストールして(例 apt-get install ntpd)、 /etc/ntp.conf を設定します。最初に、基準となるサーバを3つ探します。 現在、国により「ntp.nict.jp」が運営されており、もっとも精度の良い参照先の一つです。 特別な事情がなければ、ここを使わせて貰いましょう。

    参照先のサーバが決まったら、適当なエディタ(emacsなど)で、「/etc/ntp.conf」を開きます。(たぶん、管理者アカウント(root)でないと編集できません。以下の作業はすべてrootで行います。) 中程に「server」という文字が見えると思いますので、そこらへんに

    server ntp.nict.jp

    と1行で書き加えます。太字部分は、先のページで探してきたntpサーバの名前を使います。基本的に /etc/ntp.conf のどこに書いてもかまいません。以下のように、複数のサーバを設定できます。

    # --- OUR TIMESERVERS -----
    server ntp.nict.jp
    server ntp.nict.jp
    server ntp0.ring.gr.jp

    ファイルにserverを追加したら、

    # /etc/init.d/ntpd restart

    コマンドを実行します。これで、ntpdが指定したサーバを認識して動き始めます。 しばらく待ってから「ntpq -p」コマンドで様子を見てみましょう。(「command not found」になる人は、rootになるとき「su -」を使ってないのだと思います。「su -」をするか、「/usr/sbin/ntpq」を指定して実行してください。) もし、

    ring.aist.go.jp .INIT.          16  u    -   64    0    0.000    0.000 4000.00

    と、INIT が解消されなければ、サーバのIPアドレスを調べます。そこで表示されたアドレスを「/etc/ntp.conf」に追加します。

    restrict 133.243.3.209 mask 255.255.255.255 nomodify notrap noquery

    基本はここまでです。1日ほど待つと、ntpdはかなりの精度で時間を合わせていると思います。「ntpstat」コマンドで、精度を確認できます。

    # ntpstat
    synchronised to NTP server (133.41.4.1) at stratum 2
    time correct to within 42 ms
    polling server every 1024 s

    この例では、42ミリ秒(42/1000秒)の精度で時間が合っていることがわかります。 より詳細な状態が「ntpq -p」コマンドでチェックできます。 重要なのはjitterの値で、pollが1024になった頃にjitterが10以下ならばおおむね問題ないはずです。下記の例では、欲張って7つもサーバを設定しています。7つは多すぎますが、2〜3つぐらいは指定しても良いでしょう。

    # ntpq -p
    remote refid st t when poll reach delay offset jitter
    ==============================================================================
     ns.hiroshima-u. ntp.hiroshima-u 2 u 471 1024 377 0.737 -0.135 0.272
    -ntp.hiroshima-u .GPS. 1 u 425 1024 377 3.123 -0.924 0.430
    -ntp-b2.nict.go. .PPS. 1 u 594 1024 377 28.749 -0.683 0.004
    +ring.yamanashi. 133.23.247.47 2 u 605 1024 377 39.715 -0.617 0.058
     ring.yokohama.r 0.0.0.0 16 u - 1024 0 0.000 0.000 4000.00
    +ring.sakura.ad. 113.170.74.161 2 u 471 1024 377 41.706 -0.570 0.177
    *ntp01.sinet.ad. .GPS. 1 u 351 1024 377 31.013 -0.513 0.013

    ntpd は、サーバ用に設計されているので、時間をさかのぼる調整は行いません。時間を早めるときは、1秒の長さを短くして合わせます。 ntpq が調整する時間の伸び(縮み)は、±0.05% です。大きな時間のズレを修正するには、大きな時間がかかります。 これは、これ以上時計がずれるものはハードウエアの交換の必要があるという設計思想からくる制限と思われます。 VMWare などの仮想環境では、これより大きな時間の差が出ることがあります。その場合は、cron などで ntpdate を実行した方が良いでしょう。

    Page Top

    /etc/cron.d/rdate anchor.png

    */1 * * * * root if [ `/usr/sbin/ntpq -p|awk '{if( $5 ~ /^[0-9]+$/ ) total += $9; num++ } END{ if(0<num) { print int(total/num) }else{ print 999999 } }'` -gt 10000 ]; then /etc/init.d/ntpd stop; ntpdate -b ntp.hiroshima-u.ac.jp; hwclock -w; /etc/init.d/ntpd start; fi
    > /tmp/rdate.log 2>&1
    Page Top

    「ntpd -p」 の説明 anchor.png

    先頭に「+」「-」「*」などがついたら、安定動作にはいっています。1日程度置いて、再びこれをチェックしてみてください。ここでjitterの大きなサーバは、時刻の揺れが大きいと言うことなので、もし4つ以上のサーバを参照していて、jitterが大きなサーバが含まれていたら、そのサーバははずした方が良いです。

    remoteサーバ名(先頭の記号は下記参照)
    refidサーバの時刻参照元。.GPS. などのソースが表示されることも。このサーバが使えなければ、refidをさかのぼると良いかも。初期化中は .INIT. や .STEP. になるので、しばらく待ってみる。
    stサーバの階層(stratum)番号が表示されます。1なら1次サーバ。1次サーバはアクセスが集中しがちなので、近場の2次(以上)のサーバを探してください。
    t階層の種類。使えていれば気にしなくて良い。( l: local, u: unicast, m: multicast, b:broadcast )
    when最終同期からの経過時間(秒)。
    poll同期間隔(秒)。安定してくると徐々に長くなり、最大1024秒。
    reach過去8回分のチェックの成功の是非を8進数で表示。
    delay信号の平均遅延時間(ms)。
    offsetサーバとの時刻のずれ(ms)。10(1/100秒)以内なら普通は問題ない。
    jitter同期時のタイミングのばらつき(ms)。最初は統計が少なくて乱高下するので、同期開始から1日ぐらいしないと値を信用できない。一番大事なのはこの値。10以下なら問題ない。
    Page Top

    サーバ状態記号の意味 anchor.png

     ネットワーク距離が遠いため、もしくは、同期を試みたばかりなので、同期に使用していない。
    x同期検査不合格により、使用しない。
    .利用者過多により使用しない。
    -クラスタリング検査不合格により、使用しない。
    +利用可能サーバ。
    #ネットワーク距離が遠いが使用可能なサーバ。
    *現在同期中のサーバ。
    oPPSによる間接同期中のサーバ。

    基本はここまでです。お疲れ様でした。


    以下、自分で近場のntpを探す方法です。
    では、最悪の場合に「clock.nc.fukuoka-u.ac.jp」を使わせてもらうにしても、サーバまでの途中経路のもっと近い位置に、時計サーバがあれば、そっちを使う方がよいに決まっています。まず、経路を調べてみましょう。「traceroute」コマンドを使って調べられます。tracerouteで検索する先は、必ずしもntpサーバでなくれもかまいません。もし思い当たるntpサーバがなければ、「traceroute www.google.com」であたってみてもOKです。いくつかのサーバまでの経路を検索すれば、その中には意外と時計サーバが含まれているものです。また、お使いのプロバイダ(ISP)が時計サーバを明示して提供してくれているのなら、第一候補としてそれを使いましょう。

    # traceroute clock.nc.fukuoka-u.ac.jp
    traceroute to clock.nc.fukuoka-u.ac.jp (133.100.9.2), 30 hops max, 38 byte packets
    1  218.227.255.171 (218.227.255.171)  2.327 ms  1.929 ms  1.837 ms
    2  218.227.255.190 (218.227.255.190)  1.871 ms  2.134 ms  2.546 ms
    3  218.42.5.236 (218.42.5.236)  14.629 ms  15.044 ms  15.412 ms
    4  133.205.1.54 (133.205.1.54)  15.518 ms  15.230 ms  14.787 ms
    5  210.147.255.206 (210.147.255.206)  15.658 ms  14.593 ms 14.655 ms
    6  210.254.187.69 (210.254.187.69)  15.165 ms  15.357 ms  15.157 ms
    7  210.254.188.149 (210.254.188.149)  14.919 ms  15.726 ms  14.911 ms
    8  61.207.14.21 (61.207.14.21)  22.316 ms  22.513 ms  33.900 ms
    9  211.129.22.150 (211.129.22.150)  31.818 ms  32.386 ms  31.802 ms
    10  211.122.13.70 (211.122.13.70)  32.800 ms  33.114 ms  32.547 ms
    11  * * *
    12  fww.net.fukuoka-u.ac.jp (133.100.242.2)  35.941 ms  36.055 ms  35.361 ms
    13  * * *
    14  * * *
    15  hakata.nc.fukuoka-u.ac.jp (133.100.9.1)  35.940 ms  35.921 ms  35.754 ms
    16  clock.nc.fukuoka-u.ac.jp (133.100.9.2)  35.391 ms  36.204 ms  35.966 ms
    

    「clock.nc.fukuoka-u.ac.jp」まで15のルータを経由していて、最終的な遅延の目安は36/1000秒におよぶことがわかります。もちろん、ntpdは遅延を考慮して調整してくれますが、この遅延は少ないほどよいに決まっています。さて、途中経路のうち、12の経由地のIPアドレスがわかりましたので、近い方から順に、時計サーバとして使えるか試してみましょう。まずは最も近い、遅延も1.8/1000秒しかない「218.227.255.171」をみてみましょう。それには、ntpqコマンドを使います。

    # ntpq -p 218.227.255.171
    remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    +157.3.251.14    157.3.174.28     2 -  288 1024  377    9.410  -52.570  21.320
    *157.3.174.26    157.3.174.29     2 -  327 1024  377   10.620 -26.403  10.620

    あれ、いきなり見つけてしまいました。このような情報が得られれば、時間参照先として使える可能性大です。 こうして、いくつかのサーバが見つかったら、/etc/ntp.confに書き込みます。最低数は3つですが、同じぐらい短い遅延距離に多くのサーバが見つかったのなら、せっかくなので5つぐらい設定してしまっても良いです。

    # Prohibit general access to this service.
    restrict default ignore restrict 127.0.0.1
    server 218.227.255.171
    server 218.227.255.190
    server 133.205.1.54
    restrict 218.227.255.171 mask 255.255.255.255 nomodify notrap noquery
    restrict 218.227.255.190 mask 255.255.255.255 nomodify notrap noquery
    restrict 133.205.1.54 mask 255.255.255.255 nomodify notrap noquery

    3つのサーバを見つけたので、3つのIPアドレスを、serverとrestrictの項目に書き込んでおきます。これを保存して、「/etc/init.d/ntpd restart」でntpdを再起動します。ntpdの動作を確認するにも、「ntpq -p」コマンドを使います。

    # ntpq -p
    remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    218.227.255.171 157.3.174.26     3 u   49   64    3    1.986  -137.47   0.374
    218.227.255.190 157.3.251.14     3 u   49   64    3    2.059  -155.38   0.575
    133.205.1.54    133.205.16.129   4 u   47   64    3   15.339   -1.404   0.647

    refidが取得できて、reachが0出なければ、時刻の取得が成功しています。もし、refidは「.INIT.」のままで、rearchが0から増えなければ、残念ながらそのサーバは使えません。別のサーバを探してみてください。 数十分動かすと、だんだん時計が正確になってきます。試しに、有名なntpdサーバも入れてみました。

    # ntpq -p
    remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    -218.227.255.171 157.3.174.26     3 u   40   64    3    2.132  -139.86   0.205
    +218.227.255.190 157.3.251.14     3 u   40   64    3    2.464  -158.88   0.599
    -133.205.1.54    133.205.16.129   4 u   38   64    3   15.067   -1.509   0.441
    *clock.tl.fukuok .GPS.            1 u   38   64    3   37.727 -2.741   0.690
    +ntp1.jst.mfeed. 210.173.160.86   2 u   35   64    3   14.928   -0.606   0.147

    トップ   凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom
    Counter: 37012, today: 1, yesterday: 0
    最終更新: 2016-06-26 (日) 04:29:41 (JST) (167d) by 牧場長