中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析Linux tun/tap

發布時間:2021-10-21 17:05:34 來源:億速云 閱讀:264 作者:柒染 欄目:云計算

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

Linux tun/tap 詳解

> 在計算機網絡中,tuntap是操作系統內核中的虛擬網絡設備。不同于普通靠硬件網絡適配器實現的設備,這些虛擬的網絡設備全部用軟件實現,并向運行于操作系統上的軟件提供與硬件的網絡設備完全相同的功能。

tun/tap是什么?

tun是網絡層的虛擬網絡設備,可以收發第三層數據報文包,如IP封包,因此常用于一些點對點IP隧道,例如OpenVPN,IPSec等。

tap是鏈路層的虛擬網絡設備,等同于一個以太網設備,它可以收發第二層數據報文包,如以太網數據幀。Tap最常見的用途就是做為虛擬機的網卡,因為它和普通的物理網卡更加相近,也經常用作普通機器的虛擬網卡。

如何操作tun/tap?

Linux tun/tap可以通過網絡接口和字符設備兩種方式進行操作。

當應用程序使用標準網絡接口socket API操作tun/tap設備時,和操作一個真實網卡無異。

當應用程序使用字符設備操作tun/tap設備時,字符設備即充當了用戶空間和內核空間的橋梁直接讀寫二層或三層的數據報文。在 Linux 內核 2.6.x 之后的版本中,tun/tap 對應的字符設備文件分別為:

tun:/dev/net/tun
tap:/dev/tap0

當應用程序打開字符設備時,系統會自動創建對應的虛擬設備接口,一般以tunX和tapX方式命名,虛擬設備接口創建成功后,可以為其配置IP、MAC地址、路由等。當一切配置完畢,應用程序通過此字符文件設備寫入IP封包或以太網數據幀,tun/tap的驅動程序會將數據報文直接發送到內核空間,內核空間收到數據后再交給系統的網絡協議棧進行處理,最后網絡協議棧選擇合適的物理網卡將其發出,到此發送流程完成。而物理網卡收到數據報文時會交給網絡協議棧進行處理,網絡協議棧匹配判斷之后通過tun/tap的驅動程序將數據報文原封不動的寫入到字符設備上,應用程序從字符設備上讀取到IP封包或以太網數據幀,最后進行相應的處理,收取流程完成。

> 注意:當應用程序關閉字符設備時,系統也會自動刪除對應的虛擬設備接口,并且會刪除掉創建的路由等信息。

tun/tap的區別

tun/tap 雖然工作原理一致,但是工作的層次不一樣。

tun是三層網絡設備,收發的是IP層數據包,無法處理以太網數據幀,例如OpenVPN的路由模式就是使用了tun網絡設備,OpenVPN Server重新規劃了一個網段,所有的客戶端都會獲取到該網段下的一個IP,并且會添加對應的路由規則,而客戶端與目標機器產生的數據報文都要經過OpenVPN網關才能轉發。

tap是二層網絡設備,收發以太網數據幀,擁有MAC層的功能,可以和物理網卡通過網橋相連,組成一個二層網絡。例如OpenVPN的橋接模式可以從外部打一條隧道到本地網絡。進來的機器就像本地的機器一樣參與通訊,絲毫看不出這些機器是在遠程。如果你有使用過虛擬機的經驗,橋接模式也是一種十分常見的網絡方案,虛擬機會分配到和宿主機器同網段的IP,其他同網段的機器也可以通過網絡訪問到這臺虛擬機。

使用方式

Linux 提供了一些命令行程序方便我們來創建持久化的tun/tap設備,但是如果沒有應用程序打開對應的文件描述符,tun/tap的狀態一直會是DOWN,還好的是這并不會影響我們把它當作普通網卡去使用。

使用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 }

示例

# 創建 tap 
ip tuntap add dev tap0 mode tap 
# 創建 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 設備創建成功后可以當作普通的網卡一樣使用,因此我們也可以通過ip link命令來操作它。

# 例如使用ip link命令也可以刪除tun/tap設備
ip link del tap0
ip link del tun0

以上就是如何解析Linux tun/tap,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

咸宁市| 会东县| 玉田县| 城步| 前郭尔| 杭锦后旗| 鄱阳县| 梁山县| 蓬莱市| 东乡县| 永丰县| 武邑县| 旺苍县| 兴和县| 江油市| 阳东县| 临漳县| 通化县| 周宁县| 浦北县| 简阳市| 平昌县| 府谷县| 马公市| 大连市| 石狮市| 商都县| 娄烦县| 贺兰县| 通道| 江门市| 夏津县| 松溪县| 双辽市| 大城县| 黄平县| 汉川市| 昌平区| 射洪县| 阳城县| 休宁县|