Các thẻ Vlan không được hiển thị trong chụp gói (Linux) thông qua tcpdump


15

Tôi đang thêm một Vlan được gắn thẻ vào eth0:

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

Kết quả này trong:

#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

Bây giờ tôi bắt đầu dhclient:

#dhclient -d -v -1 eth0.20

Những gì tôi thấy trong tcpdump là khung khám phá DHCP chưa được đánh dấu:

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

Tại sao nó không được gắn thẻ?

Mô-đun 802.1q dường như được sử dụng:

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

(Hệ điều hành: SLES11SP2 kernel 3.0.13-0.27-mặc định)

BTW lưu lượng khác cũng không được gắn thẻ (ít nhất là tcpdump không hiển thị nó) ...


Cập nhật ngày 16 tháng 10

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

Vì vậy, vẫn không có thẻ hiển thị ở đây.

Nhưng thực sự, bộ đếm truyền cho eth0.20 in / Proc / net / dev không tăng khi chạy dhclient ...


bạn có thể chạy "ip -d link show eth0.20" không?
Danila Ladner

Chắc chắn, tôi đã thêm thông tin vào câu hỏi.
Marki

Bạn có chắc chắn rằng lưu lượng truy cập hiển thị trên dây không có thẻ Vlan không? Nó chỉ đơn giản có thể là một số giải thích libpcap với cách thức thực hiện giao diện Vlan ip link.
the-wợi

được rồi, còn "cat / Proc / net / vlan / config" nói gì?
Danila Ladner

Tôi đã mở rộng câu hỏi với đầu ra cấu hình. Tôi cũng sẽ cố gắng chụp bên ngoài HĐH và cập nhật cho bạn.
Marki

Câu trả lời:


16

Bạn không thể thấy thẻ Vlan từ tcpdump -i eth0đầu ra trên kiến ​​trúc i686 / x86_64 do tăng tốc Vlan. lớp Vlan sẽ được lọc bởi kernel để nó luôn trông không bị chặn. Vui lòng tham khảo Bug 498981 - tcpdump không thể xử lý với thẻ vlan 802.1q

Theo trường hợp của bạn, bạn có thể nhận thẻ Vlan thông qua:

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

Bạn sẽ thấy đầu ra sau:

<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

Bạn đã hiểu sai. Tôi đang nói về Linux gửi một khám phá DHCP. Nó nên được gắn thẻ. Hoặc là không, hoặc màn hình hiển thị sai. Điều này không liên quan gì đến công tắc mà máy được kết nối.
Marki

1
@Marki xin lỗi tôi không hiểu rõ ý của bạn. đây là phiên bản cập nhật sau một nghiên cứu 20 phút qua google. bình luận này là chìa khóa cho câu hỏi của bạn.
Shawmzhu

Vâng, bạn có vẻ đúng. Mọi người nên cẩn thận với mọi thứ của lớp 2. Ngoài ra, người ta cũng nên cẩn thận với máy khách DHCP vì nó dường như sử dụng ổ cắm thô trong một số trường hợp (vì vậy bạn thậm chí không thể chụp các gói bằng iptables). Và hơn nữa, khi bạn đang sử dụng VMware, bạn không nên gắn thẻ các gói trong VM trong mọi trường hợp vì vSwitch sẽ từ chối chúng, bạn phải định cấu hình giao diện dành riêng cho VM đó trong Vlan đó trên vSwitch. Kết hợp tất cả những điều này lại không dễ dàng ... ;-)
Marki

Mặt khác ... xem bản chỉnh sửa của tôi ở trên ... có vẻ không dễ dàng chút nào. Nhưng dù sao thì vấn đề của tôi đã được khắc phục, dù sao tôi cũng không thể gửi các gói được gắn thẻ từ VM. Nhưng đối với các máy chủ vật lý thuần túy thì đây có thể là một vấn đề ...
Marki
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.