このページではntpdを使って自宅サーバーの時刻をNTP同期させるための、ntp.confの設定方法について初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
NTP SSH DHCPサーバーの構築

NTPサーバーについて

ntpdの設定(WBEL3,CentOS3)

ntpdの設定(WBEL4,CentOS4)

ntpdの設定(CentOS5)

ntpdのコントロール

ntpdの動作チェック


SSHサーバーについて

sshdの設定(WBEL3,CentOS3)

sshdの設定(WBEL4,CentOS4)

sshdの設定(CentOS5)

sshdのコントロール

sshdの動作チェック

ポートフォワーディングの設定


DHCPサーバーについて

DHCPのインストールと設定

DHCPのコントロール

DHCPの動作チェック


ntpdの構築に必要なファイル(CentOS5)

この コンテンツ に従って普通に CentOS5 インストール すると、 ntpd とその設定に必要なファイル類は既に 構築中のLinuxサーバー にインストールされているはずです。

以下に、CentOS5にインストールされているntpdで、操作や設定が必要なファイルを示します。

それ以外の ディストリビューション をお使いの場合や、標準添付以外のパッケージをインストールした場合には、ファイル名やディレクトリの パス が以下とは異なる場合がありますので注意してください。

ntpdの必要ファイル一覧
ntpdの必要ファイル一覧

ntpdの本体プログラムは"/usr/sbin/ntpd"ですが、これを直接呼び出すことはまずありません。

実際にはこの"/usr/sbin/ntpd"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/ntpd" を用います。

また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/ntpd" でも呼び出すことができます。

例えば、

"/etc/init.d/ntpd start" →ntpdの起動

"/etc/init.d/ntpd stop" →ntpdの停止

という使い方になります。

"/etc/rc.d/init.d/" には パス が通っていません パスが通っていないディレクトリにあるファイルの実行 から、パスを省略して実行することはできませんので注意してください。

また、先ほど説明したとおり、ntpdの設定ファイルは "/etc/ntp.conf" です。

ntpdはほとんどの動作についてこの"/etc/ntp.conf"の内容を参照しますから、設定に関して書き換えが必要なファイルはこの"/etc/ntp.conf"だけだと思ってよいでしょう。

このページの先頭へ↑

"/etc/ntp.conf"の編集(CentOS5)

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンド ユーザーアカウント "root" に変更し、 cp コマンドでバックアップを作成した後、 nano エディタで "/etc/ntp.conf" を開きます nanoエディタでファイルを開く

[tanaka@web1 ~]$ su -Enter
パスワード: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cp /etc/ntp.conf /etc/ntp.conf.orgEnter
[root@web1 ~]# nano /etc/ntp.confEnter


nanoで/etc/ntp.confを開く
nanoで"/etc/ntp.conf"を開く

"/etc/ntp.conf/" は、 ntpd が動作中でも自由に書き換えることができます。

ただし、 CentOS5 サーバー アプリケーション は通常、設定ファイルを保存しただけでは設定は反映されません。もちろんntpdも例外ではありません。

サーバーアプリケーションの設定ファイルは、通常サーバーアプリケーションの起動時に参照されて読み込まれますから、設定ファイルの保存後にサーバーアプリケーションの再起動を行うか、設定ファイルの再読み込みのコマンドを実行しなければ、設定ファイルの修正は有効になりませんので注意してください。

ntpdの再起動、設定ファイルの再読み込みについては、 ntpdのコントロールについて で説明します。

このページの先頭へ↑

ntp.confの編集(CentOS5)

以下に編集前の"/etc/ntp.conf"の内容を示します。

# 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 ...(IPv6の設定)
   1. 「全てのNTP通信を拒否する。」



# 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 ...(IPv6の設定)
   2. 「"127.0.0.1"とのNTP通信を許可する。」

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# 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
   3. 「"x.rhel.pool.ntp.org"をNTPサーバーとして参照する。」


#broadcast 192.168.1.255 key 42     # broadcast server
#broadcastclient            # broadcast client
#broadcast 224.0.1.1 key 42       # multicast server
#multicastclient 224.0.1.1       # multicast client
#manycastserver 239.255.254.254     # manycast server
#manycastclient 239.255.254.254 key 42 # 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
   4. 「"127.127.1.0"をNTPサーバーとして参照する。」
fudge  127.127.1.0 stratum 10
   5. 「"127.127.1.0"をNTPサーバーとして参照させる。」

# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
   6. ntpdにより作成される誤差修正値ファイルの指定。
broadcastdelay 0.004
   7. ブロードキャストで生じる誤差を指定(実際には記述なし)。

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
   8. ntpdの認証システムを利用する場合のキーファイルを指定。

# 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

"#" で始まる行はコメント行として無視されます。つまり、この"/etc/ntp.conf"の内容の大部分は設定のための解説文で、実際の設定パラメータはごく一部です。

このファイルをこれから編集していきます。

"restrict"〜NTPで接続するホストを指定する

行の先頭が "restrict" というキーワードで始まる設定は、 NTP による通信の許可、拒否を決定するためのものです。このキーワードによる設定は最も優先されます。

従って、他のキーワードで具体的な ホスト とのNTPによる通信設定を行っても、この"restrict"キーワードで許可されていないホストとは通信できません。

キーワード"restrict"は、"/etc/ntp.conf"中に複数記述することができます。

デフォルト の"/etc/ntp.conf"では、

restrict default kod nomodify notrap nopeer noquery
            1. 「全てのNTP通信を拒否する。」

restrict 127.0.0.1
            2. 「"127.0.0.1"とのNTP通信を許可する。」

の二つの設定値だけが有効になっていますが、"restrict"は先に記述された行から順に解釈され、後に記述された行の設定が優先となります。

つまり、前の記述内容と、後の記述内容が矛盾する場合には、 後の記述内容が有効になる 、という具合になるわけです。

1. にはたくさんのパラメータが連なっていますが、要するに「あれもこれもみんな通信は拒否!」という具合に通信拒否の命令を並べたものに過ぎません。

従って、 1.

「とりあえず全てのNTP通信を拒否しておく」

という初期化の設定を行い、その後に 2.

ループバックアドレス 、つまり自分自身からのみNTP通信を許可する」

という設定を記述にすることで、 構築中のLinuxサーバー が自分自身以外のホストとの通信を行わないようにしているわけです。

もしも、この 1. 2. の記述順序を入れ替えてしまうと、ntpdは自分自身を含めてすべてのNTP通信を行わなくなってしまいます。

しかしながらここでは敢えて "restrict" に関する設定を一切行わないことにします。

現在有効になっている 1. 2. "#" でコメントアウトしてください。

#restrict default kod nomodify notrap nopeer noquery
#restrict 127.0.0.1

ntpd は"restrict"キーワードで通信制御を行わない場合、 「全てのホストとNTP通信を行う。」 という振る舞いになりますから、この二行の設定を無効にすると、すべてのホストと自由にNTP通信を行うことができるようになります。

「そんなことをして セキュリティ 上問題はないの?。」

と思われるかもしれませんが、ここでもう一度、現在構築中のネットワーク構成を思い出してください ネットワークの計画(CentOS5) NAT+IPマスカレードの説明

つまり、ntpdが稼動する 構築中のLinuxサーバー は、 ルーター NAT + IPマスカレード により、 WAN 空間からの一方的なアクセスに対して遮断されている LAN 内に設置されていますから、外部からのNTPによる不正アクセスが 構築中のLinuxサーバー に対して行われることはあり得ない、というわけです。

もちろん、 ポートフォワーディング でNTPによる通信を外部から直接受けるような設定を行う場合は、きちんと"restrict"を設定しなければなりませんが、今回はntpdにサーバーとしての役割は持たせませんから、ポートフォワーディングの設定も行いません。

結果として、すべてのNTP通信を許可しても、セキュリティ上の問題は発生しない、というわけです。

"server"〜参照するNTPサーバーを指定する

行の先頭が "server" で始まるキーワードは、参照先の NTP サーバー の指定です。

ここで指定したNTPサーバーの時刻を参照して 構築中のLinuxサーバー は自分自身の時刻を修正します。

書式は、

server [参照するNTPサーバーの IPアドレス または FQDN ]

となります。

参照先のNTPサーバーとしては、 ISP や任意団体、大学、企業などが運営しているものが任意に利用できます。

設定条件としては、

1.通信経路の負荷を減らすため、できるだけ自分が契約しているISPのサーバーを利用する。

2.通信経路の負荷を減らすため、自宅からできるだけ近い場所にあるNTPサーバーを利用する。

3.精度を上げるためと通信障害に備える意味で、3種類のNTPサーバーを指定するのが望ましい。

を目安とすると良いでしょう。 デフォルト では、

server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
   3. 「"x.rhel.pool.ntp.org"をNTPサーバーとして参照する。」

となっていますが、これらのNTPサーバーは、

pool.ntp.org the internet cluster of ntp servers

が提供しているものです。

もちろんこれをそのまま利用しても問題はないのですが、日本国内にお住まいであれば、

server 0.jp.pool.ntp.org
server 1.jp.pool.ntp.org
server 2.jp.pool.ntp.org

と一番近い場所に設定を変更したほうがベターです。

一つくらい繋がらないNTPサーバーがあっても、実用上困ることはありませんが...。

ただ、この "x.*.pool.ntp.org" のNTPサーバーは性能に対して利用者が多いためか時々接続できないサーバーが出てきますから、現状ではあまりおすすめという訳にはいきません。

比較的安定して利用できるのは、

インターネットマルチフィード時刻情報サービス for Public

のNTPサーバーです。

ここを利用する場合はFQDNで、

よく解説書などには、 名前解決 によるタイミングのずれの減らすため、NTPサーバーの指定は
「FQDNよりもIPアドレスが望ましい。」
と書かれている場合があります。
これは一見もっともなアドバイスのように思えますが、実はあまり重視すべきことではありません。
常にアクセスを行うNTPサーバーの名前解決は、 ホスト機 DNSキャッシュ に蓄えられているから、というのが主な理由です。
DNSキャッシュによる名前解決は一瞬で行われますので、これが時刻調整に与える影響は微々たるものです。
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

あるいはそれぞれのIPアドレスで、

server 210.173.160.27
server 210.173.160.57
server 210.173.160.87

と書き換えます。

一般で利用できるNTPサーバーについては、 Webブラウザ から 「NTPサーバー」 「タイムサーバー」 などのキーワードでインターネット上で検索を行うと調べることができます。

タイムサーバーの草分けともいうべき福岡大学のNTPサーバーは、心無い通信機器メーカーの無断利用などで毎秒1000件近いアクセスがあり、管理者を悩ませているとのことです。
公に利用できる施設は、 「利用させてもらう。」 という気持ちで利用しましょう。
もちろん、 CentOS5 などの無料の ディストリビューション も同じ気持ちで利用しましょう。

その中には、例えば福岡大学のタイムサーバーのように、アクセス負荷が大きすぎて運用に支障をきたしているものもありますので、利用させてもらう際は状況をよく調べ、マナーを守るようにしましょう。

さて、 デフォルト の"/etc/ntp.conf"には、次のような"server"キーワードが記述されています。

server 127.127.1.0   # local clock
   4. 「"127.127.1.0"をNTPサーバーとして参照する。」

"127.127.1.0" は、 マザーボード 上の ハードウェア としての時計を示すアドレスです。

つまり現在は、 「ntpdは ホスト機 本体のマザーボードの時計の時刻を参照する。」 という設定になっているわけです。

これは、参照するNTPサーバーが具体的に設定されないケースに対処するための設定ですから、この部分の設定は "#" でコメントアウトしてください。

#server 127.127.1.0   # local clock

"fudge"〜NTPサーバーを宣言する

行の先頭が "fudge" で始まるキーワードは、指定した ホスト を独立した NTP サーバー として宣言する設定です。

デフォルト の"/etc/ntp.conf"には、次のような"fudge"キーワードが記述されています。

fudge  127.127.1.0 stratum 10
   5. 「"127.127.1.0"をNTPサーバーとして参照させる。」

つまり現在は、 「ntpdは ホスト機 本体の マザーボード の時計の時刻をNTPサーバーとして動作させる。」 という設定になっているわけです。

これは、参照するNTPサーバーが具体的に設定されないケースに対処するための設定です。また、 構築中のLinuxサーバー ではNTPサーバーを明示的には運用させませんから、この部分の設定は "#" でコメントアウトしてください。

#fudge  127.127.1.0 stratum 10

"driftfile"〜誤差修正用ファイルを指定する

行の先頭が "driftfile" で始まるキーワードは、 ntpd ホスト機 の時刻の進み方と、 NTP サーバー の時刻の進み方との誤差を記録するファイルを指定する設定です。

ntpdは、参照するNTPサーバーと時刻を同期するとき、一時間あたりの誤差をこの"driftfile"に記録しておきます。

そしてもしも一時間以上NTPサーバーから時刻情報が得られないときには、その"driftfile"に記録された時間を元に暫定的に時刻調整を実施します。

デフォルト の"/etc/ntp.conf"には、次のような"driftfile"キーワードが記述されています。

driftfile /var/lib/ntp/drift
   6. ntpdにより作成される誤差修正値ファイルの指定。

この設定はそのまま利用しますので修正は行いません。

"broadcastdelay"〜通信で生じる誤差を指定する

行の先頭が "broadcastdelay" で始まるキーワードは、 ntpd NTP サーバー と時刻を同期するときに ブロードキャスト で生じる同期タイミングの遅れを修正するパラメータの設定です。

この"/etc/ntp.conf"には"broadcastdelay"の記述はありませんが、記述がない場合 デフォルト では "0.004" が設定されます。

broadcastdelay 0.004
   7. ブロードキャストで生じる誤差を指定(実際には記述なし)。

通信環境は場所により様々ですから、もちろんこの値は絶対的なものではありません。しかし実際のタイミングの遅れを測定してこの値の微調整を行っても、実用上の影響はありません。

従ってこの設定はそのまま利用します。

"keys"〜ntpdで認証機能を利用する

行の先頭が "keys" で始まるキーワードは ntpd NTP サーバー として利用されるときに、認証を行う際のキーファイルの所在を指定するキーワードです。

デフォルト の"/etc/ntp.conf"には、次のような"keys"キーワードが記述されています。

keys /etc/ntp/keys
   8. ntpdの認証システムを利用する場合のキーファイルを指定。

構築中のLinuxサーバー ではNTPサーバーを明示的には運用させませんから、この部分の設定は、

#keys /etc/ntp/keys

のように "#" でコメントアウトしてください。

このページの先頭へ↑

"/etc/ntp.conf"の例(CentOS5)

以上の内容で作成した "/etc/ntp.conf" は、こちらをクリックすると表示できます。

この テキスト ファイルには余分な文字は入っていませんから、開いてコピー&ペーストで使用するか、 ダウンロード して使用してください。

もちろん、書き換えが必要な部分は適宜書き換えてください。

記述が終わったら "/etc/ntp.conf" を保存し、nanoエディタを終了してください nanoエディタでファイルを開く

"/etc/ntp.conf" の編集が終わったら、 ntpd の起動または再起動を行って設定を有効化してください ntpdのコントロールへ

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System