Tag VLAN tidak ditampilkan dalam paket capture (Linux) melalui tcpdump

15

Saya menambahkan VLAN yang ditandai ke eth0:

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

Ini menghasilkan:

#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

Sekarang saya mulai dhclient:

#dhclient -d -v -1 eth0.20

Apa yang saya lihat di tcpdump adalah bingkai penemuan DHCP yang tidak ditandai:

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

Mengapa tidak ditandai?

Modul 802.1q tampaknya digunakan:

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

(OS: kernel SLES11SP2 3.0.13-0.27-default)

Lalu lintas BTW lainnya juga tidak ditandai (setidaknya tcpdump tidak menunjukkannya) ...


Perbarui 16 Oktober

 # 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
                                                                       ^^^^^^

Jadi, masih belum ada tag yang ditampilkan di sini.

Tetapi memang counter transmit untuk eth0.20 di / proc / net / dev tidak bertambah ketika menjalankan dhclient ...

Marki
sumber
dapatkah Anda menjalankan "ip -d link show eth0.20"?
Danila Ladner
Tentu, saya telah menambahkan info ke pertanyaan.
Marki
Apakah Anda yakin lalu lintas muncul di kabel tanpa tag VLAN juga? Mungkin saja ada beberapa libpcap quirk dengan cara antarmuka VLAN diimplementasikan ip link.
the-wabbit
oke, juga apa kata "cat / proc / net / vlan / config"?
Danila Ladner
Saya telah memperpanjang pertanyaan dengan output konfigurasi. Saya juga akan mencoba menangkap di luar OS dan membuat Anda tetap diperbarui.
Marki

Jawaban:

16

Anda tidak dapat melihat tag VLAN dari tcpdump -i eth0output pada arsitektur i686 / x86_64 karena akselerasi VLAN. lapisan VLAN akan disaring oleh kernel sehingga selalu terlihat tidak bertanda. Silakan merujuk ke Bug 498981 - tcpdump tidak dapat berurusan dengan tag vlan 802.1q

Menurut kasus Anda, Anda bisa mendapatkan tag VLAN melalui:

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

Anda akan melihat output berikut:

<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
shawmzhu
sumber
Anda salah. Saya berbicara tentang Linux yang mengirim penemuan DHCP. Itu harus ditandai. Entah itu tidak, atau tampilan salah. Ini tidak ada hubungannya dengan sakelar yang terhubung dengan mesin.
Marki
1
@Marki maaf saya tidak mengerti maksud Anda. inilah versi yang diperbarui setelah studi 20 menit melalui google. komentar ini adalah kunci pertanyaan Anda.
shawmzhu
Ya kamu sepertinya benar. Seseorang harus berhati-hati dengan semuanya layer 2. Seseorang juga harus berhati-hati dengan klien DHCP karena tampaknya menggunakan soket mentah dalam beberapa kasus (sehingga Anda bahkan tidak dapat menangkap paket menggunakan iptables). Dan selanjutnya, ketika Anda menggunakan VMware Anda tidak boleh menandai paket-paket di VM dalam hal apa pun karena vSwitch akan menolaknya, Anda harus mengkonfigurasi antarmuka khusus untuk VM itu dalam VLAN pada vSwitch tersebut. Menyatukan semua ini tidak mudah ... ;-)
Marki
Di sisi lain ... lihat edit saya di atas ... sepertinya tidak semudah itu. Tapi bagaimanapun masalah saya sudah diperbaiki, saya tetap tidak bisa mengirim paket yang ditandai dari dalam VM. Tetapi untuk tuan rumah yang murni fisik ini mungkin menjadi masalah ...
Marki