WindowsNTで、フリーのネットワークアナライザ(ethereal)を使おう  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ver 0.4 2002/01/31 ver 0.3 2001/10/17 ver 0.2 2001/09/23 ver 0.1 2001/07/17 ver 0.0 2000/06/03 江端智一 E-mail:See http://www.kobore.net/mailAddress.gif  言うまでもありませんが、本文章は 無保証です。この文章の影響によりどの ような事が起ころうとも当方は一切の責任を持ちません。 0.変更履歴  ̄ ̄ ̄ ̄ ̄ ver 0.4 2002/01/31 Decodeの使い方に関する記述を追加。 ver 0.3 2001/10/17 インストール方法の変更に応じて記載変更。 ver 0.2 2001/09/23 フィルタに関する記述を、さらに追加 ver 0.1 2001/07/17 フィルタに関する記述を追加 ver 0.0 2000/06/03   初版 1.目的  ̄ ̄ ̄ 例えば・・・・ (その1) 製品の次期バージョンを作るために、外国の会社まで乗り込んだのに、いざ コーディングを始めようとしたところ、その製品の通信ドライバを作った外注 メーカは既に撤収済み。 加えて、その会社が、ドライバ仕様書は勿論、通信プロトコルに関して、メモ 一枚残していなかった。 (その2) ある翻訳サーバのクライアントを作ろうとして、クライアントのコードを作 った。プロトコル仕様書の内容が分かり難く、それでもなんとか実装して、サー バと通信してみたところ、サーバがエラー応答を返すどころか、事もあろうに ダウンしてしまった。 (その3) プロトコルアナライザは一般的に高価だし、外国に輸入することを加味する と、入手までに一月以上かかるかもしれない。製品が製品だけ(後述)に、輸 入規制にひっかかるかもしれないし、申請書類の作成で時間をつぶされるのは たまらん。 このような状況の中、私は、その外注メーカとプロトコル仕様書作成者に悪 態の限りを尽くし、外国で仕事をせねばならない我が身を呪い、レスポンスの 悪い色々なオフィスの対応に憤りつつも、しかし、それでも、問題を解決する 最初の一歩を探す必要があったのです。 2.What's "Ethereal"?  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 題目にも書いてあるとおり、フリーのネットワークアナライザです。 ネットワークアナライザとは、簡単に言うとネットワークを流れているデー タを読み取り、その内容を調べるものです。 利用目的としては、ネットワークに流れているデータの中をみて、プログラ ムのデバッグをしたり、ネットワークの障害状態を調べたり等が挙げられます が、その気になれば(その気にならなくても)暗号化していないメールやログ インパスワードも丸見えの状態で見えてしまいます。 勿論、ある程度、ネットワークプロトコルの知識が必要になりますが、プロ トコルアナライザを使えば、誰かのメールを覗き見るなんぞ『朝飯前』です。 特にインターネットでは、「メールは見られるもの」と考えるか、「見られ るのが嫌なら必ず暗号化するもの」と考える方がいいです。 閑話休題。 ----- EtherealのGUI画面には、取得したパケットの取得日時、送信元、送信先、 プロトコル、その他の説明が表示されます。フィルタ機能があって、必要なパ ケットだけを取り込むこともできます。 表示されているパケットをクリックすると、そのパケットに関する詳細な情 報(ヘッダ部、データ部など)が表示されます。一般的なプロトコルが使用さ れていれば、そのプロトコルにマッチした情報が表示されます。 Ethereal が対応しているプロトコルは、以下の通り。 AARP, AFS, AH, ARP,ASCEND, ATM, AUTO_RP, BGP, BOOTP, BOOTPARAMS, BROWSER, CDP, CGMP, CLNP,COTP, DATA, DDP, DHIS, DNS, EIGRP, ESP, ETH, EX25, FDDI, FRAME, FTP, GIOP, GRE, H1,HSRP, HTTP, ICMP, ICMPV6, ICP, ICQ, IGMP, ILMI, IMAP, IP, IPCOMP, IPP, IPV6, IPX, IPXMSG, IPXRIP, IPXSAP, IRC, ISAKMP, ISIS, ISIS-CSNP, ISIS-LSP, ISIS-PSNP, ISIS_HELLO, ISL, L2TP, LANE, LANMAN, LAPB, LAPD, LDAP, LLC, LPD, MAILSLOT, MAPI, MOUNT, MP, MPLS, NBDGM, NBIPX, NBNS, NBP, NBSS, NCP, NETBIOS, NETLOGON, NFS, NLM, NNTP, NTP, NULL, OSPF, PIM, POP, PORTMAP, PPP, Q2931, Q931, RADIUS, RIP, RIPNG, RPC, RSVP, RTMP, RTSP, RX, SAP, SDP, SMB, SNA, SNMP, SPX, SRVLOC, SSCOP, STAT, STP, TACACS, TCP, TELNET, TEXT, TFTP, TIME, TNS, TR, TRMAC, UDP, V120, VLAN, VRRP, VTP, WCCP, WHO, X25, YHOO, YPBIND, YPSERV, YPXFR, COPS うーん、凄いな。 私は、IP,UDP,TCPもあれば十分なのですが。 いつの間にか、COPSも対応しているし。 記載されていないプロトコルにも対応していたりします(DHCPが読めました)。 3. My environment  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 私のPC環境は下記の通り。 ・IBM-PC互換機 x86 Family Model5 Stepping9 AT/AT COMPATIBLE 130,848KB RAM ・OS WindowsNT4.0 SP ・Ethernet Card DEC PCI Ethernet DECchip 21041 まあ、この辺のスペックはほとんど関係ないでしょう。 構築方針 動けばいい、ということで。 なお、Etherealは、日本語WindowsNT SP3, 英語WindowsNT SP5の両方で動作 を確認しております。 4. Etherealのインストール  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ まず、バイナリの落し先ですが、取りあえず一個所に集中させておくといい でしょう。動作を確認してから、適当な場所に移動させればいいでしょう。 取りあえず、私の場合は、 c:\bin\ethereal あたりにほうり込んで置くことにします。 (Step.1) http://netgroup-serv.polito.it/winpcap/install/Default.htm から、"WinPcap auto-installer (driver+DLLs)"をクリックして、 "WinPcap.exe"をダウンロードし、実行して下さい。 パケットキャプチャライブラリが、直ちにインストールされます 。 (Step.2) 次に、ethereal本体を取りに行きます。 http://ethereal.zing.org/ に行って、Etherealの内容を ざっと読んで、Download(http://ethereal.zing.org/download.html) を選びますと、 Windows 98/NT local archive なるところがありますので、これをクリックして、 ethereal-setup-0.X.XX.exe を、c:\bin\etherealにダウンロードし て下さい。 ("X"はバージョンによって異なります。) あとは、このexeを叩くと、自動的にインストールが完了し、 c:\bin\etherealの中にあるethereal.exeを起動すると、GUI画面が出 てきて、起動するはずです。 5. Etherealの使い方  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ パケットのキャプチャをするだけなら、そんなに難しくありません。適当に GUI画面を触っていれば理解できると思います。 6. その他  ̄ ̄ ̄ ̄ ̄ 自宅のLANでモニタリングしていたとき、パケットの表示に5分以上かかる ので、変だなと思っていたのですが、どうやらEtherealが名前解決をしようと して時間がかかっていたようでした。DNSなどを有効にしていない場合などは、 Etherealの名前解決を外すように設定することで対処できます。 7. フィルタリング  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ネットワークには、無数の雑多なパケットが飛び回っていますが、Ethereal は、その中から必要なパケットだけを取り出すことができます。 このフィルタリングには、2つの方法があります。 (1)Display Filters (Edit -> Display Filters) これは、まずキャプチャし終ったパケットの中から、必要なパケットを取り 出すフィルタです。 記述例は、以下の通り。 ip.addr eq 15.2.114.196 and ip.addr eq 15.2.115.142 (2)Capture Filter(Edit -> Capture Filters) これは、パケットキャプチャの段階で、必要なパケットだけを取りこみます。 記述例は、以下の通り。 (port 23) and (ip proto TCP) and (host zen2.cnd.hp.com) "and"は小文字、"TCP"は大文字である必要があります。 また、記述を間違えて、"Parse Error"となると、次に正しく記述しても動 作せず、Etherealの再立ち上げが必要な場合もあるようです。 キャプチャフィルタは、以下のように連結した(and/or)の連続の表現から成 ります。 [not] primitive [and|or [not] primitive ...] (例2) 特定ホストのtelnetのトラフィックをキャプチャ tcp port 23 and host 10.0.0.5 (例3) 特定ホスト*以外*のtelnetのトラフィックをキャプチャ tcp port 23 and not host 10.0.0.5 ○[src|dst] host この表記は、ホストIPアドレスあるいはホスト名でのフィルタを行い ます。[src|dst]で方向指定可。指定しなければ、両方向。 ○ether [src|dst] host この表記は、イーサネットのホストアドレスでのフィルタを行います。 [src|dst]で方向指定可。指定しなければ、両方向。 ○gateway host ゲートウェイとして使用されているホストのパケットをキャプチャし ます。 ○[src|dst] net [{mask }|{len }] ネットワーク番号でキャプチャします。netmaskかCIDRプレフィック スを指定することも可。 ○[tcp|udp] [src|dst] port TCPとUDPポート番号でキャプチャします。 [src|dst]で方向指定可。指定しなければ、両方向。 ○less|greater パケットの長さでキャプチャします。 ○ip|ether proto イーサネット・レイヤーかIPレイヤーで指定されたプロトコルでキャ プチャします。 ○ether|ip broadcast|multicast イーサネット,IPブロードキャスト,マルチキャストでキャプチャしま す。 ○ relop 上記の記述は、パケットでバイトのバイトまたは範囲を選ぶ複合フィ ルタでキャプチャします。詳細はtcpdumpマニュアル・ページを見て ください。 8. デコード  ̄ ̄ ̄ ̄ ̄ ̄ Etherealはデフォルトで、IPパケットの中のWell-knownポート番号から、プ ロトコルを自動判別して、メッセージの内容を表示してくれます。 例えば、同じUDPパケットであっても、DHCPとNTPでは表示の内容を切り替え てくれます。 ところが、このようなパケットの種類の番号は、固定されているので、ポー ト番号を意図的に(例えば、実験的に)変更した場合などでは、期待される表示 はされません。 ところが、Etherealでは、デコード機能を使って、ポート番号の異なるパケッ トを、ある別のプロトコルのメッセージとして表示することが可能です。 例えば、通常COPSのポート番号は3101ですが、これを3288に変更したパケッ トも、COPSのメッセージとして表示できます。 まず、該当のTCPパケットをアクティブにしておいて、[Tools] -> [Decode As] から、Transport タブのリストから、"COPS"を選んで下さい。ポート番号 3288のTCPパケットが、全てCOPSパケットとしてデコードされます。 必要に応じて、Transportタブ の "source", "destination","both" を選択 して下さい。 9. 最後に  ̄ ̄ ̄ ̄ ̄ ネットワークアナライザとして、私は、日本では東洋テクニカが提供してい る、Sniffer Basicを愛用してきました。特に、GUIが気に入っていました。 「丸」でネットワークに参入しているノードと、ネットワークの利用状態を 表示するビューは、複雑なネットワークを一目で視覚化する方式としては単純 明快で、この発想を思い付いたエンジニアに、金一封送りたいくらいです。 値段が20万円近くするので、個人での購入は到底出来ないのが難ですが。 Etherealの魅力は、フリーであることは言うまでもありませんが、BPF(バー クレイパケットフィルタリング)によるパケットキャプチャリングのライブラ リが、各種OSに移植されており、併せてEtherealもほとんどのOSに移植が完了 していると言う点にあります。 すなわち、どんなマシンでも同じGUIで動く(のだろうと思う)。 後は、性能の問題だけです。 『ソフトのパケットアナライザは、パケットロスが多くて』という話をよく 聞きます。 しかし2年前に、私がネットワークの過負荷テストを行ったとき、少なくと もSniffer Basicに関しては、10BaseT上で、最大ノード数11台、ネットワー ク使用率99%の状況で、「パケットロス無し」と言う結果を得たことがあり ます。 #まあ、10/100Baseのカードを使っていたからかもしれませんが。 個人的に、Etherealで(と言うよりは、NT/98用のBPFで)どの程度の性能が 得られるのか興味がありますので、また、何か分かりましたら、ご報告いたし ます。 10. 追記  ̄ ̄ ̄ ̄ このEtherealですが、なんと、東洋テクニカのSnifferのログデータが読め ます。 [File] -> [Open] から強行して見て下さい。 ((((( Tomoichi Ebata Tel:970-898-7792 Fax:970-898-0664 E-mail ebata@cnd.hp.com )))))