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

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

**以降はコメントです
*エディタ、ファイラーの操作は省略します
*説明文 (英文) を読みましょう
*Enterキーを省略します

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

○関連サイト

:ntp-4.2.6p2.tar.gz  (http://www.ntp.org/)

○参照ファイル

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

○インストール環境

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

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



○ntp-4.2.6p2

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

uid/gid情報を参照

# mkdir /etc/ntp
# useradd -u 38 -d /dev/null -s /bin/false ntp
# mkdir /var/lib/ntp
# chown ntp:ntp /var/lib/ntp

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

# cd /usr/src
# tar zxvf ntp-4.2.6p2.tar.gz
# chown -R root:root ntp-4.2.6p2
# cd ntp-4.2.6p2
# make distclean
# ./configure CFLAGS="-O2 -march=pentium3" \
--sysconfdir=/etc \
--localstatedir=/var \
--enable-all-clocks \
--enable-parse-clocks \
--enable-kernel-fll-bug \
--enable-linuxcaps \
--with-crypto

*CFLAGS="-O2 -march=pentium3" (CPU最適化オプション)
*--enable-linuxcaps (linuxでntpdの -u オプションを有効にする)
*該当しない場合は指定しない
*オプションは半角を入れて続けて記入した方が良い

# make
# make uninstall
# make install
# cd ..
# tar jcvf ntp-4.2.6p2-rt-100709.tar.bz2 ntp-4.2.6p2/

○step-tickersの作成

*起動スクリプトで読み込みます
*ntpdateで最初に時刻合わせをします

:/etc/ntp/step-tickers

# echo "130.69.251.23" >> /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
# ntp-keygen -M
# ls -l
ntpkey_md5_venus.528p.com -> ntpkey_MD5key_venus.528p.com.3469649758
ntpkey_MD5key_venus.528p.com.3469649758

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

# chmod 600 ntpkey*

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

 1 MD5 `ZKz:+~X;U%?IQ)Vx'aq  # MD5 key
 2 MD5 Dw6EuCwy{:Q`u0,P!4Oi  # MD5 key
 3 MD5 q7n)AZ0MME_vf{C9MbCr  # MD5 key
 4 MD5 g05u;v8R`9_3fvR%V,tb  # MD5 key
 5 MD5 f~yTcBIi*"`xMCNcL4bR  # MD5 key
 6 MD5 ,Ap6ySv_"{Y/AW9*&+,q  # MD5 key
 7 MD5 Sw{H,jSdV+W/XA*.orUR  # MD5 key
 8 MD5 :QjXuxHZH4y`MV=!`7t:  # MD5 key
 9 MD5 ?]D03m7T4k&a9Ybzw$T3  # MD5 key
10 MD5 |YgrnX.^\n48=p%;u?]A  # MD5 key
11 SHA1 c6b7e086d2d626b3c8ef3f8285eecfe5cfdc087e  # SHA1 key
12 SHA1 b81b1c1eca43388f37972e6298d2f53519665698  # SHA1 key
13 SHA1 6ebeadb7c9593c7efe87050ebb0d4355372cf420  # SHA1 key
14 SHA1 1e4b6f34b2c1cfcb783effe9f5c6c8c9c7b30f32  # SHA1 key
15 SHA1 0b0e69baf4db4e7d424ad462dc1db06575da9d67  # SHA1 key
16 SHA1 9af686894ae8de58b932a4f7f1f35353ccf9731f  # SHA1 key
17 SHA1 34307250865143b35dec61387cdbb47c951fbad2  # SHA1 key
18 SHA1 57f82a4073a986b0c98cd505884c99020ff0ec17  # SHA1 key
19 SHA1 68eb3054c542e944a94a539736541d20ed4dadfc  # SHA1 key
20 SHA1 cc0d2ac9881f06e913a1c9dc04dfc3e70eb5fcf1  # SHA1 key

○ntp.confの作成

*ローカルネットワークでの共通鍵認証を行います
紫色部分 鍵ファイルと "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 130.69.251.23 mask 255.255.255.255 nomodify notrap noquery
restrict 130.34.11.117 mask 255.255.255.255 nomodify notrap noquery

server 130.69.251.23
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/ntpkey_md5_venus.528p.com
trustedkey 10 20

:外部公開ntpサーバ例

*mfeedのntpはntptraceで情報を返さないので注意

ntp.nc.u-tokyo.ac.jp (130.69.251.23)  Stratum 1
ntp1.tohoku.ac.jp    (130.34.11.117)  Stratum 1
ntp2.tohoku.ac.jp    (130.34.48.32)   Stratum 1
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起動用スクリプトを作ります

/étc/rc.d/init.d/ntpd (別記)

○起動オプションの設定

:/etc/sysconfig/ntpd

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

○ntpdの起動

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

# service ntpd start
# chkconfig --add ntpd

*少し休憩!

# ntpq -p

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

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

:/etc/cron.weekly/sys2ohc (root root 755)

#!/bin/bash
/sbin/hwclock --systohc

○iptablesの設定

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

Netfilter (iptables) の設定参照

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

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

# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -Rv /var



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

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

*ntpサーバをハードウェア・クロックと同期させます
*1日1回、外部ntpサーバと同期させます

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の再起動

# 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.