気の向くままに ~備忘録@wiki~

NTP

最終更新:

shirayuu

- view
管理者のみ編集可
NTPは、自動で時刻合わせするためプロトコル。
NTPD は、自動で時刻合わせしてくれるデーモン。
といったところでしょうか。サーバを運営する上ではしっかりと時刻を合わせておきたい物です。
時刻合わせせずに放置しておくと結構ずれますよ。




NTPD のインストール

FreeBSD 6.2 では、最初から入ってる模様です。
ついでに、ネットワーク内では自分の立てた NTPサーバから時刻を取得できるようにしてみましょう。

Ubuntu 8.10 では、以下コマンドでインストールしましょう。

$ sudo apt-get install ntp


NTPD の設定

FreeBSD も Ubuntu も設定ファイルは/etc/ntp.conf です。

外部NTPサーバの決定

さて、時刻取得のサーバですが以下の3つが推奨されています。
  • ntp.jst.mfeed.ad.jp
  • ntp.nict.jp
  • ntp.ring.gr.jp

理由としては、安定した時刻の取得のためです。

ここらへんの詳しいことは、
NTP Wiki: http://wiki.nothing.sh/page/NTP
を参考して下さい。

NTPD は、複数のサーバを設定することができるので全部使っちゃいましょう。

ntp.conf ファイルのバックアップ

もちろん、conf ファイルは設定変更前にバックアップを取っておきます。

# cp /etc/ntp.conf /etc/ntp.conf.orig

ntp.conf の設定

参考になるサイト


実際に編集

さて、実際に編集するわけですが、ntp.conf には外部サーバの登録とその登録されたサーバのアクセス制限を行うことができます。
アクセス制限は、自分が NTPサーバにどう答えるかを設定する物です。

アクセス制限に関してのポイントは次の通りでしょう。
  • 主に自分は正しい時刻を取得するのが目的なのでそれ以外の目的(逆に時刻を変更されたり、自分の状態を報告する)は無視する
  • ネットワーク内からの時刻問い合わせには答える
  • ネットワーク外からはすべての要求に対して無視する。

ということで、
  • 外部サーバの要求に対しては時刻の問い合わせのみを行う。
  • ネットワーク内からは、時刻の問い合わせのみを受け付ける。
ということになります。

もちろん、デフォルトでは問い合わせはすべて拒否します。

アクセス制限やその他記述に関しては以下サイトを参考にしました。
http://www.aconus.com/~oyaji/ntp/ntp.htm
http://honana.com/ntp/setting.html
http://www.asahi-net.or.jp/~AA4T-NNGK/ntpd.html


# /etc/ntp.conf
## デフォルトの設定: いろいろ拒否する
## 自分自身のアクセス: すべて許可
restrict default noquery nomodify notrap
restrict 127.0.0.1


## アクセス設定
## noquery	サーバからの時刻問い合わせがきたとき無視する
## nomodify	サーバからの設定変更の要求がきたとき無視する
## notrap	状態変更時にトラップを上げない

## ネットワーク内の設定
## 時刻問い合わせのみ答える
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

## 外部サーバのアクセス設定
restrict ntp.jst.mfeed.ad.jp noquery nomodify notrap
restrict ntp.ring.gr.jp noquery nomodify notrap
# nict は3行続けてかく
restrict ntp.nict.jp noquery nomodify notrap
restrict ntp.nict.jp noquery nomodify notrap
restrict ntp.nict.jp noquery nomodify notrap


## 外部サーバの指定
server ntp.jst.mfeed.ad.jp
server ntp.ring.gr.jp

# nict は3行続けて書くのが重要
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp


## 同期したとき、時間のずれの情報を /etc/ntp/drift に書き込む
driftfile /var/lib/ntp/ntp.drift

とまあ、こんな感じで記述してみました。

NTPD の起動

NTPD を起動する前にできるだけ時刻を修正してく必要があります。そのため、 NTPD を起動する前には、

# ntpdate ntp.ring.gr.jp 

ntpdate で時刻合わせをしておきます。

時刻合わせが正しく行われたら、

FreeBSDは以下のコマンド

# ntpd 

また、/etc/rc.conf に以下の文面を追記
ntpd_enable="YES"

Ubuntu は以下のコマンド

$ sudo /etc/init.d/ntp start

で実際に起動させましょう。


NTPD の確認

では、実際に動いたか確認するために

# ntpq -p

で確認してみましょう。

実際にこのような返答がくるでしょう。

==============================================================================
*ntp1.jst.mfeed. 210.173.160.56   2 u   36   64  377   13.845  -13.609   1.484
 ntp-a3.nict.go. .INIT.          16 u    -   64    0    0.000    0.000   0.000
+ring.aist.go.jp 60.56.119.79     3 u   25   64  377   18.880  -12.044   1.102


ネットワーク内の同期確認

さて自分で作ったNTPサーバが実際にネットワーク内のPCから実際に時刻問い合わせがきた場合、
うまく時刻を返せてるかを確かめてみましょう。
Windows からは桜時計、Unix系では ntpdate あたりで確認してみるといいでしょう。

ntpdate では、

# ntpdate <サーバのアドレス>

となるでしょう。

桜時計はVectorからダウンロードしSKRWATCH.EXE を実行して
NTPサーバー名/IPアドレス の欄にサーバのアドレスを入れてオンラインボタンを押せば確認できます。
目安箱バナー