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

关键词 :

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。

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ubuntu-14.04-desktop-amd64.iso 是Ubuntu 14.04版本的桌面操作系统的镜像文件。这是一个64位的版本,适用于AMD架构的处理器。 Ubuntu 14.04Ubuntu操作系统系列的一个版本,也称为Trusty Tahr。该版本是一个长期支持(LTS)版本,提供了5年的支持。它在2014年4月发布,并在2019年4月停止了官方支持。 该桌面版的Ubuntu 14.04带有图形化用户界面,使用户可以轻松地使用操作系统。它提供了许多常用的桌面应用程序,如文本编辑器、文件管理器、网络浏览器、多媒体播放器等。此外,它还支持许多其他应用程序和可自定义的主题,用户可以根据自己的喜好进行个性化设置。 除了桌面应用程序之外,Ubuntu 14.04还提供了许多开发工具和服务,如Python、Java、GCC编译器、Apache服务器等。这使得开发人员可以在Ubuntu操作系统上进行软件开发和部署。 通过下载ubuntu-14.04-desktop-amd64.iso镜像文件,用户可以创建一个可启动的安装介质,以安装Ubuntu 14.04桌面操作系统。用户可以将该镜像文件刻录到光盘上,或者使用USB驱动器创建一个可启动的USB安装介质。 总之,ubuntu-14.04-desktop-amd64.iso是一个Ubuntu 14.04桌面操作系统的镜像文件,它可以让用户轻松安装和使用这个操作系统,并提供了丰富的桌面应用程序和开发工具。 ### 回答2: ubuntu-14.04-desktop-amd64.iso 是 Ubuntu 的一个版本。Ubuntu 是一个开源的操作系统,具有易用性和稳定性,是最流行的 Linux 发行版之一。 这个版本的 Ubuntu 是专为桌面电脑和笔记本电脑设计的,适用于使用 AMD64 架构的处理器。该版本的 Ubuntu 基于长期支持(LTS)版本,提供长达5年的更新和支持。14.04 代表了版本的发布年份和月份,即2014年的第4个月份。 ubuntu-14.04-desktop-amd64.iso 文件是一个镜像文件,可以用来创建一个可启动的 Ubuntu 安装介质,如光盘或 USB 驱动器。您可以使用该镜像文件来安装 Ubuntu 14.04 操作系统,或者作为一个独立的系统运行。 Ubuntu 14.04 Desktop 版本提供了一个直观和易用的桌面环境,名为 Unity。它具有类似于 Windows 的任务栏和开始菜单,并提供一些有用的应用程序和工具,如图形化安装程序、文本编辑器、网页浏览器、办公套件等。 安装 Ubuntu 14.04 Desktop 是一个简单的过程,只需将镜像文件刻录到光盘或将其写入 USB 驱动器,并从该介质启动计算机。然后,您可以按照安装向导的指导进行操作。 总之,ubuntu-14.04-desktop-amd64.iso 是 Ubuntu 14.04 的一个镜像文件,适用于桌面电脑和笔记本电脑,并为使用 AMD64 架构处理器的计算机提供稳定和易用的操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值