笔记本电脑设置抓带Vlan包标签的方法
一、 问题的提出
VLAN tag是在802.1Q中定义的标签,带VLAN tag的报文头格式如下: 01 0c cd 01 00 01 00 01 7a 01 00 52 81 00 00 00
? 其中 81 00为TPID,即表明此数据包为带802.1Q/802.1P标签的数据包;
? 接下去的00 00为TCI(标签控制信息字段),表示为二进制共有16位,其中前3位为优先级,第4
位为CFI,通常为0,第5-16位为VLAN ID,VLAN ID为0用于识别帧优先级。
某一些网卡驱动默认会在接收数据包的时候过滤vlan tag,使得用MMS-ethereal或者wireshark抓到的数据包中不含vlan tag,此时需要通过修改注册表让驱动保留vlan tag。
二、解决办法
笔记本电脑的网卡一般为Intel PRO/1000或PRO/100网卡,对于此类网卡需要将注册表:HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\00xx,如果该目录下有多个子项,需要找到自己的网卡对应的子项(其中DriverDesc是设备类型)。
对于Intel系列网卡,如果是PCI或者PCI-X的网卡新建名字为: MonitorModeEnabled;如果是PCI-E的网卡新建名字为: MonitorMode。
MonitorMode或者 MonitorModeEnabled的设置值的区别: 设为0 – 表示剥离tag; 设为1 – 表示保留tag。
一般情况下使用 MonitorMode=1 或者 MonitorModeEnabled=1就行了
电脑重启后,抓到的包中就有VLAN标签了。如果原配的网卡驱动版本比较低,如果有抓包需要的建议先升级网卡驱动程序。
对于Broadcom(博通)千兆网卡,需要在注册表里增加一项PreserveVlanInfoInRxPacket=1,类型为string。位置与TxCoalescingTicks相同,后者可以在
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet下搜索到。修改后需要重启机器让它生效。
操作示例:
我的电脑网卡为Intel(R) Ethernet Connection I217-V,需要找到这块网卡所在的位置,如下图:路径:
HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0014
精选
将该子项中的MonitorMode的数据改为1,如果不存在则新建这么一个DWORD键。 新建过程如下:
在注册表编辑菜单新建一个DWORD类型:名称设置为MonitorMode,并将其键值设置为 1 。
精选
最终结果如下:
带VLAN号的GOOSE报文示例:
精选