获取VLAN报文

问题描述:
用sniffer/Ethereal(WireShark)/EtherPeek等软件,在接入层设备的以太网口镜像抓包是分析问题的基本方法之一,然而很多维护人员在实际操作时发现,自己的台式机或笔记本抓到的数据报看不到VLAN标记。难以区分数据流是从哪个vlan过来的。给问题分析造成不便。

问题分析:

VLAN
tag是在802.1Q中定义的标签,支持VLAN的设备(例如以太网交换机)可以在数据包的报文头部分,目的mac和源mac之后,插入2个字节的报文类型标识TPID(通常为81
00)、和两个字节的VLAN号(包含优先级标示),用于实现区分数据流、分割广播域、标示报文优先级等功能。

近几年的笔记本电脑,尤其是带千兆以太网卡的电脑,所采用的千兆网卡不仅10/100/1000M自适应、直联/交叉自适应,而且网卡驱动会自动识别并剔除数据包中的vlan标记。功能是很强大的,但却给我们二层网络抓包的数据分析造成了不便之处。

解决方法:

1.修改网卡的注册表
2.设置允许PC抓取的vlan



注意事项:

此外,我在这里强调一下,vlan数据包有802.1Q封装的,还有ISL(思科私有)封装的。我们在此能抓的都指的是802.1Q封装的vlan数据包。



一、在PC上设置允许抓取的vlan

先介绍PC设置允许接入的vlan方法,但网卡的注册表没有改特定的参数值的话,还是无法抓取vlan的tag的。

由于不同网卡有不同的注册表修改方法,比较棘手,最后介绍,所以先介绍简单的:

steps:

1.首先,选择需要修改的网卡(以Intel网卡为例,其他的类似),右击进入“属性”
2.在网卡的属性中的“常规”栏下,选择“配置”
3.然后选择“VLAN”那一栏
4.在“VLAN”栏下选择“新建”
5.在弹出的“新VLAN”中,选择你需要虚拟的VLAN网卡,以便抓取该VLAN。
6.“新VLAN”中可以新建“未标记的VLAN”,就是抓取取出tag的报文,跟普通网卡一样
7.在新建过程中,电脑处理会比较慢,因为在虚拟此特定VLAN的网卡。如弹出这个对话框,点”仍然继续“
8.这就是电脑虚拟出来的专门的VLAN网卡,最多可以建64个(不同网卡可能不同)
9.在上图中,建立了一大堆VLAN虚拟网卡,很乱!所以,不用的VLAN虚拟网卡就请删掉:

右击主网卡的“属性”——“配置”——“VLAN”——选择vlan点击删除



二、修改网卡的注册表项
不同网卡需要修改不同的注册表项,先以Intel网卡为例:在windows系统下,通过修改注册表的方式,就可以让驱动保留 tag 。具体如下:

Intel PRO/1000或PRO/100网卡

对于Intel PRO/1000或PRO/100网卡, 需要将注册表

HKEY_LOCAL_MACHINE\

SYSTEM\

ControlSet001\

Control\

Class\

{4D36E972-E325-11CE-BFC1-08002BE10318}\

00xx下的MonitorModeEnabled 改为1,

如果不存在则新建这么一个d word键。(上述ControlSet001也可能是或者后接002~00x等其他数值)

具体步骤:

1.打开“运行”,输入regedit,进入注册表
2.找到注册表中的 HKEY_LOCAL_MACHINE
3.在注册表 HKEY_LOCAL_MACHINE下找到SYSTEM
4.在注册表
HKEY_LOCAL_MACHINE——SYSTEM下找到ControlSet001(可能还有ControlSet002、0ControlSet03、ControlSet004、ControlSet005……有多个的话,接下的步骤就要回到此重复即可)

5.在ControlSet001下找到Control(ControlSet002、ControlSet003……也如此)
6.在Control下找到Class
7.在Class下搜索 {4D36E972-E325-11CE-BFC1-08002BE10318}
8.在{4D36E972-E325-11CE-BFC1-08002BE10318}下的0000等目录下找到要修改的以太网卡
9.在该以太网卡下新建字符串值:
10.添加 MonitorModeEnabled 值为 1
11.在{4D36E972-E325-11CE-BFC1-08002BE10318}下的0000——0022寻找需要抓vlan的网卡,重复新建字符串值
MonitorModeEnabled = 1

12.在ControlSet002、ControlSet003……下重复此步骤


于千兆网卡


对于千兆网卡,需要在注册表里增加一项=1,类型为string(字符串值)。位置与相同,后者可以在

HKEY_LOCAL_MACHINE\SYSTEM\下搜索到,各个电脑不同,例如我的电脑就是在

HKEY_LOCAL_MACHINE\SYSTEM\Control\Class\
{4D36E972-E325-11CE-BFC1-08002bE10318}\0009下。

修改后需要重启机器让它生效。然后抓包就可以看到802.1Q VLAN标记了。该方法在 User
Manual中可以搜到,较新的网卡驱动里都支持这个设置。

注:这样修改的一个后遗症就是,原来这些网卡接某些交换机的tag口是直接能通的(前提是端口 =
相应),这样改了以后,tag标记底层不过滤,交给上层软件处理,windows本身不会去识别,于是就不通了。



====================其他====================

Broadcom netXtreme 57XX Gigabite网卡

针对Broadcom netXtreme 57XX Gigabite网卡(dell
PC机上大多配置此种网卡,支持802.1q),通过设置可以抓取到报文的vlan tag。

启用网卡802.1q功能

右键点击网卡选择属性,选择配置-高级-802.1q,选enable,确定;



修改注册表

打开注册表,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet中查找在TxCoalescingTicks字符串,在相同目录下创建PreserveVlanInfoInRxPacket字符串,值设置为1;



修改完成后重启电脑;

用wireshark抓取数据包,可以看到报文中显示VLAN TAG;


From:https://www.douban.com/note/254431793/

posted @ 2016-09-27 00:47  cloudren2020  阅读(628)  评论(0编辑  收藏  举报