Cisco IOS SPAN ポートミラーリング Wireshark パケットキャプチャ

通信障害の原因調査や不正アクセスの検知を行う際、スイッチを通過しているパケットをリアルタイムで確認したい場面があります。そのときに活用できるのがSPAN(Switched Port Analyzer)、いわゆるポートミラーリング機能です。

Ciscoスイッチではmonitor sessionコマンドで設定できます。本記事では、SPANの仕組み・ローカルSPAN・VLAN単位のSPAN・RSPANとの違い・確認方法・運用上の注意点まで体系的に解説します。

👷 現場での体験談

特定の端末だけ通信が遅いという問い合わせがあり、原因がわからず困っていました。その端末のスイッチポートにSPANを設定してWiresharkでキャプチャしてみると、大量のARP要求が短時間に飛び交っているのが見えました。

調べると同一セグメントでIPアドレスが重複しており、ARPがループしていたことが原因でした。SPANで実際のパケットを見るまではまったく気づかなかった問題で、「問題の現場を直接見る」ことの大切さを実感しました。設定も5分程度で完了するので、障害調査の最初の一手として非常に有効です。

SPANとは

SPANは指定したポートやVLANのトラフィックを別のポートにコピーして転送する機能です。元の通信には影響を与えず、コピー先ポートに接続したWiresharkやIDS/IPSでリアルタイム解析ができます。

図1:SPANの基本的な動作イメージ
PC-A ソースポート Ciscoスイッチ Gi0/1(Src) Gi0/10(Dst) monitor session 1 サーバ 通信先 Wireshark PC コピー転送
📡
ソースポート(監視元)
トラフィックをコピーする対象のポートまたはVLAN。元の通信には一切影響しない
🔍
デスティネーションポート(コピー先)
コピーされたパケットが届くポート。WiresharkやIDSのPCを接続。通常の通信はできなくなる
🎯
一方向コピー
ソース→デスティネーションへの一方向コピー。デスティネーションから外へ通信を返せない
図2:SPANを活用する主なシナリオ(現場経験ベース)

ローカルSPANの設定例

同一スイッチ内のポート間でトラフィックをコピーするのがローカルSPANです。最も基本的な使い方です。

ポート単位のSPAN(双方向)

Switch# configure terminal

! セッション1を作成:Gi0/1の送受信両方向をコピー
Switch(config)# monitor session 1 source interface GigabitEthernet0/1 both

! コピー先ポートを指定(WiresharkのPCを接続するポート)
Switch(config)# monitor session 1 destination interface GigabitEthernet0/10

Switch(config)# end
方向オプションコピーするトラフィック使用例
both送受信の両方向通常の障害調査・通信全体を確認したい場合
rx受信(スイッチに入ってくる)トラフィックのみクライアントからの送信を確認する場合
tx送信(スイッチから出ていく)トラフィックのみクライアントへの応答パケットを確認する場合

複数ポートをソースに指定する

! 複数ポートをソースに指定(rangeで範囲指定も可能)
Switch(config)# monitor session 1 source interface GigabitEthernet0/1 - 3 both

! または個別に追加
Switch(config)# monitor session 1 source interface GigabitEthernet0/1 both
Switch(config)# monitor session 1 source interface GigabitEthernet0/2 both

encapsulation replicateオプション(タグ保持)

デスティネーションポートにコピーされるパケットは、デフォルトでVLANタグが除去されます。タグ付きフレームをそのままキャプチャしたい場合はencapsulation replicateを追加します。

! VLANタグを保持してコピー(802.1Qタグ付きで確認したい場合)
Switch(config)# monitor session 1 destination interface GigabitEthernet0/10 encapsulation replicate

VLAN単位のSPAN設定例

特定のVLAN内の全トラフィックをコピーしたい場合はVLAN単位のSPANを使います。VLANに所属するすべてのポートのトラフィックがコピー対象になります。

! VLAN 20の全トラフィックをGi0/10にコピー
Switch(config)# monitor session 2 source vlan 20 both
Switch(config)# monitor session 2 destination interface GigabitEthernet0/10
⚠ VLAN単位SPANはトラフィック量に注意 VLAN全体のトラフィックをコピーすると、接続端末が多いほどキャプチャ量が増大します。デスティネーションポートの帯域を超えるとパケット欠落が発生します。調査対象を絞れる場合はポート単位のSPANの方が効率的です。

設定の確認コマンド

! 特定セッションの確認
Switch# show monitor session 1

! 全セッションの確認
Switch# show monitor
(show monitor session 1 の出力例)
Session 1
---------
Type                   : Local Session
Source Ports           :
    Both               : Gi0/1          ← ソースポートと方向
Destination Ports      : Gi0/10         ← デスティネーションポート
    Encapsulation      : Native         ← VLANタグなし(replicateなら802.1Q)
          Ingress      : Disabled       ← デスティネーションポートの受信は無効

SPANセッションの削除

調査が終わったらSPANセッションを削除してデスティネーションポートを通常運用に戻します。削除を忘れると不要な負荷がかかり続けるため、必ず作業後に削除してください。

! セッション1を削除
Switch(config)# no monitor session 1

! すべてのSPANセッションを削除
Switch(config)# no monitor session all

ローカルSPANとRSPANの違い

ローカルSPANはソースとデスティネーションが同一スイッチ内である必要があります。別のスイッチのポートをキャプチャしたい場合はRSPAN(Remote SPAN)を使用します。

ローカルSPAN
  • 同一スイッチ内のポート間でコピー
  • 設定がシンプル
  • デスティネーションに直接WiresharkのPCを接続
  • 本記事で解説しているのはこちら
RSPAN(Remote SPAN)
  • 別のスイッチにコピーを届ける
  • RSPAN専用VLANをトランクで中継
  • 離れた場所の通信を中央で集約してキャプチャできる
  • 設定がやや複雑

RSPANの設定概要(参考)

! ① RSPAN専用VLANを作成(例:VLAN 999)
Switch-A(config)# vlan 999
Switch-A(config-vlan)# remote-span
Switch-A(config-vlan)# exit

! ② ソーススイッチ:Gi0/1のトラフィックをRSPAN VLANに送る
Switch-A(config)# monitor session 1 source interface GigabitEthernet0/1 both
Switch-A(config)# monitor session 1 destination remote vlan 999

! ③ デスティネーションスイッチ:RSPAN VLANからWireshark PCへ
Switch-B(config)# monitor session 1 source remote vlan 999
Switch-B(config)# monitor session 1 destination interface GigabitEthernet0/10

運用上の注意点

注意点内容
デスティネーションポートは通常通信不可SPAN設定中、デスティネーションポートは専用ポートになりキャプチャPC以外の用途に使えない
トラフィック過多によるパケット欠落ミラーリング対象が多すぎるとデスティネーション側で処理が追いつかずパケット欠落が発生する。VLAN単位SPANは特に注意
同一ポートを複数セッションのデスティネーションに指定不可1つのポートは1つのSPANセッションのデスティネーションにしか使えない
同時セッション数の制限機種によって設定できるSPANセッション数に上限がある(多くのCatalyst系スイッチは最大2〜4セッション)。show monitorで確認する
スイッチへの負荷SPAN稼働中はスイッチのCPU・メモリ負荷が上がる場合がある。長時間の常時稼働は避け、必要な期間だけ有効化する
調査後は必ず削除するno monitor session [番号]で削除。設定を放置すると不要な負荷とセキュリティリスクが残る

活用シナリオ別の設定例まとめ

1
特定端末の通信障害調査
monitor session 1 source interface Gi0/5 both
monitor session 1 destination interface Gi0/10
2
IDS/IPSへのトラフィック転送(受信のみ)
monitor session 1 source interface Gi0/1 rx
monitor session 1 destination interface Gi0/10
3
VoIP品質調査(特定VLANのVoIPトラフィック)
monitor session 2 source vlan 30 both
monitor session 2 destination interface Gi0/10 encapsulation replicate

まとめ

SPANポートを活用すれば、スイッチを通過するトラフィックをリアルタイムに解析できます。

  • monitor session [番号] source interface [IF] both/rx/txでソースを設定
  • monitor session [番号] destination interface [IF]でコピー先を設定
  • VLANタグを保持したい場合はencapsulation replicateを追加
  • デスティネーションポートは通常通信不可になる。調査専用ポートを確保する
  • 別スイッチのトラフィックをキャプチャするにはRSPANを使う
  • 調査後は必ずno monitor session [番号]で削除する

設定による負荷やパケット欠落に注意し、必要な期間だけ有効化する運用を心がけましょう。