tcpdump を使用して VLAN パケットを識別する

tcpdump を使用して VLAN パケットを識別する

私は自分のホストが受信したり他のホストに送信したりするVLANタグ付きパケットを調べようとしています。

tcpdump -i eth1 vlan 0x0070

しかし、うまくいきませんでした。これまでに tcpdump を介して VLAN パケットを表示しようとした人はいますか? Web を検索してもあまり役に立ちませんでした。

答え1

ホストがアクセス ポートに接続されている場合、スイッチはホストに到達する前に VLAN タグを削除する可能性があります。その結果、問題のホストで TCPDump を実行しても、VLAN タグは表示されません。

タグがパケットから削除される前にトラフィックを取得してネットワーク ダンプ/トレースで確認するには、SPAN ポートを設定するか、ネットワーク タップをネットワークのどこかに導入する必要があります。

答え2

実際に Linux を使用して 802.1q (VLAN タグ付け) を「デコード」することができます。Linux を「スティック上のルーター」に変えて、高性能な Cisco レイヤー 2 スイッチ (多数の VLAN を持つ) 上の単一のイーサネット ポートを使用して、VLAN 間をルーティングすることができます。

メイン イーサネットには、VLAN ID に対応する「サブインターフェイス」があります。サブインターフェイスを個別にルーティングし、iptables (ファイアウォール) を設定できます。

これは、単一のイーサネット インターフェイスのみを使用して、境界 Linux ファイアウォールを ISP に接続し、その背後に 10 個の VLAN を配置する簡単な方法です。

ドット q は標準ですが、シスコはこれを独自に作成したと考えているため、Linux 上で問題なく動作します。

編集:これを有効にするには

モッドプローブ8021q

その後、tcpdumpを実行してサブインターフェースをリッスンすることができます。

答え3

正直に言うと、間違ったツールを使用していると思います。tcpdump は IP (L3) に結びついていますが、VLAN は L2 の機能です。代わりに wireshark を使用してみてください。

関連情報