tcpdumpを介したパケットキャプチャ(Li​​nux)にVLANタグが表示されない


15

タグ付きVLANをeth0に追加しています:

#ip link add link eth0 name eth0.20 type vlan id 20

この結果:

#ip link
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 9c:c7:a6:95:65:1c brd ff:ff:ff:ff:ff:ff
....
12: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
 link/ether 9c:c7:a6:95:65:1c brd ff:ff:ff:ff:ff:ff

#ip -d link show eth0.20
70: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 9c:c7:a6:95:65:1c brd ff:ff:ff:ff:ff:ff
    vlan id 20 <REORDER_HDR>

#cat /proc/net/vlan/config
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.234       | 234  | eth0
eth0.20        | 20  | eth0

dhclientを起動します:

#dhclient -d -v -1 eth0.20

tcpdumpに表示されるのは、タグなしのDHCP検出フレームです。

#tcpdump -i eth0 -XX
0x0000:  ffff ffff ffff 9cc7 a695 651c 0800 4500 
                                       ^^^^

なぜタグ付けされていないのですか?

802.1qモジュールが使用されているようです:

#lsmod | grep 8021q
8021q                  28324  0
garp                   14311  1 8021q

(OS:SLES11SP2カーネル3.0.13-0.27-default)

ところで、他のトラフィックもタグ付けされていません(少なくともtcpdumpでは表示されません)...


10月16日更新

 # tcpdump -Uw - | tcpdump -i eth0 -en -r - &
[1] 7310
 # tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

 # dhclient -d -v -1 eth0.20
Internet Systems Consortium DHCP Client 4.2.3-P2
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0.20/9c:c7:a6:95:65:1c
Sending on   LPF/eth0.20/9c:c7:a6:95:65:1c
Sending on   Socket/fallback
DHCPDISCOVER on eth0.20 to 255.255.255.255 port 67 interval 3
reading from file -, link-type EN10MB (Ethernet)
18:49:14.437882 9c:c7:a6:95:65:1c > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 347: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 9c:c7:a6:95:65:1c, length 305
                                                                       ^^^^^^

そのため、ここにはタグが表示されていません。

しかし、実際には、dhclientを実行すると/ proc / net / devのeth0.20の送信カウンターが増加します...


「ip -d link show eth0.20」を実行できますか?
ダニラ・ラドナー

確かに、質問に情報を追加しました。
マルキ

VLANタグなしでも、トラフィックがワイヤに表示されることを確認しますか?それは単にVLANインターフェースが実装される方法での何らかのlibpcapの癖かもしれませんip link
the-wabbit

さて、「cat / proc / net / vlan / config」の意味も?
ダニララドナー

構成出力で質問を拡張しました。また、OSの外部でキャプチャして、最新の状態に保つようにします。
マルキ

回答:


16

tcpdump -i eth0VLANアクセラレーションのため、i686 / x86_64アーキテクチャの出力からVLANタグを見ることができません。VLAN層はカーネルによってフィルタリングされるため、常にタグなしに見えます。バグ498981を参照してください-tcpdumpは802.1q vlanタグを処理できません

場合に応じて、次の方法でVLANタグを取得できます。

tcpdump -i eth0 -Uw - | tcpdump -en -r - vlan 20

次の出力が表示されます。

<timestamp> <mac-addr-of-eth0> > Broadcast, ethertype 802.1Q (0x8100), length 346: vlan 20, p 0, ethertype IPv4, 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP

間違えている。Linux がDHCPディスカバリーを送信することについて話しいます。タグ付けする必要があります。そうでないか、表示が間違っています。これは、マシンが接続されているスイッチとは関係ありません。
マルキ

1
@Marki申し訳ありませんが、明確にあなたの意見を得ることができませんでした。Googleで20分間学習した後の更新バージョンです。このコメントはあなたの質問の鍵です。
shawmzhu

ええ、あなたは正しいようです。レイヤー2のすべてに注意する必要があります。DHCPクライアントは、場合によってはrawソケットを使用するように見えるため、さらに注意する必要があります(したがって、iptablesを使用してパケットをキャプチャすることさえできません)。さらに、VMwareを使用している場合は、vSwitchがパケットを拒否するため、VMのパケットにタグを付けないでください。vSwitchのそのVLANでそのVM専用のインターフェイスを構成する必要があります。このすべてをまとめるのは簡単ではありませんでした
; ;

他方...上記の私の編集を参照してください...結局のところそれほど簡単ではないようです。しかし、とにかく私の問題は修正され、とにかくVM内からタグ付きパケットを送信できません。しかし、純粋に物理的なホストの場合、これは問題になる可能性があります
...-Marki
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.