Tcpdump aracılığıyla paket yakalamada (Linux) gösterilmeyen VLAN etiketleri


15

ET0 üzerine etiketli bir VLAN ekliyorum:

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

Bunun sonucu:

#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

Şimdi dhclient'e başlıyorum:

#dhclient -d -v -1 eth0.20

TCpdump içinde gördüğüm etiketsiz bir DHCP keşif çerçevesi:

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

Neden etiketlenmiyor?

802.1q modülü kullanılıyor gibi görünüyor:

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

(İS: SLES11SP2 çekirdeği 3.0.13-0.27-varsayılan)

BTW diğer trafik de etiketlenmez (en azından tcpdump bunu göstermez) ...


Güncelleme 16 Ekim

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

Yani, burada hala bir etiket gösterilmiyor.

Ama aslında / proc / net / dev için eth0.20 için iletim sayacı dhclient çalıştırılırken artar ...


"ip -d link show eth0.20" çalıştırabilir misiniz?
Danila Ladner

Tabii, bilgiyi soruya ekledim.
Marki

VLAN etiketleri olmadan telde trafik göründüğünden emin misiniz? VLAN arabirimlerinin uygulanma şekliyle bazı libpcap tuhaflıkları olabilir ip link.
the-wabbit

tamam, ayrıca "cat / proc / net / vlan / config" ne diyor?
Danila Ladner

Konuyu yapılandırma çıktısıyla uzattım. Ayrıca işletim sisteminin dışında yakalamaya ve sizi güncel tutmaya çalışacağım.
Marki

Yanıtlar:


16

tcpdump -i eth0VLAN hızlandırması nedeniyle i686 / x86_64 mimarisinde VLAN etiketini çıktıdan göremiyorsunuz . VLAN katmanı çekirdek tarafından filtrelenir, böylece her zaman etiketsiz görünür. Lütfen Hata 498981'e bakın - tcpdump, 802.1q vlan etiketi ile ilgilenemez

Durumunuza göre VLAN etiketlerini şu yollarla alabilirsiniz:

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

Aşağıdaki çıktıyı görmelisiniz:

<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

Yanlış anladın. Linux'tan DHCP keşfi gönderdiğinden bahsediyorum . Etiketlenmelidir. Ya öyle değil ya da ekran yanlış. Bunun, makinenin bağlı olduğu anahtarla ilgisi yoktur.
Marki

1
@Marki özür dilerim açık bir şekilde görüşünüzü anlamadım. İşte google üzerinden 20 dakikalık bir çalışmadan sonra güncellenmiş sürümü. bu yorum sorunuzun anahtarıdır.
shawmzhu

Evet haklı görünüyorsun. Bir 2. Bir gereken her şey katmanla dikkatli olmalıdır ayrıca o (hatta iptables kullanarak paketlerini yakalamak edemezler) bazı durumlarda ham yuva kullanmak göründüğü gibi DHCP istemcisi ile dikkatli olun. Dahası, VMware kullanırken vSwitch bunları reddedeceği için VM'deki paketleri hiçbir şekilde etiketlememelisiniz, vSwitch'teki VLAN'da o VM için özel bir arayüz yapılandırmanız gerekir. Tüm bunları bir araya getirmek kolay değildi ... ;-)
Marki

Öte yandan ... yukarıdaki düzenlememe bakın ... sonuçta bu kadar kolay görünmüyor. Ama yine de sorunum düzeltildi, VM içinden etiketli paketleri yine de gönderemiyorum. Ama tamamen fiziksel ana bilgisayarlar için bu bir sorun olabilir ...
Marki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.