PC获取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的。

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

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;

原文链接:http://longof.com/%E7%94%A8pc%E6%8A%93vlan%E6%8A%A5%E6%96%87.html

posted @ 2016-08-21 22:40  cloudren2020  阅读(685)  评论(0编辑  收藏  举报