NTPで時刻同期(ntp.confの設定)

NTPで時刻同期するためにどのNTPサーバを使えばいいか検索してみました。

使えそうなのがここのNTPサーバ

この記事を読む限り、とても正確で処理能力も高そう。

Windowsクライアントを設定する場合はここを参考に設定。

image

でも各クライアントがグローバルなNTPサーバを参照するとサーバの負荷が高くなってしまうので、自分のネットワークに1台だけグローバルのNTPサーバを参照するサーバをたてて、同じネットワークのマシンはそのサーバを参照するのが一般的。

linuxで設定する場合はここを参考に。Vine Linux の場合は下記を参考に。

# apt-get install ntp

でインストール。

# /usr/sbin/ntpdate ntp.nict.jp

でとりあえず同期できるけど、NTPサーバとして起動したいので/etc/ntp.confを以下のように記述。

# 明示的に許可を与えたコンピュータやネットワークに対してだけ同期できるよう初期化する
restrict default ignore

# 自分自身に対して無条件のアクセス許可を与える
restrict 127.0.0.1

# 自身のネットワークに属するほかのNTPサーバやクライアントが同期できるようアクセス許可を与える
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

# 外部の参照先NTPサーバから時刻を同期できるようアクセス許可を与える
restrict ntp.nict.jp mask 255.255.255.255 nomodify notrap noquery

# 外部参照先NTPサーバを指定する
server ntp.nict.jp

#ローカル・クロック時刻(マザーボードの時計)をほかのNTPサーバやクライアントにも提供できるようにする
#server 127.127.1.0
#fudge 127.127.1.0 stratum 10

driftfile /etc/ntp/drift
logfile /var/log/ntp.log

オプションの意味は下記の通り。

  • ignore:指定したホストからのすべてのアクセスを無視します。
  • noquery:指定したソースからのすべてのNTPモード6および7のパケットを無視します。ただし,タイムサービスは行います。
  • nomodify:指定したホストからのNTPモード6および7のパケットによる情報の参照だけ許可します。
  • notrust:指定したホストを時刻同期のためのサーバとして扱いません。

あとは

# /etc/rc.d/init.d/ntpd start

で起動して

# /usr/sbin/ntpq -p

とすると状態を確認できる。起動後すぐには同期しないのでしばらくしてから確認してみて、なんとなく数値が入っていればOK。逆に全部0とかになっていれば同期できていない。

# /sbin/chkconfig ntpd on

で自動起動するようにして終了。

でもWindows XPから接続で失敗する・・・。なんでだろう。分かったら更新しときます。

<2008/03/10 追記>
分かったこと

  • NTPのポート番号は123番でUDP。ファイヤーウォールの設定で下図のように開けるてあげる必要がある。下図参照。ここでもちょっと書いた。123:udpと記述すると次回起動してみるとntp:udpに勝手に変換されている。
  • NTPサーバとして時刻を配信するサーバの場合だけ123:udpのポートを開ける必要がある。時刻サーバに接続するだけのクライアントはポートを開ける必要はない。
  • NTPサービスを起動してからクライアントが時刻同期を行うために、ちょっと時間が必要。サービス起動後、5分ぐらいしてから接続テストをしてみる。

image

inet.confとか設定する必要があるかと思ったけど、これは必要なし。

Windows標準の時計では、エラーメッセージがよく分からないので桜時計とか使うと接続テストが簡単にできる。

<2008/06/16 追記>
他のPCからNTP接続したときに

ntpd[1885]: can't open /etc/ntp/drift.TEMP: Permission denied

というエラーが出力されていた。これはここを参考に下記コマンドを実行すればOK.
# chown ntp.ntp /etc/ntp