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 上閱讀或評論(發表評論需要登入)