ネットワーク管理をする上でパケットキャプチャは必ず発生する作業です。基本的にはNagiosとCactiで大半は管理できるのですが、何が起きているのかわからない、といった状況ではパケットキャプチャが必要となります。
キャプチャを行うには同じコリジョンドメインにPCを接続すれば取得できます。ただ、こんなことを行っているところは皆無ではないかと思います。すべてのところでCatalyst上でSPANを有効として、特定ポート(主にアップリンク、ダウンリンク)のミラーリングを設定しミラー先のポートからトラフィックをキャプチャするのが普通のやりかただと思います。
Catalystで必要な設定は以下となります。sourceで指定しているのがキャプチャしたいポートでdestinationで指定しているのがキャプチャを実行する端末を接続するポートです。Gi1/0/1に流れているパケットをGi1/0/24にミラーリングするという意味です。Gi1/0/24にキャプチャを行なう端末を接続します。
(config)# monitor session 1 source interface Gi1/0/1 (config)# monitor session 1 destination Gi1/0/24 |
送信元インターフェイスがタグVLANを流している場合、タグ付きはタグ付きとしてモニタリングする場合は以下のように設定します。下記を設定しない場合はタグがないNativeVlanのみミラーリングされます。
(config)# monitor session 1 source interface Gi1/0/1 (config)# monitor session 1 destination Gi1/0/24 encapsulation replicate |
上記では物理インターフェイスを指定していますが、VLANを指定することも可能です。また、複数のsourceインターフェイスを指定することも可能です。下記ではVlan10に属するポートをGi1/0/24にミラーリングする例です。
(config)# monitor session 1 source vlan 10 (config)# monitor session 1 destination Gi1/0/24 |
複数のVlanを同時に指定可能です。下記はVlan1~3に属するポートをGi1/0/24にミラーリングする例です。
(config)# monitor session 1 source vlan 1-3 (config)# monitor session 1 destination Gi1/0/24 |
■Wireshark(キャプチャツール)
Catalystの設定は上記だけで完了ですが、パケットをキャプチャするツールが必要です。これはフリーで提供されているWiresharkというソフトウェアがあり、実績も豊富なのでおすすめです。
先にも書いたように大半の運用はNagiosとCactiでいけます。最終手段で必要なのがキャプチャツールでWiresharkというわけです。
私の中ではネットワーク運用管理で必要なツールがNagios、Cacti、Wiresharkの3つであり三種の神器となっています。
インストール手順は割愛します。インストール終了後にWiresharkを起動すると以下の画面が表示されます。
「Capture」から「Option」を選択します。
上側にNIC一覧が表示されます。この中で実際にCatalystに接続する物理NICのチェックボックスにチェックを入れます。さらにそのNICをダブルクリックすると以下の画面が表示されます。(最初、この画面の出し方がわからず小一時間ほど悩みました)
上記のCapture Filterに特定のIP、プロトコル等を限定するフィルタを指定することができます。一般的に送信元/送信先等を指定することはあってもプロトコルを限定することはあまりないように思います。何が起きているのわからないという状況にキャプチャを行なうわけですのであらゆる可能性が考えられるからです。
IPを限定するのも含めて以下、フィルタの指定方法です。
・IPアドレスの限定
host 192.168.0.1 <---- ホストを192.168.0.1に限定 ip src 192.168.0.1 <---- 送信元IPを192.168.0.1に限定 ip dst 192.168.0.1 <---- 送信元IPを192.168.0.1に限定 |
・プロトコルの限定
icmp <---- icmpに限定 tcp port 80 <---- tcp 80番に限定 tcp src port 80 <---- 送信元をtcp 80番に限定 tcp dst port 80 <---- 送信先をtcp 80番に限定 |
・IPとプロトコルの指定
ip src 192.168.0.1 and tcp dst port 80 <---- 送信元IPが192.168.0.1かつ宛先ポートがTCP/80 |
上記のようにキャプチャを行なう前段階であらかじめフィルタを指定することが可能なのですがとりあえず全てをキャプチャしてからフィルタすることも可能です。あらかじめフィルタを指定しておけばこういったことは特に必要ないのですが、何らかの事情で必要なこともあるかもしれませんので以下に紹介しておきます。
画面上部のFilterのところに入力する欄がありますのでここに入力します。書式は以下の通りです。
・IPアドレスの限定
ip.address == 192.168.0.1 <---- ホストを192.168.0.1に限定 ip.src == 192.168.0.1 <---- 送信元IPを192.168.0.1に限定 ip.dst == 192.168.0.1 <---- 送信先IPを192.168.0.1に限定 |
・プロトコルの限定
tcp.port == 80 <---- tcp 80番に限定 tcp.srcport == 80 <---- 送信元をtcp 80番に限定 tcp.dstport == 80 <---- 送信先をtcp 80番に限定 |
・IPとプロトコルの指定
ip.src == 192.168.0.1 and tcp.dstport == 80 <---- 送信元IPが192.168.0.1かつ宛先ポートがTCP/80 |
■Wiresharkの小技
非常に多機能なWiresharkですが、英語メニューであり全ての機能を使いこなせている人はごくわずかではと思います。(私もそうです)一部ですが、Wiresharkで知っておくと便利な技を紹介いたします。
・Follow TCP
特定のTCP通信のみピックアップできます。ピックアップしたい一部のキャプチャを右クリックし「Follow TCP Stream」を選択します。
上図の操作で小窓が開きヘッダが除去されたものが表示されます。また元画面では特定の通信のみ表示することができます。
・パケットの流量
内部から外部への通信は何も制限をかけていないというところが結構ありますが、そういった場合に内部でウィルス感染などが起きた場合特定端末が異常なトラフィックを流し始めるということがあり、これを特定するのにもWiresharkは役立ちます。
「Statisctics」-「Conversations」を選択するとセッション単位のパケットが表示されます。
列の部分をクリックすることで多い順、少ない順を並び変えることが可能です。