2011年07月12日

syslog-ngでYAMAHAルータのパケットをダンプする

YAMAHA製ルータのパケットを少しだけダンプ(キャプチャ)したいと思ったらsyslogサーバが必要になるんですね・・・では手順をまとめてみましょうか。
今回はRT58iを使って、WAN(LAN2インタフェース)側のパケットをLAN(LAN1インタフェース)側に存在するSyslogサーバにダンプ手順を整理してみたいと思います。

43)

syslogサーバのインストールと設定


syslogサーバは手元にあったUbuntuで動かしますが、Netbook Editionなのでインストールから始めます。端末からapt-getコマンドかUbuntuソフトウェア・センターからインストールしましょう。

$ sudo apt-get install syslog-ng
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libdbi0 libevtlog0 libnet1
提案パッケージ:
  libdbd-mysql libdbd-pgsql libdbd-sqlite3
以下のパッケージは「削除」されます:
  rsyslog ubuntu-minimal
以下のパッケージが新たにインストールされます:
  libdbi0 libevtlog0 libnet1 syslog-ng
アップグレード: 0 個、新規インストール: 4 個、削除: 2 個、保留: 0 個。
330 kB のアーカイブを取得する必要があります。
この操作後に追加で 377 kB のディスク容量が消費されます。
続行しますか [Y/n]? y

ngってNext Generationの略称なんですね。

Screenshot3


インストールできたらloggerコマンドで動作確認。/var/log/syslogファイルにログが記録されていることを確認しましょう。

$ logger -p daemon.info syslog-ng has been successfully installed

$ sudo tail /var/log/syslog
Jul 12 18:46:07 hoge netbuffalo: syslog-ng has been successfully installed

動作確認できたらsyslogの設定をしましょう。/etc/syslog-ng/syslog-ng.confを開き、ファイルの末尾に次のような設定を追記します。

$ sudo gedit /etc/syslog-ng/syslog-ng.conf

# my router log
source s_router { udp(ip("0.0.0.0") port(514)); };
destination d_router { file("/var/log/router.log" perm(0644)); };
filter f_router { level(debug..emerg); };
log { source(s_router); filter(f_router); destination(d_router); };

source行では、全てのインタフェースでUDP514番ポート宛のデータを受信することを定義しています。
destination行では、ログ出力するファイルを定義します。パーミッションを644にしておくと、Ubuntu のログ・ビューワでも開けますね。
filter行では、受信するsyslogのレベルを指定しています。ヤマハ・ルータはダンプしたパケットをdebugレベルで送信するのでdebug以上を受信します。
ちなみに、filter行を

filter f_routerlog { host(192.168.100.1) and level(info..emerg); }; # 192.168.100.1 => router

と書くと、送信元IPアドレスがルータ(ここでは192.168.100.1)のログだけを/var/log/router.logに出力できます(試してないけど)。

設定ファイルを保存したらsyslog-ng -sで設定ファイルの書式のチェックを行い、問題なければサービスを再起動(restart)しましょう。

$ sudo syslog-ng -s

$ sudo /etc/init.d/syslog-ng restart
 * Stopping system logging syslog-ng
   ...done.
 * Starting system logging syslog-ng
   ...done.

もし、長期間ログを採取する場合にはログ・ローテーション設定ファイルに追加分のログ・ファイルを追記しておきます。

$ sudo gedit /etc/logrotate.d/syslog-ng
 
/var/log/router.log {
   rotate 4
   missingok
   notifempty
   weekly
   compress
   delaycompress
}


YAMAHAルータのsyslog設定とpacketdump


ルータにtelnetして管理者(administrator)にスイッチしましょう。

$ telnet 172.16.100.1(ルータIPアドレス)
Trying 172.16.100.1...
Connected to 172.16.100.1.
Escape character is '^]'.

Password:

RT58i BootROM Ver. 1.01
・・・
Memory 32Mbytes, 2LAN, 1BRI
>
> administrator
Password:

先ずはsyslogサーバ(Ubuntu)のIPアドレス(ここでは192.168.100.10)を設定。

# syslog host 192.168.100.10

続いてログ出力レベルの設定。

# syslog notice on
# syslog debug on
# syslog info on

NATの動作を調べたいので nat descriptorについてもログ出力します(出力されるメッセージはこちら)。

# nat descriptor log on

最後にパケット・ダンプの設定。今回はWAN側インタフェースであるlan2を100回分(パケット?)ダンプします。

# packetdump lan2 ?
    入力形式: packetdump lan2 [回数]
               回数 = 1-21474836, 'off' or 'infinity'
      説明: インタフェースのパケットをダンプします
デフォルト値: off
 
# packetdump lan2 100

適当なパケットをルータに送りつつ、syslogサーバのログを見てみると、、

$ sudo tail -f /var/log/router.log
 
Jul 12 15:56:25 192.168.100.1 Configuration saved in "CONFIG0"
Jul 12 15:56:28 192.168.100.1 Logout from TELNET: 172.16.100.100
Jul 12 16:00:13 192.168.100.1 Login succeeded for TELNET: 172.16.100.100
Jul 12 16:00:15 192.168.100.1 'administrator' succeeded for TELNET: 172.16.100.100
Jul 12 16:04:39 192.168.100.1 LAN2 IN:IP TCP 172.16.100.100:56380 > 172.16.100.1:23
Jul 12 16:04:39 192.168.100.1 45 10 00 36 40 c7 40 00  40 06 dd 55 ac 10 62 64
Jul 12 16:04:39 192.168.100.1 ac 10 62 10 dc 3c 00 17  db f4 25 6a ff e3 42 a3
Jul 12 16:04:39 192.168.100.1 80 18 ff ff e4 73 00 00  01 01 08 0a 08 33 12 6c
Jul 12 16:04:39 192.168.100.1 00 95 2d 3c 0d 00
Jul 12 16:04:39 192.168.100.1 LAN2 OUT:IP TCP 172.16.100.1:23 > 172.16.100.100:56380
Jul 12 16:04:39 192.168.100.1 45 00 00 36 01 9f 00 00  ff 06 9d 8d ac 10 62 10
Jul 12 16:04:39 192.168.100.1 ac 10 62 64 00 17 dc 3c  ff e3 42 a3 db f4 25 6c
Jul 12 16:04:39 192.168.100.1 80 18 80 00 17 a6 00 00  01 01 08 0a 00 95 82 81
Jul 12 16:04:39 192.168.100.1 08 33 09 e8 0d 0a

ルータ(192.168.100.1)から送信されたパケット・ダンプがログ出来ています。

端末が不得意な人はUbuntu/システム設定/ログ・ビューワで見ても良いですね。


Screenshot-1


BlogPaint

これでパケットレベルでデバッグ出来ますね。

もし、syslogが出力されない場合にはUbuntu側でパケットをキャプチャして、ログ自体が届いているか確認してみましょう。

$ sudo tcpdump -i eth0 src 192.168.100.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:00:13.044983 IP 192.168.100.1.60005 > hoge.local.syslog: SYSLOG user.info, length: 45
16:00:15.411481 IP 192.168.100.1.60005 > hoge.local.syslog: SYSLOG user.info, length: 55
16:01:00.821823 IP 192.168.100.1.60005 > hoge.local.syslog: SYSLOG user.debug, length: 57




Ubuntu上級活用マニュアル
阿久津 良和 
技術評論社 
売り上げランキング: 40169


ヤマハルーター運用設定マニュアル RTX1200/ SRT100のGUI&コマンドラインの実践

アスキー・メディアワークス 
売り上げランキング: 123144

Posted by netbuffalo at 18:48│TrackBack(0) ネットワーク | Linux


この記事へのトラックバックURL