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

歡迎訪問 生活随笔!

生活随笔

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

linux

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

發布時間:2024/1/1 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。

*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。