2011年07月12日
syslog-ngでYAMAHAルータのパケットをダンプする
YAMAHA製ルータのパケットを少しだけダンプ(キャプチャ)したいと思ったらsyslogサーバが必要になるんですね・・・では手順をまとめてみましょうか。
今回はRT58iを使って、WAN(LAN2インタフェース)側のパケットをLAN(LAN1インタフェース)側に存在するSyslogサーバにダンプ手順を整理してみたいと思います。
今回はRT58iを使って、WAN(LAN2インタフェース)側のパケットをLAN(LAN1インタフェース)側に存在するSyslogサーバにダンプ手順を整理してみたいと思います。
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の略称なんですね。
インストールできたらloggerコマンドで動作確認。/var/log/syslogファイルにログが記録されていることを確認しましょう。
$ logger -p daemon.info syslog-ng has been successfully installed$ sudo tail /var/log/syslogJul 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 logsource 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 4missingoknotifemptyweeklycompressdelaycompress}
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>> administratorPassword:#
先ずは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.100Jul 12 16:00:13 192.168.100.1 Login succeeded for TELNET: 172.16.100.100Jul 12 16:00:15 192.168.100.1 'administrator' succeeded for TELNET: 172.16.100.100Jul 12 16:04:39 192.168.100.1 LAN2 IN:IP TCP 172.16.100.100:56380 > 172.16.100.1:23Jul 12 16:04:39 192.168.100.1 45 10 00 36 40 c7 40 00 40 06 dd 55 ac 10 62 64Jul 12 16:04:39 192.168.100.1 ac 10 62 10 dc 3c 00 17 db f4 25 6a ff e3 42 a3Jul 12 16:04:39 192.168.100.1 80 18 ff ff e4 73 00 00 01 01 08 0a 08 33 12 6cJul 12 16:04:39 192.168.100.1 00 95 2d 3c 0d 00Jul 12 16:04:39 192.168.100.1 LAN2 OUT:IP TCP 172.16.100.1:23 > 172.16.100.100:56380Jul 12 16:04:39 192.168.100.1 45 00 00 36 01 9f 00 00 ff 06 9d 8d ac 10 62 10Jul 12 16:04:39 192.168.100.1 ac 10 62 64 00 17 dc 3c ff e3 42 a3 db f4 25 6cJul 12 16:04:39 192.168.100.1 80 18 80 00 17 a6 00 00 01 01 08 0a 00 95 82 81Jul 12 16:04:39 192.168.100.1 08 33 09 e8 0d 0a
ルータ(192.168.100.1)から送信されたパケット・ダンプがログ出来ています。
端末が不得意な人はUbuntu/システム設定/ログ・ビューワで見ても良いですね。
これでパケットレベルでデバッグ出来ますね。
もし、syslogが出力されない場合にはUbuntu側でパケットをキャプチャして、ログ自体が届いているか確認してみましょう。
$ sudo tcpdump -i eth0 src 192.168.100.1tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes16:00:13.044983 IP 192.168.100.1.60005 > hoge.local.syslog: SYSLOG user.info, length: 4516:00:15.411481 IP 192.168.100.1.60005 > hoge.local.syslog: SYSLOG user.info, length: 5516:01:00.821823 IP 192.168.100.1.60005 > hoge.local.syslog: SYSLOG user.debug, length: 57
ヤマハルーター運用設定マニュアル RTX1200/ SRT100のGUI&コマンドラインの実践
posted with amazlet at 11.07.12
アスキー・メディアワークス
売り上げランキング: 123144