关键词 :

AVB, 802.1Q, VLAN, scapy,python,pycharm,uBuntu

目的:测试中需要测试7个网卡,独立收、发802.1q的帧。

平台:不限(目前在Ubuntu 14.04上实现,windows上没有实现)

目前实现的配置:Ubuntu 14.04+Pycharm Community 2016.1+Python 2.7.6+scapy 2.3.2。

经过一番折腾,终于有结果了。过程很曲折,记录下来,以备以后翻阅。

阶段1:远离windows

网上查阅,发现scapy可以实现通过网卡收、发帧,需要基于python。

开始是在windows 7上,Eclipse+PyDev,运行时提示:IPv6不支持,而且发现用scapy无法实现收发802.1q的帧。

经过网上查阅,发现该问题从2012年就有人提交了问题,scapy在windows下目前不支持ip v6的相关操作(后来的实现也没有用到ipv6,而是用的ipv4)。

以后预计在scapy 3.0后会修改,不过会支持windows 10以后版本,windows 7不支持。

不过,不能收发802.1q帧的问题重点其实不在这里,而是windows不支持直接操作网卡。

所以,只好转到Ubuntu。

阶段2:远离windows下的虚拟机

转Ubuntu,第一想法是用虚拟机,我采用了virtualBox虚拟机,安装了Ubuntu14.04LTS。

终端运行python,发现版本是2.7.6,符合要求。

安装scapy。

安装pycharm。

这时,可能会提示需要安装相应版本的JDK,具体安装另见“JDK的安装”。

JDK是必需的,而且相应版本要安装正确,pycham需要JDK 8.

pycharm下编辑python程序:发送802.1Q帧

from scapy.all import *

sendp(Ether(dst=“(目标网卡MAC地址)”,src="(发送源网卡MAC地址)") /Dot1Q(vlan=1,id=3,prio=2,type=0x22f0))

网卡的MAC地址在windows下可以通过ping命令查到,在Ubuntu下也可以通过ping命令查询到,也可以“系统设置”-“网络”-“有线”-“硬件地址”,直接看到。

另准备一台windows PC,安装wireshark,可以监测到ubuntu发出来的802.1q帧。

但是如果再接一个网卡,我用的是UGREEN的USB2Eth网卡,问题就来了:同一时间只能有一个网卡发送成功。

经过查询,VM中同一时间只能有一个网卡“桥接”方式有效,而我需要同时连接7个网卡呢。

所以,只好抛弃VM。

阶段3:2个网卡Tx帧成功,Rx的帧无VLAN tag

幸好,有台机器是uBuntu,还安装了mate桌面(坑,找不到设置),虽然版本是12.04,经过周末2个多小时的升级过程,升级到了14.04,mate被抹掉了.

添加root用户,重启,登陆。

检查python,版本是2.7.6,够用.

安装scapy,安装JDK。

安装pycharm。

重复前面的帧发送程序,从eth0发送,另一台PC运行wireshark监测,成功。

修改前面的帧发送程序,从eth1发送,另一台PC运行wireshark监测,成功。

pycharm下编辑python程序:接收802.1Q帧

from scapy.all import *

sniff(filter="ether proto 0x8100", prn=lambda x: x.show(), count=1,timeout=20)

运行程序监测接收数据,从另一台PC运行ostinato发送802.1Q数据,发现接收的数据缺少4个VLAN tag字节(0x8100,priority,VLAN ID)。

阶段4:找回缺失的VLAN tag

windows下用wireshark监测数据时,曾经出现过不显示VLAN tag的问题,通过网卡的高级属性,设置“Priority and VLAN tag”为disabled,就可以显示VLAN tag。

还用这个思路,在ubuntu下不知道如何设置网卡属性。

查阅结果发现,是linux kernel把VLAN tag给stripped(移除)了,因为它认为0x8100是标准的,没有人需要该信息,可是我需要呀。

用tcpdump命令发现,监视到0x8100字样的VLAN tag存在。

终于搜到一个帖子(如下,我加了一些安装信息)提示安装pcap或pcappy,因为它们采用和tcpdump同样的方法:重建VLAN tag。

Does anyone know why scapy is unable to capture (parse?) the vlan frame, but tcpdump sees it fine ?

Based on RyPeck's answer and GuyHarris's advice, I now have a much better workaround:

a) Using http://sourceforge.net/projects/pylibpcap/

import pcap

conf.use_pcap=True

Linux下安装pylibpcap模块

1. 安装libpcap

apt-get install libpcap-dev

2.安装python的dev版,否则安装pylibpcap出错

apt-get install python-dev

3.安装python pcap模块

下载pylibpcap-0.6.2.tar.gz并解压,执行python setup.py install

4. 去pylibpcap-0.6.2/examples执行测试脚本

python sniff.py eth0 'port80'

b) Using pcappy - which is can be installed with: pip install pcappy

import pcappy as pcap

conf.use_pcap=True

Now scapy shows the same vlan information as tcpdump, with all it's great parsing features intact!

安装setuptools

wget https://bootstrap.pypa.io/ez_setup.py -0 - | python

easy_install -i https://pypi.python.org/pypi/pcappy pcappy (easy_install pcappy会出错,缺省网址变了)

运行程序准备接收,从另一台PC运行ostinato发送802.1Q数据。 带VLAN tag字节(0x8100,priority,VLAN ID)的帧数据终于被收到了,而且两个网卡都可以正常Tx & Rx了。

总结:

1. scapy对windows支持不好,尤其是windows7以下。

2. windows下很难以administrator权限操作网卡。

3. VM下只能有一个网卡作用于桥接方式。

4. 需要pcap或pcappy重建被linux kernel移除的VLAN tag。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

linux 怎么更新 8021q模块,在ubuntu14.04上实现收发VLAN(802.1Q)帧相关推荐

  1. 如何在ubuntu14.04上安装轻量级的Budgie桌面(v8)

    如何在ubuntu14.04上安装轻量级的Budgie桌面(v8) Budgie是为Linux发行版定制的旗舰桌面,也是一个定制工程.为思想前卫的用户设计,致力于简单和简洁.它的一个巨大优势是它不是别 ...

  2. 在Ubuntu14.04上安装UberWriterMarkdown编辑器

    在Ubuntu14.04上安装UberWriterMarkdown编辑器 这是一篇快速教程指导我们如何通过官方的PPA源在Ubuntu14.04上安装UberWriter编辑器. UberWriter ...

  3. yum方式安装android_在CentOS 7和Ubuntu14.04上安装Android Studio

    先介绍在CentOS 7的安装过程,再介绍Ubuntu14.04上的安装过程: 1.卸载OpenJDK,下载JDK最新版本,然后安装: rpm -qa | grep java rpm -e --nod ...

  4. Ubuntu14.04上安装calamari

    Ubuntu14.04上安装calamari Ubuntu1404上安装calamari 1添加calamari源和key 2添加saltstack 2014-7 PPA 3更新source list ...

  5. Ubuntu14.04上安装TensorRT 2.1操作步骤

    在Ubuntu14.04 上安装TensorRT2.1有两种方法:(1).通过.deb直接安装:(2).通过Tar文件安装.这里通过Tar文件安装. 安装步骤: 1. 安装CUDA 8.0,可参考:  ...

  6. Ubuntu14.04上编译指定版本的protobuf源码操作步骤

    Google Protobuf的介绍可以参考 http://blog.csdn.net/fengbingchun/article/details/49977903 ,这里介绍在Ubuntu14.04上 ...

  7. 【Qt】在ubuntu14.04上安装Qt5.12(失败)

    注意 在ubuntu14.04上安装Qt5.12最终失败了,Qt5.12需要的libdbus库的版本和ubuntu14.04中的不一致,如果强行升级libdbus库版本,会导致系统桌面无法启动. 再次 ...

  8. Ubuntu14.04上安装tftpd服务

    准备在自己的Ubuntu14.04上使用tftpd服务,然后在网上查怎么搞,方法很多蛋疼得一米,按照这些方式,配置一大堆,尤其是有人要求安装xinetd,然后还要配置这个xinetd.conf文件,事 ...

  9. Linux 学习笔记 (四)Ubuntu14.04 解决上网问题安装无线网卡驱动

    闲来无事有时候又想熟悉熟悉Linux各种指令.写写shell 脚本,虽然现在各种云主机硬件以及软件非常的火爆,各个大的厂商都在推出自己的硬件服务,比如百度.阿里.360.IBM等等都推出了自己的云服务 ...

最新文章

  1. 最新Java中Date类型详解
  2. CodeFirst 的编程方式
  3. SessionID 的本质
  4. php 做积分策略,积分策略
  5. [C++STL]queue容器用法介绍
  6. Shell 企业29道面试题 [转]
  7. cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
  8. 海康视频WEB插件 V1.5.2 开发总结
  9. python地理位置聚类_python实现地理位置的聚类
  10. 前锋java退学_曾经的第一高中生为打CBA从清华大学退学,本赛季场均仅3.1分!...
  11. Excel 如何引用某表格中的某一列作为数据有效性验证
  12. 什么是make/Makefile?
  13. uni.showToast(OBJECT)消息提示框
  14. 小程序添加关注公众号代码功能
  15. 迄今为止最深刻分析家乐福的文章—从商业模式、公司制度、公司文化三方面
  16. 时间序列多步预测的五种策略
  17. 计算机会计的专业知识,会计从业《会计电算化》基础知识:固定资产模块日常处理...
  18. 原生JS封装分页器组件
  19. 线性回归一些基本术语
  20. 太极框架阴阳之门(设备管理员)激活的种种困难

热门文章

  1. 5个超实用视频素材网站,免费下载~
  2. 基于深度学习的视频检测(三) 目标跟踪
  3. 金旭亮老师网易MOOC课程目录
  4. 业务流程管理系统(BPMS)
  5. CSDN、博客园、简书、oschina区别
  6. 思科计算机第七章答案,CCNA第七章 访问控制列表 练习
  7. FCPX插件:弹性文字标题动画CineFlare ObjectAnimator
  8. android版问道手游下载地址,问道手游官方版_问道安卓最新版下载安装-太平洋下载中心...
  9. 日本历史简表及历代天皇名录时间表
  10. IBM SPSS Statistics Subscription新版本发布