本篇文章給大家分享的是有關(guān)如何解析Linux tun/tap,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司主營昌圖網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,昌圖h5重慶小程序開發(fā)公司搭建,昌圖網(wǎng)站營銷推廣歡迎昌圖等地區(qū)企業(yè)咨詢
> 在計算機網(wǎng)絡(luò)中,tun與tap是操作系統(tǒng)內(nèi)核中的虛擬網(wǎng)絡(luò)設(shè)備。不同于普通靠硬件網(wǎng)絡(luò)適配器實現(xiàn)的設(shè)備,這些虛擬的網(wǎng)絡(luò)設(shè)備全部用軟件實現(xiàn),并向運行于操作系統(tǒng)上的軟件提供與硬件的網(wǎng)絡(luò)設(shè)備完全相同的功能。
tun是網(wǎng)絡(luò)層的虛擬網(wǎng)絡(luò)設(shè)備,可以收發(fā)第三層數(shù)據(jù)報文包,如IP封包,因此常用于一些點對點IP隧道,例如OpenVPN,IPSec等。
tap是鏈路層的虛擬網(wǎng)絡(luò)設(shè)備,等同于一個以太網(wǎng)設(shè)備,它可以收發(fā)第二層數(shù)據(jù)報文包,如以太網(wǎng)數(shù)據(jù)幀。Tap最常見的用途就是做為虛擬機的網(wǎng)卡,因為它和普通的物理網(wǎng)卡更加相近,也經(jīng)常用作普通機器的虛擬網(wǎng)卡。
Linux tun/tap可以通過網(wǎng)絡(luò)接口和字符設(shè)備兩種方式進行操作。
當應(yīng)用程序使用標準網(wǎng)絡(luò)接口socket API操作tun/tap設(shè)備時,和操作一個真實網(wǎng)卡無異。
當應(yīng)用程序使用字符設(shè)備操作tun/tap設(shè)備時,字符設(shè)備即充當了用戶空間和內(nèi)核空間的橋梁直接讀寫二層或三層的數(shù)據(jù)報文。在 Linux 內(nèi)核 2.6.x 之后的版本中,tun/tap 對應(yīng)的字符設(shè)備文件分別為:
tun:/dev/net/tun tap:/dev/tap0
當應(yīng)用程序打開字符設(shè)備時,系統(tǒng)會自動創(chuàng)建對應(yīng)的虛擬設(shè)備接口,一般以tunX和tapX方式命名,虛擬設(shè)備接口創(chuàng)建成功后,可以為其配置IP、MAC地址、路由等。當一切配置完畢,應(yīng)用程序通過此字符文件設(shè)備寫入IP封包或以太網(wǎng)數(shù)據(jù)幀,tun/tap的驅(qū)動程序會將數(shù)據(jù)報文直接發(fā)送到內(nèi)核空間,內(nèi)核空間收到數(shù)據(jù)后再交給系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧進行處理,最后網(wǎng)絡(luò)協(xié)議棧選擇合適的物理網(wǎng)卡將其發(fā)出,到此發(fā)送流程完成。而物理網(wǎng)卡收到數(shù)據(jù)報文時會交給網(wǎng)絡(luò)協(xié)議棧進行處理,網(wǎng)絡(luò)協(xié)議棧匹配判斷之后通過tun/tap的驅(qū)動程序?qū)?shù)據(jù)報文原封不動的寫入到字符設(shè)備上,應(yīng)用程序從字符設(shè)備上讀取到IP封包或以太網(wǎng)數(shù)據(jù)幀,最后進行相應(yīng)的處理,收取流程完成。
> 注意:當應(yīng)用程序關(guān)閉字符設(shè)備時,系統(tǒng)也會自動刪除對應(yīng)的虛擬設(shè)備接口,并且會刪除掉創(chuàng)建的路由等信息。
tun/tap 雖然工作原理一致,但是工作的層次不一樣。
tun是三層網(wǎng)絡(luò)設(shè)備,收發(fā)的是IP層數(shù)據(jù)包,無法處理以太網(wǎng)數(shù)據(jù)幀,例如OpenVPN的路由模式就是使用了tun網(wǎng)絡(luò)設(shè)備,OpenVPN Server重新規(guī)劃了一個網(wǎng)段,所有的客戶端都會獲取到該網(wǎng)段下的一個IP,并且會添加對應(yīng)的路由規(guī)則,而客戶端與目標機器產(chǎn)生的數(shù)據(jù)報文都要經(jīng)過OpenVPN網(wǎng)關(guān)才能轉(zhuǎn)發(fā)。
tap是二層網(wǎng)絡(luò)設(shè)備,收發(fā)以太網(wǎng)數(shù)據(jù)幀,擁有MAC層的功能,可以和物理網(wǎng)卡通過網(wǎng)橋相連,組成一個二層網(wǎng)絡(luò)。例如OpenVPN的橋接模式可以從外部打一條隧道到本地網(wǎng)絡(luò)。進來的機器就像本地的機器一樣參與通訊,絲毫看不出這些機器是在遠程。如果你有使用過虛擬機的經(jīng)驗,橋接模式也是一種十分常見的網(wǎng)絡(luò)方案,虛擬機會分配到和宿主機器同網(wǎng)段的IP,其他同網(wǎng)段的機器也可以通過網(wǎng)絡(luò)訪問到這臺虛擬機。
Linux 提供了一些命令行程序方便我們來創(chuàng)建持久化的tun/tap設(shè)備,但是如果沒有應(yīng)用程序打開對應(yīng)的文件描述符,tun/tap的狀態(tài)一直會是DOWN,還好的是這并不會影響我們把它當作普通網(wǎng)卡去使用。
使用ip tuntap help查看使用幫助
Usage: ip tuntap { add | del | show | list | lst | help } [ dev PHYS_DEV ]
[ mode { tun | tap } ] [ user USER ] [ group GROUP ]
[ one_queue ] [ pi ] [ vnet_hdr ] [ multi_queue ] [ name NAME ]
Where: USER := { STRING | NUMBER }
GROUP := { STRING | NUMBER }# 創(chuàng)建 tap ip tuntap add dev tap0 mode tap # 創(chuàng)建 tun ip tuntap add dev tun0 mode tun # 刪除 tap ip tuntap del dev tap0 mode tap # 刪除 tun ip tuntap del dev tun0 mode tun
tun/tap 設(shè)備創(chuàng)建成功后可以當作普通的網(wǎng)卡一樣使用,因此我們也可以通過ip link命令來操作它。
# 例如使用ip link命令也可以刪除tun/tap設(shè)備 ip link del tap0 ip link del tun0
以上就是如何解析Linux tun/tap,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標題:如何解析Linuxtun/tap
轉(zhuǎn)載來源:http://www.chinadenli.net/article10/jdhigo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、企業(yè)建站、網(wǎng)站營銷、網(wǎng)站制作、品牌網(wǎng)站制作、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)