■時刻同期サーバ
NTPは相手サーバとの通信の遅延を計測し、受け取った時間情報を補正する機能です。時刻の同期方法では階層構造を採用しています。そして階層の数も16階層までと制限されています。NTPではこの階層をstratumと呼びます。階層の最上位 ( stratum 0 )は原子時計やGPSのような正確な時間を取得することのできるサーバです。そのサーバから時刻を受け取ったサーバがstratum 1、さらにstratum 1から時刻を受け取ったサーバがstratum 2と呼ばれます。stratum 16のサーバからは時刻を同期することはできません。またNTPでは1対1での時刻同期だけではなくマルチキャストやブロードキャストを使ってネットワーク上のホストに一斉に時刻を伝える方法もサポートしています。NTPではこのように時刻の伝達方法を制御することで大規模なネットワークにも対応できるようになっています。
インターネット上ではいくつかのstratum 1、stratum 2サーバが公開されています。
http://support.ntp.org/bin/view/Servers/WebHome
RHELまたはCentOSにはBaseを選択するとNTPはインストールされていますので設定のみを行います。
# vi /etc/ntp.conf # For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). driftfile /var/lib/ntp/drift # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. #restrict default kod nomodify notrap nopeer noquery #restrict -6 default kod nomodify notrap nopeer noquery restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 restrict -6 ::1 # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap server ntp.nict.jp # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #server 0.rhel.pool.ntp.org #server 1.rhel.pool.ntp.org #server 2.rhel.pool.ntp.org #broadcast 192.168.1.255 autokey # broadcast server #broadcastclient # broadcast client #broadcast 224.0.1.1 autokey # multicast server #multicastclient 224.0.1.1 # multicast client #manycastserver 239.255.254.254 # manycast server #manycastclient 239.255.254.254 autokey # manycast client # Undisciplined Local Clock. This is a fake driver intended for backup # and when no outside source of synchronized time is available. #server 127.127.1.0 # local clock #fudge 127.127.1.0 stratum 10 # Enable public key cryptography. #crypto includefile /etc/ntp/crypto/pw # Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys # Specify the key identifiers which are trusted. #trustedkey 4 8 42 # Specify the key identifier to use with the ntpdc utility. #requestkey 8 # Specify the key identifier to use with the ntpq utility. #controlkey 8 # Enable writing of statistics records. #statistics clockstats cryptostats loopstats peerstats |
最初の編集箇所、restrictでどのようなアクセス制御を行うか設定しています。対象のアドレスに対して以下のフラグで制御が可能です。
引数 | 内容 |
ignore | 指定したホストからの全ての種類のパケットを無視します。 |
kod | アクセス違反があった場合には、KoD ( Kiss of Death )パケットを送信します。 |
nomodify | ntpqなどでの問い合わせのうち、サーバの状態を変更するものを禁止します。 |
noquery | ntpqなどでの問い合わせを禁止します。 |
nopeer | peerの対象としません。 |
noserve | ntpqなどの問い合わせパケット以外は全て禁止します。時刻同期のリクエストも禁止されます。 |
このNTPサーバにアクセスできるIPアドレスをrestrictで限定しています。また、NTPを起動する前に手動で日時を合わせておきます。
# ntpdate -b -s ntp.nict.jp # hwclock -s |
そしてNTPを起動します。
# /etc/rc.d/init.d/ntpd start |
しばらく時間をおいてから以下のコマンドを実行し同期がとれているのか確認します。
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp-b2.nict.go. .NICT. 1 u 20 64 17 21.460 0.059 22.348 |
各項目の意味は次のようになります。
項目名 | 内容 |
remote | 相手サーバの名称またはIPアドレス |
refid | 相手サーバが同期しているサーバのIPアドレス |
st | 階層 ( stratum ) 数 |
t | 相手サーバの型 ( u: unicast , m: multicast , b: broadcast , l: local ) |
when | 最後の問い合わせからの経過時間 |
poll | 問い合わせ間隔 |
reach | 到達履歴 ( 最近8回分の到着状態を1ビットずつ8進数で表記 ) 。377で全て成功。 |
delay | 遅延時間 ( msec ) |
offset | 時刻サーバとのずれ ( msec ) |
jitter | offsetの分散 ( msec ) 。小さい方が安定している。 |
remoteの項目の先頭の「+」や「*」の記号は同期処理プロセスの状態を示しています。以下のような記号が用いられます。
記号 | 内容 |
空白 | サーバとの通信が正常にとれていない状態です。 |
* | このサーバと同期をとっています。 |
+ | 同期をとることのできる候補のサーバです。 |
# | 同期をとることのできる候補のサーバですが6番目以降の候補です。 |
× | 同期をとることができず候補から外れているサーバです。 |