いますぐ実践! Linuxシステム管理

いますぐ実践! Linux システム管理 / Vol.215 / 読者数:2036名

こんばんは、うすだです。

我が家では、中3の息子の受験が佳境に入ってきました。

先日、私立の受験があり、即日開票かっていうスピードで、 合否の通知が送られてきました。

どかんっと落ちたところはなく、おおむねよかったのですが、第1志望の高校は、 普通科ではなく、科学技術科という専門的なところでした。
(つまり、半分落ちたような感じです。)

見学に行ってみたところ、私立だけに設備がよく、大学や企業とも連携をして、 いろいろ自由にやらせてもらえるという雰囲気があり、 息子の心にクリーンヒットしていました。

目先の楽しさをとるのか、将来を打算して偏差値の高さをとるのか、 理性や欲望が渦巻いている感じです。

しかし、公立高校の受験を決めるため、今日明日中に方針を決める必要があります。 親子3人の気持ちが揺れております。

ですが、人生の中で、どうしても決断しないといけないことは、たくさんあります。両方を選ぶことはできないため、選んだ方が最善かどうかは、判断のしようがありません。

結局、どちらを選んだかではなく、選んだ後、それに向かってがんばれたかどうか、 ではないかと最近は思っています。

というわけで、最終的には、本人の希望通りに提出しようと思います。

…と思ってはいるけど…ええい、今回もはりきってまいりますよ!

今回のお題 - NTPで時刻を合わせる

いまや、社員が数人しかいなくても、1台のサーバですべてを管理する、 という会社は皆無に近いのではないかと思います。
(すべて外に出しているというケースは、ここではさらっと割愛します。)

それら複数のサーバは、いずれも独立して動作している…というわけではなく、 関連して動作していることがほとんどです。

ですので、なにか問題が発生したとき、 関連するサーバのログを見比べて確認する必要にかられることが、 よくあります。
そんなとき、サーバの時間にずれがあると、 それぞれのログの前後関係がわからなくなってしまう恐れがあります。

そこで今回は、NTP(Network Time Protocol)を使用した時刻同期の手順について、 ご説明したいと思います。

NTP(Network Time Protocol)とは?

NTPとは、正しい時刻が設定されたサーバから情報を得て、 個々のマシンの時刻を正しい時刻に同期させるためのプロトコルです。

インターネットには、GPSや原子時計などを使って正確な時刻を設定している、 NTPに対応したサーバがいくつかあります。
一般大衆的なサーバは、それらから正確な時刻情報を得て、 時刻が進んでいる場合は時間の進める速度を落とし、 遅れている場合は早く進めることで、時刻を同期するよう調整します。

サーバからNTPで時刻情報を得る際は、UDPの123番ポートを使用します。
そのため、ファイアウォールなどを導入している場合は、通す設定をする必要があります。

また、NTPでは、stratumというピラミッド型の階層構造で時刻同期を行います。 ピラミッドの頂点に、 GPSや原子時計で時刻を設定する stratum 0 のサーバが君臨しています。 それらから情報を得たサーバが stratum 1、 さらにそれらから情報を得たサーバが stratum 2、…というように、 階層をたどるごとに1ずつ増えていきます。

とりあえずいるもの

UbuntuなどDebian系のディストリビューションは、 ntp, ntpdate および openntpd というパッケージをご用意ください。
FedoraなどRedHat系の場合は、ntp というパッケージをご用意ください。

  $ sudo apt-get install ntp ntpdate openntpd   (Debian系の場合)
  # yum instal ntp                              (RedHat系の場合)

ntpd が時刻同期を担います

Linuxでは、ntpd というデーモンが、上位のNTPサーバから情報を得て、 下位のNTPサーバからの要求に答えます。

ntpd の設定ファイルは、「/etc/ntp.conf」です。
いろいろな設定を記述できますが、まずは、上位のNTPサーバを設定するだけにとどめて、 時刻同期が行われることを確かめてみましょう。

参照するNTPサーバですが、 NICT(独立行政法人 情報通信研究機構)が公開しているものにしたいと思います。

日本標準時プロジェクト 公開NTP
http://www2.nict.go.jp/w/w114/tsp/PubNtp/index.html

ホスト名「ntp.nict.jp」を指定すると、 以下のように複数のアドレスが登録されているため、 うまい具合に分散される…という寸法です。

 $ host ntp.nict.jp
 ntp.nict.jp has address 133.243.238.243
 ntp.nict.jp has address 133.243.238.244
 ntp.nict.jp has address 133.243.238.163
 ntp.nict.jp has address 133.243.238.164
 ntp.nict.jp has IPv6 address 2001:df0:232:eea0::fff4
 ntp.nict.jp has IPv6 address 2001:df0:232:eea0::fff3

ですので、/etc/ntp.conf には、 以下のように「server」というコマンドと上位のNTPサーバ名を指定します。

server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp

書き終わったら、ntpd を起動します。
以下のように、ntp サービスもしくは ntpd サービスを起動します。
(すでに動いている場合は、start ではなく restart で再起動します。)

 $ sudo service ntp start    (Debian系の場合)
 # service ntpd start        (RedHat系の場合)

ntpq で確認します

時刻同期されているかどうかは、ntpq コマンドで確認します。
「-p」オプションをつけて実行すると、NTPサーバの一覧を表示します。

  $ ntpq -p
       remote       refid   st t when poll reach   delay   offset  jitter
  =======================================================================
  *ntp-b3.nict.go. .NICT.    1 u   57   64   37   11.037    2.340   2.178
  +ntp-b2.nict.go. .NICT.    1 u   58   64   37   11.219    4.045   2.797
   ntp-a3.nict.go. .NICT.    1 u   57   64   37    9.429    2.357   2.334

それぞれの項目の意味は、以下の通りです。

項目名概要
remote 上位のNTPサーバ。先頭の文字の意味は以下の通り。
*,o ... 参照・同期中のNTPサーバ。
+ ... いつでも参照可能なNTPサーバ。
# ... 参照可能だが遠いNTPサーバ。
-,x,. ... 参照しないことになったNTPサーバ。
refid 参照ID。
st stratum.
t 型。(l=local, u=unicast, m=multicast, b=broadcast)
when 最後のパケットを受信してからの経過秒。
poll ポーリング間隔。(秒)
reach 最近の8回の接続結果を8進数で表したもの。(377=すべて)
delay 通信による往復の時間の推測値。(ミリ秒)
offset NTPサーバとの時刻のずれ。(ミリ秒)
jitter 同期のタイミングのばらつき。(ミリ秒)

最初のうちは、remote の先頭に * や + がつきませんが、 そのうちつくようになります。refid や when, reach などを見て、 参照できているかどうか、判断してください。

他からの参照を拒否します

ところで、デフォルトでは、他のNTPサーバからの問合せには、 誰にでも答えるようになっています。これを、 特定のNTPサーバにしか返事しないようにするには、「restrict」を使います。
たとえば、以下の設定を加えると、ローカルホストからの問合せのみ返事を返します。
追記: デフォルトは許可なので、デフォルトを拒否にする ため restrict default ignore が必要です。

restrict default ignore
restrict 127.0.0.1
restrict ::1

192.168.1.0/24 (192.168.1.0〜192.168.1.255) を許可するには、 以下の設定を追加します。

restrict 192.168.1.0 netmask 255.255.255.0

許可されていないと、ntpq -p の実行結果を見ると、 refid が「.INIT.」や「0.0.0.0」と表示されます。

  $ ntpq -p
       remote       refid   st t when poll reach   delay   offset  jitter
  =======================================================================
   192.168.1.1     .INIT.   16 u    -   64   16    1.857   123456   5.351

おわりに

以上、NTPによる時刻同期のさわりだけをご紹介しました。

実は、インストールなどの際に、自動的に設定されたりしますので、 上記を自分で行う必要はほとんどないかもしれません。

ただ、会社内で閉じて使うなどの場合は、上記のような設定を自力で行う必要があります。

というわけで、詳細の設定については、次回にご紹介します。

宿題の答え

前回の宿題は、

  自分宛のメールで、MIMEマルチパートじゃなく、本文が5kB未満のもの
  だけを携帯メールに転送する設定をしてください。

でした。

すでに説明済ですので、いきなり .procmailrc を以下に示します。
(「携帯メールアドレス」には自分のアドレスをご記入ください。)

:0 H
* ! ^Content-Type: multipart
* < 5120
! 携帯メールアドレス

ヘッダに「Content-Type: multicast」が含まれず、 サイズが5120バイト未満のメールを携帯メールアドレスに転送します。

宿題には、本文が5kB未満の…と書きましたが、すみません、 本文だけを対象にすることはできないようです。
たとえば、以下のようにしてみても、本文のサイズが5kB未満で、 ヘッダを含めた全体のサイズが5kB以上の場合、転送されませんでした。

:0 H
* ! ^Content-Type: multipart
{
    :0 B
    * < 5120
    ! 携帯メールアドレス
}

もし、思ったように動作しないときは、.procmailrc の先頭に以下を追加して、 ログに吐かせてみましょう。
(LOGFILEに指定するパスは、お好きなようにしてください。)

LOGFILE=$HOME/maillog
VERBOSE=on

あと、蛇足ですが、.forward を以下のようにして、
(「ユーザ名」には自分のユーザ名をご記入ください。)

\ユーザ名,"| exec /usr/bin/procmail"

.procmailrc を以下のようにしておくと、条件に関係なく自分宛には必ず送信され、 条件に合ったものは携帯にも送信されます。

:0 H
* ! ^Content-Type: multipart
* < 5120
! 携帯メールアドレス

:0
/dev/null

今回の宿題

今回の宿題は、

  ファイアウォールでNTPを通さない設定にしたとき、ntp -q の出力結果
  がどうなるか確認しましょう。

です。

なんとなく想像がつきますが、 なんとなくではなく具体的にどうなるのかを詳細までイメージすることと、 実際に確認してみることが大事なのではないか、と思います。

ぜひ、自分の手で確かめてみてください。

あとがき

すったもんだの末、公立高校の志望校が決まりました。
当初とは異なりますが、将来のことをようやく真面目に考え、 結論を出すことができるようになった、とも言えます。

ギリギリにならないと真剣に考えられないという悪い習慣を、 どうすれば変えられるのか、自分のことも含めて考えねばと思っております。

…すみません、もうこんな時間ですので、 今日はこのくらいでおしまいにさせていただきたいと思います。

 

今回も、ここまで読んでいただき、たいへんありがとうございました。
次回は、3月4日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- ちょっと調子が上がってきたかも。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 5 をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューションや、Solaris10の例も充実しています。
Cyberam Documents Project
Linuxに関するTipsやLinuxコマンドリファレンス、Linuxによるサーバ構築や セキュリティ情報を記載しています。 また、Oracleなどのデータベース情報もあります。 なんと言いますか、ものすごい情報量に、圧倒されます。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
Ubuntu通信
Linux(主にUbuntu)と自作PCに関する投稿型情報サイトです。 最新のディストリビューションから役立つソフト、ゲームに至るまで、 私の知らない最新のソフトなどが紹介されています。
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本