Last-Modified: 2003/02/20 15:55

NetworkingTips

ネットワーク監視の便利な設定

ネットワークを安定して運用するためには,ホストや機器類の運用状況を日常的に監視し,トラブルが発生しそうな兆候をとらえたら即座に対処する,という体制がかかせません。この節では複数のホストの運用状況を同時に監視する場合に便利な設定を紹介します。

ホストの時刻を合わせる

ネットワークを管理する際には,正確な時刻情報が重要となることが多々あります。
先述のcronにしてもホストの時計を元に稼動しますし,Kerberosなど時刻情報を認証に用いるものもあります。複数のホストがそれぞれ勝手な時間を刻んでいては混乱の元になることは想像に難くないでしょう。ところが現在のPCに内蔵されている時計はあまり精密なものではありません。放っておくとひと月で1分以上狂ってしまうこともしばしばあります。

複数のホストの時刻を正確に合わせるためには,RFC1305で規定されるNTP(Network Time Protocol)を用いるのが一般的な方法です。NTPは,時刻情報を取得する際に通信経路で発生する遅延を測定するで高い精度での時刻の同期ができるようになっており,図13のように,原子時計,GPSなどから正確な時刻情報を得てそれを配布するホスト(Stratum1サーバ),Stratum1サーバと同期し時刻情報を配布するStrutum2サーバ, Strutum2サーバに同期するStrutum3サーバ…,という階層構造を持つことで,特定のホストに時刻同期のリクエストが集中しないように設計されています。

NTPサーバの階層構造

図13 ntpサーバの階層構造

LANでは,ISPがNTPサーバを用意している場合にはそこと,なければ表4に示す国内の公開NTPサーバと同期したNTPサーバを1台用意して,残りのホストはntpdateコマンドで1日に数回程度,用意したサーバと時刻を同期するようにすれば良いでしょう。ファイアウォールの関係などで外部のNTPサーバと通信できない場合には,安価なGPSユニットを用などして,自前でStratum1サーバを構築することも可能です。

表4 日本国内の公開NTPサーバ
ホスト名 Stream
clock.nc.fukuoka-u.ac.jp Stream1
clock.tl.fukuoka-u.ac.jp Stream1
ntp.cyber-fleet.net Straum2
ntp1.jst.mfeed.ad.jp Straum2
ntp2.jst.mfeed.ad.jp Straum2
ntp3.jst.mfeed.ad.jp Straum2

NTPデーモンntpdやntpdateなどNTP関連ツールは,たいていのOSの配布パッケージか追加パッケージに含まれています。ソースコードが必要な場合にはhttp://www.eecis.udel.edu/.ntp/より入手してください。

リスト5にntpdの設定ファイルntp.confのサンプルを,図14にNTPクライアントntpdateの実行例を示します。

server	ntp1.jst.mfeed.ad.jp   #<- 同期するサーバの指定
server	ntp2.jst.mfeed.ad.jp
server	ntp3.jst.mfeed.ad.jp
server  127.127.1.0            #<- どのサーバとも同期できなかったら
                               #      内蔵クロックを使用する
fudge   127.127.1.0 stratum 10 #<- 内蔵クロックの優先順位を下げる
                               #      ためstratum10とする

driftfile /var/ntp/drift #<- driftファイルを/var/ntp/driftとして
                         #      作成する

リスト5 ntp.confの例

# ntpdate ntpserver
 8 Dec 10:25:22 ntpdate[25727]: step time server 192.168.0.1
offset 30.981451 sec

図14 ホストntpserverをNTPサーバとしてntpdateを実行する例

なお,リスト5に出てくる127.127.t.u(t:クロックタイプを表す整数, u:クロックタイプ固有の番号)というアドレスは,参照時間アドレスと呼ばれる時間を取得するデバイスを指定するためのNTP独自の表現で,127.127.1.0を指定すると内蔵クロックから時間を取得することになります。

ログ/管理者宛メールを1ヵ所に集中

あちこちに散らばるホストのログや管理者宛メールを読むために,いちいちそのホストにログインするのはわずらわしいものです。ログや管理者宛メールは1ヵ所でまとめて読めるようにしてしまいましょう。

ログをほかのホストに転送する

ログ記録デーモンsyslogdにはログをほかのホストに転送する機能があり,たとえばリスト6のような内容を/etc/syslog.confに追加してsyslogdを再起動することで,すべてのログがloghostに渡されるようになります。

*.*		 @loghost

リスト6 全てのログをloghostに転送する例

syslog.confは
ファシリティ.ログレベル [TAB] 出力先
という書式で記述し,とくに出力先に「@ホスト名」と指定した場合,ホスト名で指定したホストのsyslogdにログが転送されます。

ファシリティ,ログレベルにはそれぞれ出力したいログの種類およびログの重要度を指定します。ログがうるさく感じる場合には,ファシリティおよびログレベルを適度に調整すれば良いでしょう。表5に,Linuxのsyslogで指定可能なファシリティおよびログレベルを示します。

表5 ログのファシリティおよびレベル(Linuxの場合)
ファシリティ 用途
AUTH セキュリティおよび認証関係
AUTHPRIV セキュリティおよび認証関係
CRON cronおよびatコマンドのログ
DAEMON その他デーモンのログ
KERN カーネルメッセージ
LOCAL0〜7 予約
LPR LPR
MAIL メール関係
NEWS ニュース関係
SYSLOG syslog
USER ユーザレベルメッセージ
UUCP UUCP関係
ログレベル 重要度 用途
EMERG 最高 システム障害
ALERT   警報
CRIT   致命的な障害
ERR   一般的なエラー
WARNING   動作に支障が無い程度のエラー
NOTICE   通常のメッセージ
INFO   付加的なメッセージ
DEBUG 最低 デバッグ用メッセージ
注意 ログレベルに指定した重要度以上のメッセージが記録される

なお,Linuxのsyslogdはデフォルトではリモートからのsyslogを受け取りません。ログを受け取るホストがLinuxの場合には,ネットワーク経由でsyslogを受け取れるよう,syslogdの起動時に-rオプションを指定しておく必要があります。

メールをほかのホストに転送する

転送元ホスト,転送先ホスト共にsendmailなどのsmtpdが稼動している場合には,リスト7のように転送元のホストの/etc/aliasesを設定することでメールの転送で簡単に行うことができます。

postmaster:     root
root:           foo@loghost

リスト7 管理者宛のメールをfoo@loghost宛に転送する例

どちらかのホストでsmtpdが稼動しておらず,かつ適当なsmtpdをインストールすることもできない事情がある場合には,少々乱暴な方法になりますが,メール転送元ホストでprocmailを用い,リスト8のような設定を用いてメールをMaildir形式でスプールし,そのスプールをrsyncで同期するという手段が考えられます。

DEFAULT=$HOME/Maildir/

リスト8 Maildirにメールを格納するための.procmailrcの内容

また,メールの転送元ホスト,転送先ホスト共にprocmailを使用する場合には,スプールディレクトリをNFSで共有することも可能です。

ホストの状態を1ヵ所で監視する

現在動いているプロセスの数やCPUの負荷,メモリ使用率など,ログだけでは監視しきれないようなホストのさまざまな状態をリモートから取得,管理したい場合もあると思います。

そういった場合には,監視したいホストにNET-SNMPなどのSNMP(Simple Network Management Protocol)エージェントを導入し,監視するホスト側ではMRTGGxSNMPhp OpenView network node managerなどの適当なNMSマネージャを用いることを検討してみると良いでしょう。

SNMPはネットワークの構成管理作業を共通のインターフェースで行うためにRFC1157などで定められたプロトコルであり,ホストのみならずルータやスイッチングHUBなど数多くのネットワーク機器がこれに対応しています。

SNMPを使いこなすには,MIB(Management Information Base)についてある程度の知識が必要となり,若干敷居が高く感じられるかもしれません。小規模なLANではあまり必要性を感じないかもしれませんが,ネットワークが大きくなり,監視対象としたい機器類が増えるにつれ,SNMPは欠かすことのできない技術となってきます。ネットワークの状態が把握しきれなくなる前に,一度SNMPによる構成管理を試してみてはいかがでしょうか。

1) SoftwareDesign 2003年2月号 pp.14-30, 「ネットワーク管理者必携! ネットワークの基本ワザ」より一部加筆の上,転載