TUN/TAP 設備是 VPN 客戶端用來建立物理網絡連接的虛擬實例的虛擬接口。
儘管彼此略有不同(因為它們工作在不同的網絡層),TUN 和 TAP 設備的功能都是將數據從一台主機傳遞到另一台主機。
與系統中的常規網絡設備(通過以太網電纜路由數據包的物理設備)不同,TUN/TAP 是一個完全虛擬的接口,它模擬操作系統內核(操作系統的一部分,在設備內存中始終處於活動狀態,並完全控制系統中的所有內容)內的物理連接。
TUN/TAP 的優點是用戶空間應用程序(例如 VPN 客戶端)可以與這些設備進行交互,就像它們是真實的一樣。這允許操作系統根據需要將數據包注入到常規網絡堆棧中,從而使數據來回傳遞,就像正在使用物理網絡設備一樣。
儘管非常相似,Tun 和 Tap 設備的設計目的是在內核中實現不同的功能。提供 OpenVPN 的 VPN 客戶端主要使用 TUN 設備 – 這就是為什麼在安裝階段OpenVPN 客戶端通常包括 TUN/TAP 驅動程序的安裝。
下面,我們將仔細研究這兩個虛擬接口,以解釋每個設備的功能以及它如何允許 VPN 連接發生。
TUN接口
TUN 設備是在網絡堆棧的第三層(IP 層)工作的虛擬點對點連接。 VPN 客戶端通常使用它們在客戶端和操作系統網絡堆棧之間建立連接。這允許VPN 加密您的數據然後通過隧道將其轉發到 VPN 服務器。
由於 TUN 工作在網絡堆棧的第三層,因此它專門處理網絡協議數據包(IPv4 和 IPv6 數據包)。更重要的是,由於TUN設備位於第三層,因此它們只能用於路由(不能用於橋接)。
分路接口
TAP 接口工作在網絡堆棧的第二層(數據鏈路層),如果您想要傳輸基於非 IP 的流量以及想要進行橋接,那麼 TAP 接口是必需的。
TAP 設備的優點在於,儘管是虛擬的,但它們的操作和行為就像真實的網絡適配器一樣,並且可以傳輸任何網絡協議(IPv4、IPv6、Netalk、IPX 等)和以太網幀。
TUN/TAP 驅動程序如何提供 VPN 連接?
VPN 客戶端使用 TUN 和 TAP 設備來建立隧道。如果沒有這些虛擬設備的驅動程序,VPN 客戶端加密的數據將無法從客戶端移動到網絡堆棧。對於 VPN,TAP 用於承載以太網幀並進行橋接,TUN 用於承載 IP 數據包(路由)。
值得注意的是,TUN/TAP 設備僅由某些 VPN 協議使用(例如 OpenVPN 和線衛)而不是其他(例如 IKEv2)。
在實踐中,TAP 設備用於創建用戶空間網橋,並充當交換機。另一方面,TUN 設備用於通過 VPN 隧道路由數據包。這使得 TUN 設備成為兩者中最常用的設備,因為 VPN 客戶端使用它來將加密數據傳遞到VPN隧道。
為了使 TAP 和 TUN 設備正常工作,它們需要您的系統上存在驅動程序/適配器。好消息是,當您安裝 VPN 客戶端時,VPN 客戶端會為您安裝 TUN/TAP 驅動程序。因此,您很少需要了解這些設備,或者擔心它們。
也就是說,隨著時間的推移,安裝了各種 VPN 客戶端的用戶可能會開始遇到由於存在多個 TAP 適配器而導致的錯誤。在這種情況下,最好卸載系統中已有的所有舊 VPN 客戶端和 TUN/TAP 驅動程序。之後,只需再次安裝新的 VPN 客戶端,並且必要的驅動程序應該以完全正常運行的方式安裝。
當 VPN 安裝程序提示時,我應該安裝 TUN/TAP 驅動程序嗎?
是的。 TUN/TAP 驅動程序為 VPN 客戶端提供數據包接收和傳輸,對於數據隧道傳輸是必需的。這些重要的驅動程序允許虛擬 TUN 和 TAP 設備充當簡單的點對點或以太網設備,它們不是從物理主機接收數據包,而是從用戶空間程序(VPN 客戶端)接收數據包。這對於客戶端的功能至關重要,您需要為您的設備安裝這些驅動程序VPN軟件去工作。
