Linux TUN/TAP

最後更新: 2024-12-30 08:13:57 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

TUN/TAP 會建立連接至使用者空間檔案描述元的虛擬網路介面。 TUN 裝置承載第 3 層 IP 封包;TAP 裝置承載第 2 層乙太網路框架。 VPN、封包分析器、使用者空間網路堆疊與虛擬機器都會使用它們。

建立介面 #

以讀寫模式開啟 /dev/net/tun,並搭配 ifreq 發出 TUNSETIFF。設定 IFF_TUN 或 IFF_TAP;若程式只應接收封包或框架,則加入 IFF_NO_PI。 沒有 IFF_NO_PI 時,每次讀取都會從四位元組的封包資訊標頭開始,該標頭包含旗標與協定。 核心會建立網路介面,之後由 ip link、ip address 與 ip route 設定其管理狀態、位址 與路由。

在不會自動建立裝置的系統上,裝置節點是字元裝置 major 10、minor 200。必須仔細控管存取權: 建立介面或將其附加至網路命名空間需要適當權限。關閉最後一個檔案描述元會移除非持久性的 TUN/TAP 介面,除非該介面已設定為持久存在。

封包方向 #

程式寫入的封包會由核心視為抵達虛擬介面。核心透過該介面傳送的封包,則會由 read(2) 返回程式。ip tuntap add dev tun0 mode tun 或 mode tap 可在不撰寫自訂 C 程式的情況下 執行基本建立作業。

評論

在 GitHub 上閱讀或評論(發表評論需要登入)