VLAN Trunkポートのキャプチャ

Trunkポートを流れるパケットのVLANタグをWiresharkでキャプチャしたい。と思ったときに思いのほか手順が多かったのでメモとして残す。

ざっくり手順

上記構成でパケットキャプチャの手順は次の通り。

  1. SW1にてキャプチャの設定
  2. キャプチャを行うPCで802.1qのタグを落とさないよう,キャプチャを取得するNICのドライバ設定
  3. Wiresharkで802.1qのタグをキャプチャ画面の列に表示するよう設定

通常のアクセスポートでキャプチャを行うだけであれば意識することなくできると思うが,VLAN Trunkポートにおいては各手順でいつもと違う設定が必要になる。

SW1でmonitor session 設定

通常のキャプチャであれば

monitor session 1 source interface Gi0/1
monitor session 1 destination interface Gi0/2

とシンプルに設定をすればよいが,デフォルトではタグ情報を外して宛先ポートへパケットが転送されるため「encapsulation」オプションで「replicate / dot1q」を指定する必要がある。カプセル化でISLを設定するケースはまず無いと思うので,このオプションはdot1qでTrunk設定しているならばどちらでも良いと思う。オプションの違いは,送信元IFと同じカプセル化・設定を指定する場合は「replicate」,dot1qの設定とするならば「dot1q」という感じ。(※ IOSの場合)

なお,受信パケットでにおいて特定のVLANを限定して取得したい場合は「ingress dot1q vlan」オプションでVLAN IDを指定する。

(任意)宛先インターフェイスで IEEE 802.1Q カプセル化方式の使用を指定するには、 encapsulation dot1q を入力します。
(任意)送信元インターフェイスのカプセル化方式が宛先インターフェイスで複製されるように指定するには、 encapsulation replicate を入力します。これを選択しない場合、デフォルトでは、パケットがネイティブ形式(タグなし)で送信されます。
宛先ポートでの着信トラフィックの転送をイネーブルにして、カプセル化タイプを指定するには、 ingress をキーワードと一緒に入力します。
– dot1q vlan vlan-id: デフォルトの VLAN として指定した VLAN で、IEEE 802.1Q でカプセル化された着信パケットを受信します。
– untagged vlan vlan-id または vlan vlan-id: デフォルトの VLAN として指定した VLAN で、タグなしでカプセル化された着信パケットを受信します。

cisco.com/c/ja_jp/td/docs/sw/lanswt-access/cat2960swt/cg/005/swcfg/swspan.html

よって次のような設定を入れる。

monitor session 1 source interface Gi0/1
monitor session 1 destination interface Gi0/2 encapsulation replicate  # dot1q でもOK

NICの設定

およそのNICはデフォルトでVLANタグを落とす設定になっているため,NICの詳細設定で「Packet Priority&VLAN」を「Disable」にする。※デフォルトでは「Enable」になっているはず

この設定ができない(VLANタグをそのまま受信できない)NICもあるようで,NICの対応状況は予めチェックが必要。今回利用したNICはStarTechのUSBタイプ。

Wiresharkの設定

Wiresharkのキャプチャ画面の項目(列)にはVLAN情報がデフォルトでは表示されないため,VLAN IDを表示させるため外観設定を変更する。パケットを選択すればVLANフィールドがあるので別に要らないという人はここはやらなくてもOK。ただぱっと見どのVLANか分かるので可視性はよい。

Wiresharkを立ち上げ,「編集」→「設定」で設定画面表示。

「+」ボタンを押してフィールドを追加し,フィールドに「vlan.id」を入力する。題名はお好きなように。ここでは「VLAN」とした。

これで準備完了。

キャプチャする

VLANが表示されて幸せになれる。

ちなみに,QinQを表示させたい場合は,Wiresharkで追加するフィールドに「ieee8021ad.id1」を入力する。

  1. Display Filter Reference: IEEE 802.1ad (https://www.wireshark.org/docs/dfref/i/ieee8021ad.html ↩︎