通信障害の原因調査や不正アクセスの検知を行う際、スイッチを通過しているパケットをリアルタイムで確認したい場面があります。そのときに活用できるのが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でリアルタイム解析ができます。
ローカル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 bothencapsulation replicateオプション(タグ保持)
デスティネーションポートにコピーされるパケットは、デフォルトでVLANタグが除去されます。タグ付きフレームをそのままキャプチャしたい場合はencapsulation replicateを追加します。
! VLANタグを保持してコピー(802.1Qタグ付きで確認したい場合)
Switch(config)# monitor session 1 destination interface GigabitEthernet0/10 encapsulation replicateVLAN単位の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設定の確認コマンド
! 特定セッションの確認
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)を使用します。
- 同一スイッチ内のポート間でコピー
- 設定がシンプル
- デスティネーションに直接WiresharkのPCを接続
- 本記事で解説しているのはこちら
- 別のスイッチにコピーを届ける
- 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 [番号]で削除。設定を放置すると不要な負荷とセキュリティリスクが残る |
活用シナリオ別の設定例まとめ
monitor session 1 source interface Gi0/5 both
monitor session 1 destination interface Gi0/10monitor session 1 source interface Gi0/1 rx
monitor session 1 destination interface Gi0/10monitor 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 [番号]で削除する
設定による負荷やパケット欠落に注意し、必要な期間だけ有効化する運用を心がけましょう。



