○ ntpのインストール (サーバ)

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

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

・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

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

○関連サイト

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

○参照ファイル

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

○インストール環境

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

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



○ntp-4.2.8p10

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

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

[root@venus:~]
# service ntp 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

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

・ソースの展開・コンパイルの表記は略します

# cd ~/src
[root@venus:~/src]
# tar zxvf ntp-4.2.8p10.tar.gz
# chown -R root:root ntp-4.2.8p10
# cd ntp-4.2.8p10
[root@venus:~/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@venus:~/src]
# tar jcvf ntp-4.2.8p10-rt-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

・selinuxラベルを修正(selinuxが有効の場合)

[root@venus:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -Rv /var

・再起動します

# service ntpd restart

○step-tickersの作成

・起動スクリプトで読み込みます
・ntpdateで最初に時刻合わせをします
・外部公開ntpサーバはnetで捜して下さい

:/etc/ntp/step-tickers

# echo "133.11.204.98" >> /etc/ntp/step-tickers
# echo "130.34.11.117" >> /etc/ntp/step-tickers

○共通鍵認証用のkeyファイルを作成します

・rpmパッケージの場合はインストールされたものを使います
・ntp-keygenのデフォルトでは公開鍵認証用のkeyファイルが作成されます
・"authenticate no"の場合でも設定しておいた方が良い

:/etc/ntp/ntpkey*

# dd if=/dev/urandom of=/root/.rnd bs=1024 count=1
# cd /etc/ntp
[root@venus:/etc/ntp]
# ntp-keygen -M
# ls -l

ntpkey_MD5key_venus.528p.com.3525826763
ntp.keys -> ntpkey_MD5key_venus.528p.com.3525826763

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

# chmod 600 ntpkey*

・ntpkey_MD5keyの内容(MD5 keyとSHA1 key が設定されています)

 1 MD5 Nnc^ddk'GY23IB{rHXqN  # MD5 key
 2 MD5 UG(?8[H;@fyQ$p$0%lL0  # MD5 key
 3 MD5 }f'l'k-ay5T7-*b3QDn$  # MD5 key
 4 MD5 nkPgt[:>n(tDTg$LmOL[  # MD5 key
 5 MD5 zl{x}Xh*%!dRa7^o=2E+  # MD5 key
 6 MD5 PrfB.%&NUd}<|@S?MWF!  # MD5 key
 7 MD5 h\'!QnJ^29TY(4/zuE&]  # MD5 key
 8 MD5 S"[h\YL{M%B5$8SO6c0b  # MD5 key
 9 MD5 eTQ's&PD:l:zp'|I='dw  # MD5 key
10 MD5 q2-UI*j0)A(Csp77!2^2  # MD5 key
11 SHA1 71a88e1e9a47da27f08868af80d9be38a094375b  # SHA1 key
12 SHA1 761be7231450c137e85aec7ed94266bce1c42ba8  # SHA1 key
13 SHA1 db59d818a57f0c5c16169339bda85e08dba4da9a  # SHA1 key
14 SHA1 103e1346256b8608f998932556eebf842e246b9a  # SHA1 key
15 SHA1 e7890cf465a44d7fa2d17f14bda1457f3d1c7adc  # SHA1 key
16 SHA1 aa2569f144b6707c7cff580ccae91fe3f77997a0  # SHA1 key
17 SHA1 9fe2fe1aafb87ac49e8c680958177af12fad74b3  # SHA1 key
18 SHA1 2a121e7b4758c2bf24bb89e924e5fd993a844361  # SHA1 key
19 SHA1 42b2cd4e18388c5a4794a7e47a25ec635fb56cf5  # SHA1 key
20 SHA1 d77c9b864d59b8ab659b9b5c35a0dbed841bf1f2  # SHA1 key

○ntp.confの作成

・RFC-4330 10-6 および 10-7 でIPアドレスによる指定ではなく
・ホスト名による設定が "SHOULD" とされています

・ローカルネットワークでの共通鍵認証を行います
紫色部分 鍵ファイルと "key ID" の指定
・ntpkey_MD5keyファイルの "key ID" 10,20 のkeyを使用します
・SHA1 keyをサポートしない古いntpのために MD5 keyを含めます

:/etc/ntp.conf

restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.0.1

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

restrict 133.11.204.98 mask 255.255.255.255 nomodify notrap noquery
restrict 130.34.11.117 mask 255.255.255.255 nomodify notrap noquery

server 133.11.204.98
server 130.34.11.117

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/ntp.keys
trustedkey 10 20

:外部公開ntpサーバ例 (20160121現在)

ntp0.nc.u-tokyo.ac.jp (133.11.204.98)  Stratum 1
ntp.nc.u-tokyo.ac.jp 
zao.net.tohoku.ac.jp  (130.34.11.117)  Stratum 1
ntp.tohoku.ac.jp
ntp1.jst.mfeed.ad.jp  (210.173.160.27) Stratum 2
ntp2.jst.mfeed.ad.jp  (210.173.160.57) Stratum 2
ntp3.jst.mfeed.ad.jp  (210.173.160.87) Stratum 2

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

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

○起動オプションの設定

:/etc/sysconfig/ntpd

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

○ntpdの起動

・事前にinternetに接続されていること
・port123(UDP)が開放されていること
・起動後 "ntpq -p" コマンドで同期の確認します

# cd ~
[root@venus:~]
# 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) の設定参照

○selinuxヘの対応 (selinuxが有効の場合)

:新規インストールファイルのselinuxラベルを修正

[root@venus:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -Rv /var



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

○/etc/ntp.confを修正します

・「server 127.127.1.0」はNTPサーバーと同期化できなかった場合には
・ハードウェア・クロック(RTC)を使用するという意味です。

restrict default nomodify notrap noquery
restrict 127.0.0.1

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

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/ntpkey_md5_venus.528p.com

○ntpdの再起動

[root@venus:~]
# service ntpd restart

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

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

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

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

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