日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發(fā)布時間:2024/1/1 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 怎么更新 8021q模块,在ubuntu14.04上实现收发VLAN(802.1Q)帧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)鍵詞 :

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

目的:測試中需要測試7個網(wǎng)卡,獨立收、發(fā)802.1q的幀。

平臺:不限(目前在Ubuntu 14.04上實現(xiàn),windows上沒有實現(xiàn))

目前實現(xiàn)的配置:Ubuntu 14.04+Pycharm Community 2016.1+Python 2.7.6+scapy 2.3.2。

經(jīng)過一番折騰,終于有結(jié)果了。過程很曲折,記錄下來,以備以后翻閱。

階段1:遠離windows

網(wǎng)上查閱,發(fā)現(xiàn)scapy可以實現(xiàn)通過網(wǎng)卡收、發(fā)幀,需要基于python。

開始是在windows 7上,Eclipse+PyDev,運行時提示:IPv6不支持,而且發(fā)現(xiàn)用scapy無法實現(xiàn)收發(fā)802.1q的幀。

經(jīng)過網(wǎng)上查閱,發(fā)現(xiàn)該問題從2012年就有人提交了問題,scapy在windows下目前不支持ip v6的相關(guān)操作(后來的實現(xiàn)也沒有用到ipv6,而是用的ipv4)。

以后預(yù)計在scapy 3.0后會修改,不過會支持windows 10以后版本,windows 7不支持。

不過,不能收發(fā)802.1q幀的問題重點其實不在這里,而是windows不支持直接操作網(wǎng)卡。

所以,只好轉(zhuǎn)到Ubuntu。

階段2:遠離windows下的虛擬機

轉(zhuǎn)Ubuntu,第一想法是用虛擬機,我采用了virtualBox虛擬機,安裝了Ubuntu14.04LTS。

終端運行python,發(fā)現(xiàn)版本是2.7.6,符合要求。

安裝scapy。

安裝pycharm。

這時,可能會提示需要安裝相應(yīng)版本的JDK,具體安裝另見“JDK的安裝”。

JDK是必需的,而且相應(yīng)版本要安裝正確,pycham需要JDK 8.

pycharm下編輯python程序:發(fā)送802.1Q幀

from scapy.all import *

sendp(Ether(dst=“(目標網(wǎng)卡MAC地址)”,src="(發(fā)送源網(wǎng)卡MAC地址)")?/Dot1Q(vlan=1,id=3,prio=2,type=0x22f0))

網(wǎng)卡的MAC地址在windows下可以通過ping命令查到,在Ubuntu下也可以通過ping命令查詢到,也可以“系統(tǒng)設(shè)置”-“網(wǎng)絡(luò)”-“有線”-“硬件地址”,直接看到。

另準備一臺windows PC,安裝wireshark,可以監(jiān)測到ubuntu發(fā)出來的802.1q幀。

但是如果再接一個網(wǎng)卡,我用的是UGREEN的USB2Eth網(wǎng)卡,問題就來了:同一時間只能有一個網(wǎng)卡發(fā)送成功。

經(jīng)過查詢,VM中同一時間只能有一個網(wǎng)卡“橋接”方式有效,而我需要同時連接7個網(wǎng)卡呢。

所以,只好拋棄VM。

階段3:2個網(wǎng)卡Tx幀成功,Rx的幀無VLAN tag

幸好,有臺機器是uBuntu,還安裝了mate桌面(坑,找不到設(shè)置),雖然版本是12.04,經(jīng)過周末2個多小時的升級過程,升級到了14.04,mate被抹掉了.

添加root用戶,重啟,登陸。

檢查python,版本是2.7.6,夠用.

安裝scapy,安裝JDK。

安裝pycharm。

重復(fù)前面的幀發(fā)送程序,從eth0發(fā)送,另一臺PC運行wireshark監(jiān)測,成功。

修改前面的幀發(fā)送程序,從eth1發(fā)送,另一臺PC運行wireshark監(jiān)測,成功。

pycharm下編輯python程序:接收802.1Q幀

from scapy.all import *

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

運行程序監(jiān)測接收數(shù)據(jù),從另一臺PC運行ostinato發(fā)送802.1Q數(shù)據(jù),發(fā)現(xiàn)接收的數(shù)據(jù)缺少4個VLAN tag字節(jié)(0x8100,priority,VLAN ID)。

階段4:找回缺失的VLAN tag

windows下用wireshark監(jiān)測數(shù)據(jù)時,曾經(jīng)出現(xiàn)過不顯示VLAN tag的問題,通過網(wǎng)卡的高級屬性,設(shè)置“Priority and VLAN tag”為disabled,就可以顯示VLAN tag。

還用這個思路,在ubuntu下不知道如何設(shè)置網(wǎng)卡屬性。

查閱結(jié)果發(fā)現(xiàn),是linux kernel把VLAN tag給stripped(移除)了,因為它認為0x8100是標準的,沒有人需要該信息,可是我需要呀。

用tcpdump命令發(fā)現(xiàn),監(jiān)視到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并解壓,執(zhí)行python setup.py install

4. 去pylibpcap-0.6.2/examples執(zhí)行測試腳本

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會出錯,缺省網(wǎng)址變了)

運行程序準備接收,從另一臺PC運行ostinato發(fā)送802.1Q數(shù)據(jù)。 帶VLAN tag字節(jié)(0x8100,priority,VLAN ID)的幀數(shù)據(jù)終于被收到了,而且兩個網(wǎng)卡都可以正常Tx & Rx了。

總結(jié):

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

2. windows下很難以administrator權(quán)限操作網(wǎng)卡。

3. VM下只能有一個網(wǎng)卡作用于橋接方式。

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

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

總結(jié)

以上是生活随笔為你收集整理的linux 怎么更新 8021q模块,在ubuntu14.04上实现收发VLAN(802.1Q)帧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。