ひよっこエンジニアの備忘録

日常とかSEとしての備忘を書いていきます。

SPAN(Switched Port ANalyzer)

[SPANとは]

パケットキャプチャを行う際にCatalystスイッチに実装するミラーリング機能のことです。
Catalystではポート上またはVLAN上を流れるトラフィックを、SPANを利用することにより
Wiresharkが入ったPCに接続しているポートに、トラフィック(パケット)のコピーを送信できる。
※STP(SpanningTreeProtocol)と雰囲気似ているが別のプロトコルなので注意。

▼SPAN用語

・送信元ポート      パケットキャプチャの対象となるポート。VLANを送信元とすることも可能。
・宛先ポート      ネットワークアナライザを接続するポート。SPAN専用ポートにする必要がある。
・NWアナライザ WireSharkSnifferなどのパケットキャプチャソフトがインストールされたPC。

パケットのコピーを送信するだけなのでコンフィグ設定を間違えない限り、SPANの設定が
既存通信に影響を与えることはない。(宛先ポートの指定先があっている前提だが)
#PCにアドレスをいようがなかろうが問題ない(コンソール接続を想像すればいいかも)

この宛先ポートはSPAN専用ポートにする必要がある。SPAN専用ポートではSPANセッションの
トラフィック以外を受信したり送信したりすることはない。
送信元にVLANを指定することもできるが、VLANと物理ポートの双方を設定することはできない。

簡単に図を作ってみたがこんなイメージ
f:id:nrlay00:20170109004829p:plain

PC1..SPAN送信元の入力部分(モニタ対象)
PC2..SPAN送信元の出力部分(モニタ対象)
PC3..SPAN宛先(モニタポート)


SPANには大きく分けて以下2種類がある。
・ローカルSPAN
 →単一スイッチ上の送信元/宛先ポートをサポート
・リモートSPAN(RSPAN)
 →複数スイッチを介した送信元/宛先ポートをサポート
※ちなみに上図はローカルSPAN

[リモートSPAN(RSPAN)概要]

RSPANは複数スイッチ上で行うSPANのこと。RSPANで指定する送信元ポート or 送信元VLAN、
宛先ポートはNW上の複数のスイッチにまたがることが可能。

RSPANではRSPAN用のVLANを存在させる必要があり、RSPANを行う全てのスイッチ上で
RSPAN用VLANを作成する必要がある。(なおRSPAN VLANはトランクポートで伝達する必要あり)


f:id:nrlay00:20170109021646p:plain

[SPAN設定]

ローカルSPAN設定

新しくSPANセッションを作成するためには下記を指定する。
・送信元ポート/VLAN(モニターされる側)
・宛先ポート(モニターする側)
※既存のSPAN設定が存在する場合は、no monitor sessionによって既存SPAN設定を削除しなければならない。 

◆ 送信元ポート・送信元VLAN - monitor sessionコマンド

(config)# monitor session number source [ interface id | vlan id ] [ , | - ] [ both | rx | tx ]

number    :SPANセッションのセッション番号。1 ~ 66 まで指定することができる。
interface id :モニターする対象となるポート番号。
vlan id    :モニターする対象となるVLAN番号( interface を指定した場合は vlan は指定しない )
both    :送受信トラフィックをモニターする ( デフォルトの設定 )
rx    :あるいは、受信トラフィックのみをモニターする。
tx    :あるいは、送信トラフィックのみをモニターする。

◆ 宛先ポート - monitor sessionコマンド

(config)# monitor session number destination [ interface id ] [ , | - ] [ encapsulation replicate ]

number    :SPANセッションのセッション番号。sourceで指定したものと同じ値を指定する。
interface id :ネットワークアナライザが接続するポート番号。
encapsulation replicate:
  タグ付きのトラフィックを受信したい場合に指定する。これを指定しない場合
  デフォルトでタグなしの状態でパケットが宛先ポートに転送されることになる。

filter vlanコマンドを使用することにより、トランクポート上で受信するトラフィック対象の
VLANトラフィックを指定することができる。

ex)2-6までのVLANをフィルタリング
Catalyst(config)# monitor session 1 source interface FastEthernet 0/1
Catalyst(config)# monitor session 1 filter vlan 2 - 6
Catalyst(config)# monitor session 1 destination interface FastEthernet 0/24 encapsulation replicate

リモートSPAN設定

1.RSPAN用のVLANを新規作成(RSPANを実装する全てのCatalystにRSPAN用VLANを作成すること)

 SW1(config)# vlan [vlan id]
 SW1(config-vlan)# remote-span

2.RSPAN送信元|宛先セッション番号を送信元ポートorVLAN|宛先ポートに関連付ける。

▼送信元
SW1(config)# monitor session number source [ interface id | vlan id ] [ , | - ] [ both | rx | tx ]
▼宛先
 SW2(config)# monitor session number source remote vlan id

3.RSPAN送信元|宛先セッション番号をRSPAN VLANに関連付ける。
 
▼送信元
SW1(config)# monitor session number destination remte vlan id
▼宛先
 SW2(config)# monitor session number destination [ interface id ] [ , | - ] [ encapsulation replicate ]


特筆すべきローカルSPANセッションとRSPANセッションの仕様
・同じSPANのセッションにモニター対象ポートの「送信元ポート」と「送信元VLAN」を混在させられない。
・1つのSPANセッションに複数の宛先ポートを設定できるが、指定できる最大の宛先ポートは「 64 」個。
Catalystスイッチは最大2つの送信元セッション( ローカルSPANとRSPANの送信元セッションの2つ )を
サポートする。従って、同じスイッチ内でローカルSPANの実行とRSPANの実行が1つずつ可能である。
・SPANでキャプチャされる受信トラフィックは、スイッチが変更または処理を行う前のパケット
・SPANでキャプチャされる送信トラフィックは、スイッチが変更または処理を行った後のパケット

★LAGインターフェースは送信元には設定できるが、宛先には設定できない。
★宛先に指定したインターフェースはSTPに参加できない。
★異なるセッションでは送信元は同じポートを指定できる、宛先は共有することができない
→例えば下記configを投入するとセッション1は正しく設定されるが、セッション2は
 後から重複した宛先を指定したため宛先が設定されず不完全となる。

 ----------------------------------------------
 monitor session 1 source int fa0/1
 monitor session 1 destination int fa0/24
 monitor session 2 source int fa0/1
 monitor session 2 source int fa0/2
 monitor session 2 destination int fa0/24
 ----------------------------------------------


[確認コマンド]
SPANステータスの確認
→show monitor session [session number]

RSPAN VLANの確認
→show vlan remote-span

宛先ポートはshow int上で line protocol is down(monitoring)と表示される。