ヤマハルータでログを取得する(syslog機能)公開

ネットワーク構築後、通信が正常に行えないという場合にどこに原因があるのかを探すため、ログを調査することがあります。
ここでは、ログを取得するための設定を説明します。
当方の環境は YAMAHA RTX1000 を例にとって手順を説明していますが、RT57i , RT58i , RTX1100 , RTX1200 , RTX810 , RTX1210 でも設定は同じだと思います。

残したいログを選択する

ログはshow log コマンドで閲覧ができます。

# show log
2004/09/11 21:15:09: [INSPECT] LAN2[out][xxxx] TCP xx.xx.xx.xx:1808 
 > xx.xx.xx.xx:80 (2004/09/11 21:15:04)
2004/09/11 21:15:09: [INSPECT] LAN2[out][xxxx] TCP xx.xx.xx.xx:1809 
 > xx.xx.xx.xx:80 (2004/09/11 21:15:04)

表示できるログの種類は以下の3種類あります。

ログのタイプ説明
NOTICEパケットフィルタリングで、落としたパケットの情報
INFO通常の情報
DEBUG障害解析などの為に、ISDNやPPPのデバッグ情報

があり、RTX1000ではデフォルトでINFOのみ有効になっています。
ログのタイプの追加は以下の通りです。

【書式】
syslog notice on/off
syslog info on/off
syslog debug on/off

個人的には問題となるのは自分で設定したフィルタルールによる意図せぬ動きだと思いますのでNOTICEタイプのログは残した方がよいかと思います。また、ログの量は多くなりますがDEBUGタイプも残してもよいと思います。

# syslog notice on
# syslog debug on

NOTICEタイプを有効にすることでフィルタルールのログが残るようになります。
passのルールではデフォルトではログが残りませんので必要に応じて

ip filter 100099 pass-log * * * * *

に変更してログを残してもよいかも知れません。
ここでは、フィルタ設定については説明しませんので詳しくは ヤマハルータの基本的なフィルタ設定 を参照下さい。

ログをsyslogサーバで受け取る(Linux)

RTX1000で、show log として表示できるログは500行分のみでこれでは調査したいログを全てみることができまん。
そこで、YAMAHAルータのログをLinuxサーバへ転送する方法を説明します。

ここでは以下の構成として説明します。

    インターネット
          |
     LAN2 | 61.YY.YY.YY
     +---------+
     | RTX1000 | 
     +---------+
     LAN1 | .1
          |      192.168.1.0/24
-------+--+------------------
       |
       | .100
 +------------+
 |syslogサーバ|
 |    Linux   |
 +------------+

(1) ヤマハルータの設定
まず、syslogを受け取るサーバ(Linux)のIPアドレスを設定します。

# syslog host 192.168.1.100

SYSLOGファシリティを設定します。デフォルトでは user となっていますが user は既にLinux上では利用されていたりと面倒ですので local0 ~ local7 で定義します。
【書式】
syslog facility user/local0..local7

※今回はlocal7を選択しました。

# syslog facility local7

(2) Linuxサーバの設定
まず、local7のファシリティで送り出されるログを別ファイルとして保存するように設定します。
設定は /etc/syslog.conf を編集します。最後に以下の記述を追加すればOKです。

local7.*                                 /var/log/rtx.log

この設定は /var/log/rtx.log に残るという意味です。
/var/log/rtx.log は存在しませんので空ファイルを用意しましょう。

# touch /var/log/rtx.log

続いてLinux標準のsyslogはサーバはデフォルトでは外部から受けることが出来ません。
syslogの起動オプションに -r を追加して起動するようにします。
起動スクリプトの /etc/rc.d/init.d/syslog を編集します。

daemon syslogd -r -m 0

変更後、syslogサーバを再起動します。

# /etc/rc.d/init.d/syslog restart 

これでログが /var/log/rtx.log に残るようになりました。
ログの残る制限もありませんし便利ですよね?

しかし、実は /var/log/messages にも同じログが残ってしまいます。
これでは、かっこわるいので /etc/syslog.conf を再度編集します。

*.info;mail.none;authpriv.none;local7.none        /var/log/messages

これでlocal7.noneは除外されます。もちろんsyslogサーバの再起動を行って下さい。

かなり、Linuxよりの話になりますが、syslog経由のログになりますのでログのローテーションにも追加しましょう。
追加場所は /etc/logrotate.d/syslog です。

/var/log/rtx.log {
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}

これでログはsyslogのローテーションと一緒になります。(^^;

かなり、Linuxよりの話になりましたがログの取得方法についての説明はこれで終わりです。

marronおすすめの参考書 by Amazon
ヤマハルーター運用設定マニュアル ヤマハルーター運用設定マニュアル RTX1200/ SRT100のGUI&コマンドラインの実践
住商情報システム株式会社 協力 (監修), ネットワークマガジン編集部 (編集)
ヤマハルータコマンドリファレンス ヤマハルータコマンドリファレンス
毎日コミュニケーションズ / 井上 孝司
¥ 2,940
ヤマハルータでつくるインターネットVPN ヤマハルータでつくるインターネットVPN
毎日コミュニケーションズ / 井上 孝司
ヤマハルータでつくるインターネットVPN ヤマハルータでつくるインターネットVPN
毎日コミュニケーションズ / 井上 孝司

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.