OpenNTPD

2008/11/7更新

対応バージョン: 3.9p1

ntpdが動作しているマシンとNTPサーバとの時刻のずれが非常に大きいため同期ができない。

adjusting local clock by 36378.736235s
adjtime failed: Invalid argument

このような場合、ntpdateなどでいったん強制的にNTPサーバと時刻を同期させれば以降は正常に時刻同期が行われる。

% sudo ntpdate ntpserver

関連資料・記事

2008/5/19更新

対応バージョン: 3.9p1

ntpdの実行ユーザである_ntpのホームディレクトリの権限が適切に設定されていないことが原因である。

以下のようにオーナー/パーミッションを設定する。

% sudo chown root /var/empty/ntp
% sudo chmod 700 /var/empty/ntp

関連資料・記事

2008/2/3更新

対応バージョン: 3.9p1

ntpdの実行ユーザである_ntpのホームディレクトリが存在しないことが原因である。

例)

% finger _ntp
Login: _ntp                 Name: (null)
Directory: /var/empty/ntp   Shell: /sbin/nologin
:

% sudo mkdir /var/empty/ntp
% sudo chown root /var/empty/ntp
% sudo chmod 700 /var/empty/ntp

関連資料・記事

2008/2/3更新

対応バージョン: 3.9p1

ntpdは起動してから時間をかけてゆるやかにNTPサーバと時刻同期を行うが、強制的にNTPサーバと時刻同期を行うには-sオプション付きでデーモンを起動する。

# /usr/local/sbin/ntpd -s

起動後はそのまま運用しても構わないが、いったん終了させて通常モードで起動してもよい。

# pkill ntpd
# /usr/local/sbin/ntpd

関連資料・記事

2008/12/2更新

対応バージョン: 3.9p1

公式サイト

準備

導入に必要なもの

openntpd-3.9p1.tar.gz

導入OS

Fedora 8,9,10

管理用アカウント作成

% sudo groupadd _ntp
% sudo useradd -g _ntp -s /sbin/nologin -d /var/empty/ntp _ntp
% sudo mkdir /var/empty/ntp
% sudo chown root /var/empty/ntp
% sudo chmod 700 /var/empty/ntp

デフォルトでインストールされているNTPサーバの無効化

まず、既にサービスが起動していれば停止する。

% sudo service ntpd stop

次にサービスを無効にする。

% sudo chkconfig ntpd off

必要に応じて関連ファイルを退避する。ただしOpenNTPDではこれらのファイルを使用しないので残しておいても問題ない。

/etc/ntp.conf
/etc/ntpディレクトリ配下

インストール

配布ファイル展開

% tar zxvf openntpd-3.9p1.tar.gz
% cd openntpd-3.9p1

make,インストール

% ./configure
% make
% sudo make install

インストール物 (man,infoは除く)

/usr/local/sbin/ntpd

/usr/local/etc/ntpd.conf

各種設定

/usr/local/etc/ntpd.confにて設定を行う。

以下、主な設定項目について説明する。設定は同じパラメータを複数行記述できる。

待ち受けインタフェース(listen on)

ntpdをサーバとして運用する場合の待ち受けインタフェースを指定する。ポートは123固定。

ntpdをクライアントとして運用する場合は未設定でよい。

例)

当該ホスト上の全てのインタフェース
listen on *
ループバックアドレス(IPv4)
listen on 127.0.0.1
ループバックアドレス(IPv6)
listen on ::1
任意のアドレス
listen on 192.168.0.1

NTPクライアントの指定(server|servers)

ntpdをクライアントとして運用する場合のNTPサーバを指定する。

ntpdをサーバとして運用する場合は未設定でよい。

尚、FQDNで指定したNTPサーバが特定の1台を示す場合はserverを、DNSラウンドロビンにより複数のIPを返す場合はservers(最後が複数形)をそれぞれ使用する。

例)

server 10.0.0.8
server pear.foo.org
servers pool.foo.org

動作確認

デーモンを起動する。

% sudo /usr/local/sbin/ntpd

% ps aux|grep ntpd
root 27193 ... Ss   04:34   0:00 /usr/local/sbin/ntpd
_ntp 27194 ... S    04:34   0:00 /usr/local/sbin/ntpd

プロセスが動作し、syslogに以下のようなログが出力されていれば正常に動作している。

ここでは例として3つの外部NTPサーバに接続するクライアントとして動作させた場合のログを示す。

ntp engine ready
peer xxx.xxx.xxx.1 now valid
peer xxx.xxx.xxx.2 now valid
peer xxx.xxx.xxx.3 now valid
adjusting local clock by 5.972681s
adjusting local clock by 5.920600s
adjusting local clock by 5.891570s

デーモンを終了する。

単にkillすればよい。

% sudo pkill ntpd

initスクリプト設置

スクリプト作成

/etc/rc.d/init.d/openntpdを作成する。

#!/bin/bash
#
# openntpd
#
# chkconfig: 345 80 20
# description: openntpd

TARGET=ntpd
DST_BIN=/usr/local/sbin/${TARGET}

start()
{
  echo -n "Starting ${TARGET}: "
  ${DST_BIN}
  echo
}

stop()
{
  echo -n "Shutting down ${TARGET}: "
  pkill ${TARGET}
  echo
}

case "$1" in
  start)
    start
    ;;

  stop)
    stop
    ;;

  restart)
    stop
    start
    ;;

  *)
    echo "Usage: `basename $0` {start|stop|restart}" >&2
    exit 1
esac

exit 0

サービス登録

% sudo chkconfig --add openntpd
% sudo chkconfig --list openntpd
openntpd   0:off  1:off  2:off  3:on  4:on  5:on  6:off
% sudo service openntpd start

関連資料・記事