WLANトラブル再現環境の作り方(観測編)- ミラーポートと Wireshark で通信を見える化する
はじめに
この記事は、WLAN(Wireless LAN)機器のトラブルを手元で再現するためのネットワークエミュレーション環境づくりの最終回(第3回)です。
第1回で全体構成を、第2回で回線品質の劣化注入を作りました。今回は仕上げとして、その通信を観測する仕組みを作ります。
- 全体構成編:設計要件と全体構成、機材の役割
- エミュレーション編:Orange Pi R1 と tc/netem で回線品質を落とす
- 観測編(本記事):ミラーポートと Wireshark で通信を見える化する
これまでと同じく、実案件のキャプチャデータは載せられないため、「同じ観測環境をどう作るか」と「劣化を入れたとき何を見るか」の観点整理に焦点を当てます。
この記事でお伝えしたいこと
結論から書くと、次の3点です。
- 観測はDUTやAPの中ではなく、スイッチのミラーポートで「外から」やる。検証対象の挙動に影響を与えないため
- キャプチャ用NICは「受け専用」に躾ける(IPを付けない)。観測装置が通信に参加してはいけない
- キャプチャは闇雲に眺めない。「劣化を入れると何が増えるか」を決めてから見る(再送・dup ACK・RTT)
ミラーポートとは
スイッチは通常、宛先のポートにしかフレームを流しません。つまりキャプチャPCを普通のポートにつないでも、他人宛ての通信は見えません。
そこで使うのが ミラーポート(ポートミラーリング、SPAN) です。指定したポートを通る送受信フレームのコピーを、別のポートへ複製してくれる機能で、NETGEAR GS308Eクラスのスマートスイッチ(数千円)でも設定できます。
今回の構成では、Port2(Orange Pi=WAN方向)とPort3(AP)をミラー元、Port1をミラー先にしています。
この1点で「DUT⇔インターネットの有線区間」がすべて見えます。逆に、無線区間そのもの(電波レベルの再送やレート低下)はここでは見えません。これは最後のコラムで補足します。
Step 1:スイッチのミラー設定
管理画面での設定は、機種が違ってもだいたい次の3点セットです。
- ミラー元(Source):監視したいポートを選ぶ(例:Port2, Port3)
- 方向:送信/受信/両方(迷ったら両方)
- ミラー先(Destination):キャプチャPCをつなぐポート(例:Port1)
注意点は1つだけ。ミラー先ポートは通常の通信と共用しないことです。ミラー先は「出力専用の蛇口」になるので、そのポートで普段の通信をしようとすると不安定になります。
Step 2:キャプチャPC側の準備
キャプチャPCは、USB-LANアダプタでミラー先ポートにつなぎます。ここで大事なのが「受け専用」の躾です。
- キャプチャ用NICにはIPアドレスを付けない(DHCPも無効に)
- OSがそのNICでしゃべろうとするプロトコルは、できるだけ無効化する
観測装置自身がARPやWindowsのバックグラウンド通信を出してしまうと、キャプチャに自分のノイズが混ざります。IPを付けなければ、ほぼ黙ります。
あとはWiresharkを起動し、キャプチャ対象にそのUSB-LANを選ぶだけです。長時間観測する場合は、「キャプチャ」→「オプション」からリングバッファ(例:100MB×10ファイルで循環)を設定しておくと、ファイル肥大で死ぬ事故を防げます。
Step 3:まず「正常系」を録る
劣化を観測する前に、必ず劣化なしの状態で数分キャプチャして基準を作ります。
見ておくのは次の2つです。
- 統計 → プロトコル階層:どんな通信がどれくらい流れているかの全体像
- 統計 → I/Oグラフ:スループットの時間変化
「正常時はこう見える」を知らないと、劣化時に何が異常なのか判断できません。地味ですが、この基準取りが観測編でいちばん大事な手順です。
Step 4:劣化を入れて「何が増えるか」を見る
第2回のnetemで劣化を注入し、同じ操作(DUTの通信、Fast.comでの実測など)をしながらキャプチャします。
このとき、劣化の種類ごとに「見えるもの」が違います。
| 注入した劣化 | Wiresharkで増える・変わるもの | 見る場所・フィルタ例 |
|---|---|---|
| 遅延(delay) | RTTの伸び | TCPストリームを選び「統計 → TCPストリームグラフ → ラウンドトリップ時間」 |
| 帯域制限(rate) | スループットの頭打ち、ウィンドウ枯渇 | I/Oグラフ/tcp.analysis.zero_window
|
| パケットロス(loss) | 再送、重複ACK |
tcp.analysis.retransmission/tcp.analysis.duplicate_ack
|
よく使う表示フィルタをまとめておきます。
tcp.analysis.flags … TCPの「何かあった」印を全部
tcp.analysis.retransmission … 再送
tcp.analysis.duplicate_ack … 重複ACK(ロスの前兆)
tcp.analysis.zero_window … 受信バッファ枯渇
ip.addr == 192.168.0.155 … 特定のDUTに絞る(例)
たとえば「loss 0.5%を入れたら、DUTのアプリがタイムアウトした」というとき、キャプチャ上で再送が何回続いた後にコネクションが切れたかを見れば、アプリ側のリトライ設計の問題なのか、TCP層で粘り切れていないのかを切り分けられます。「症状」を「パケットの事実」に翻訳できるのが、この観測ポイントの価値です。
Step 5:実測と突き合わせる
第1回に書いた回線3系統の実測値(Fast.com)も、この観測と組み合わせると精度が上がります。
Fast.comを回している最中のキャプチャをI/Oグラフで見ると、「設定した帯域でちゃんと頭打ちになっているか」「ロスでスループットがギザギザに落ち込んでいないか」が一目で分かります。
netemの設定値(入力)→ Fast.comの実測(外形)→ キャプチャ(内部)の3点がそろうと、再現環境として信頼して使えるようになります。
ハマりどころ
ミラーがあふれる。 ミラー元2ポートの合計トラフィックがミラー先1ポートの帯域を超えると、コピーが黙って落ちます。100Mbpsクラスのスイッチでは特に起きやすいです。今回の用途は「劣化させた低速回線」の観測なので実害は出にくいですが、「キャプチャに映っていない=流れていない」とは限らない、と覚えておいてください。
キャプチャに自分のノイズが混ざる。 キャプチャNICにIPが付いたままだと、OSの通信が混入します。Step 2の「受け専用」を忘れずに。
普通のポートにつないで「何も見えない」と悩む。 スイッチは宛先ポートにしかフレームを流しません。他人宛てが見えないのは正常で、だからこそミラーポートが必要です。
ブロードキャストだけ見えて安心してしまう。 ARPやDHCPは普通のポートでも見えるため、「見えてる気」になりがちです。TCPの中身が見えているかで判断してください。
キャプチャファイルが巨大化する。 リングバッファを設定するか、キャプチャフィルタ(例:host 192.168.0.155)で最初から絞ります。表示フィルタ(後から絞る)とキャプチャフィルタ(最初から録らない)の違いは意識しておくと安全です。
コラム:無線区間そのものを見たい場合
ミラーポートで見えるのは「APより有線側」です。無線区間そのもの——電波レベルの再送、レート低下、管理フレーム——を見たい場合は、Wi-Fiアダプタをモニターモードにしてキャプチャします。
Linuxと対応チップセットのアダプタがあれば、次の2コマンドで入れます。
ただし最近は、モニターモード対応を明記したWi-Fiアダプタ(特にUSBドングル)の入手性が下がっており、型番違いで非対応チップに切り替わっていることもあるため、購入前に実績情報の確認が必須です。
2026年時点でのチップセット事情をざっくりまとめると、次のとおりです。
- AR9271 は今でも比較的人気です
- RT3070 と RTL8187L はかなり古い世代です
- 上記3つはいずれも基本的に 2.4GHz 専用です
- 最近は RTL8812AU、RTL8814AU、MT7921 系が推奨されることが増えています
このため「昔の定番を探す」よりも、対応カーネルやドライバ情報が新しい型番を優先して選ぶ方が、導入時のトラブルを減らしやすいです。
sudo airmon-ng check kill # 干渉するプロセスを停止
sudo airmon-ng start wlan0 # wlan0 をモニターモードへ
あとはWiresharkで wlan0mon をキャプチャすれば、802.11フレームがそのまま見えます。ただし、暗号化されたデータの中身は見えません。それでも「再送率が高い」「レートが落ちている」といった無線区間の健康状態は分かるので、有線側のミラー観測と組み合わせると、無線起因か回線起因かの切り分けが一段深くなります。
なお、スマホのテザリングで代用した回線はこの構成の性質上キャプチャしにくいなど、細かい制約もあります。まずは「有線はミラー、無線はモニターモード」という役割分担を押さえておけば十分です。
シリーズのまとめ
3回にわたって、WLANトラブル再現環境を作ってきました。
- 第1回(全体構成編):劣化注入と観測を、検証対象に手を入れずに実現する構成。回線は「高速・実物の低速・シミュレート」の3系統
- 第2回(エミュレーション編):Orange Pi R1の透過ブリッジとtc/netemで、帯域・遅延・ロスを方向別に注入
- 第3回(観測編・本記事):ミラーポートとWiresharkで、劣化が通信に与える影響を「パケットの事実」として観測
どれも家庭用機材と数千円のボードでできる範囲です。「現地でしか起きない」と言われがちなWLANトラブルを、机の上に持ち帰る道具として、どれか1つでも参考になれば幸いです。
