○ ntpのインストール (クライアント) 4 Xen

・CentOS 6.9 では ntp-4.2.6p5 がrpmでインストールされます

・メインのNTPサーバをLinuxルータに置き、上位のNTPサーバと同期させます
・その他のサーバ・クライアントマシンは、このNTPサーバに同期させます
・ntp-4.2.8p10をソースからインストールし、共通鍵認証の設定をします
・ドメインUでは設定しません、ドメインUの時計はドメイン0が管理します
・make はメンテナンスマシンで行っています

・新規インストールした opensslを使います
・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:ntp-4.2.8p10.tar.gz  (http://www.ntp.org/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
opensslのインストール

○インストール環境

:OS CentOS 6.9
:selinux disabled
:インストール先  /usr/local
:作業 ~/src
:言語 LANG=en_US.UTF-8 
:ユーザー rootで実行
:マシン名 earth.528p.com
:IPアドレス 192.168.0.2

・メンテナンスの場合は一般ユーザから行います



○ntp-4.2.8p10

・ntp-4.2.8のmakeには、libeventヴァージョン2が必要です
・libevent2-develパッケージを使うかソースから入れます (省略)

○ntpパッケージの削除・ユーザntpの修正

・ntp,ntpdateは[Base System]でインストールされます
・ソースから入れるので削除し、ユーザntpを修正します

[root@venus:~]
# service ntpd stop
# rpm -e ntp ntpdate
# usermod -d /dev/null -s /bin/false ntp

・ディレクトリが存在しない場合、作成します

# mkdir -p /etc/ntp/crypto
# chown root:ntp /etc/ntp/crypto
# chmod 750 /etc/ntp/crypto
# mkdir /var/lib/ntp
# chown ntp:ntp /var/lib/ntp

○ntpユーザ・ディレクトリの作成

・新規にインストールする場合 uid/gid情報を参照

[root@venus:~]
# groupadd -g 38 ntp
# useradd -u 38 -g 38 -d /dev/null -s /bin/false ntp
# mkdir -p /etc/ntp/crypto
# chown root:ntp /etc/ntp/crypto
# chmod 750 /etc/ntp/crypto
# mkdir /var/lib/ntp
# chown ntp:ntp /var/lib/ntp

○ソースの展開・インストール

・openssl-develを必要とします

# cd ~/src
[root@earth:~/src]
# tar zxvf ntp-4.2.8p10.tar.gz
# chown -R root:root ntp-4.2.8p10
# cd ntp-4.2.8p10
[root@earth:~/src/ntp-4.2.8p10]
# make distclean

・CFLAGS="-O2 -march=i686 -mtune=atom" (CPU最適化オプション)
・--enable-linuxcaps (linuxでntpdの -u オプションを有効にする)
・--enable-ntp-signd signed ntp(MS独自のSNTP)をサポート
・該当しない場合は指定しない
・オプションは半角を入れて続けて記入した方が良い

# ./configure CFLAGS="-O2 -march=i686 -mtune=atom" \
--sysconfdir=/etc \
--localstatedir=/var \
--enable-all-clocks \
--enable-parse-clocks \
--enable-linuxcaps \
--with-crypto \
--enable-ntp-signd

・コンパイル

# make

・インストール (アップデートは別項参照)

# make install

# cd ..
[root@earth:~/src]
# tar jcvf ntp-4.2.8p10-170323.tar.bz2 ntp-4.2.8p10/

○ntpのアップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・アップデート

# cd ~/src/ntp-4.2.8p10
[root@venus:~/src/ntp-4.2.8p10]
# make uninstall
# make install

・再起動します

# service ntpd restart

○step-tickersの作成

・起動スクリプトで読み込みます
・ntpdateで最初に時刻合わせをします
・ここでは自前のNTPサーバを指定しています

:/etc/ntp/step-tickers

# cd ~
[root@earth:~]
# echo "192.168.0.1" >> /etc/ntp/step-tickers

○共通鍵認証用のkeyファイルをコピーします

・上位のntpサーバ(Router)のkeyファイルをコピーします
・ntpkey_MD5keyファイルの "key ID" 10,20 をmd5keysとして保存します

:/etc/ntp/md5keys

10 MD5 q2-UI*j0)A(Csp77!2^2  # MD5 key
20 SHA1 d77c9b864d59b8ab659b9b5c35a0dbed841bf1f2  # SHA1 key

・パーミッションを変更します

# cd /etc/ntp
[root@earth:/etc/ntp]
# chown root:root md5keys
# chmod 600 md5keys

○ntp.confの作成

・SHA1を使えない古いntpでは "key ID" 10(MD5)のkeyを使用します

・ローカルネットワークでの共通鍵認証を行います
・serverのオプションとして key 20 を設定します
紫色部分 鍵ファイルと "key ID" の指定
・md5keysファイルの "key ID" 20 のkeyを使用します

: /etc/ntp.conf

restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.0.2

restrict 192.168.0.1 mask 255.255.255.255 nomodify notrap
server 192.168.0.1 key 20

server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay  0.008

keys    /etc/ntp/md5keys
trustedkey 20

○ntpd起動用スクリプトを作ります

/etc/rc.d/init.d/ntpd (別記)

○起動オプションの設定

:/etc/sysconfig/ntpd

OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"

○ntpdの起動

・port123 (UDP) が開放されていること
・起動後 "ntpq -p" コマンドで同期の確認します
・"key ID" が上位のサーバと異なる場合 refidの部分が .INIT. と表示されます

# cd ~
[root@earth:~]
# service ntpd start
# chkconfig --add ntpd

・少し休憩!

# ntpq -p

○ハードウェア・クロック(RTC)との同期

・kernelには11分ごとにRTCとシステムクロックを同期させる機能があります
・ntpdは"11 minute mode"を有効にできます man:HWCLOCK(8)
・"11 minute mode"が有効になっているか確認してみる

・"11 minute mode" が有効になっている(=UNSYNCがない)

$ ntptime|grep status
  status 0x2001 (PLL,NANO),

○iptablesの設定

Netfilter (iptables) で制御している場合、ポートを開けてください

Netfilter (iptables) の設定参照



○一時的なNTPサーバとの同期 (正確さが必要でない場合)

○ntpサーバの停止

[root@earth:~]
# service ntpd stop
# chkconfig --level 235 ntpd off

○外部時計との同期用スクリプトを作ります

・ntpdateコマンドを -u オプション付きで動作させます
・hwclockでハードウェアクロックに書き込みます オプションは -w でも良いです
・/etc/cron.dailyに配置して、1日1回動作させます

: /etc/cron.daily/xntpsync (root root 755)

#!/bin/bash
/usr/local/bin/ntpdate -u 192.168.0.1
/sbin/hwclock --systohc



○(参考) ドメインUでNTPサーバ

・kernelパラメータでドメイン0の制御から独立します

・ドメインUが起動中の場合

[root@earth:~]
# echo 1 > /proc/sys/xen/independent_wallclock

・ドメインU起動時から動作を変更する場合
・/etc/sysctl.confに以下の行を追加します

# For ntpd on Xen DomU
xen.independent_wallclock = 1

○ Copyright(c) 528p.com All Rights Reserved.