Linux 網絡工具詳解之 ip tuntap 和 tunctl 創建 tap/tun 設備


本文首發於我的公眾號 Linux雲計算網絡(id: cloud_dev),專注於干貨分享,號內有 10T 書籍和視頻資源,后台回復「1024」即可領取,歡迎大家關注,二維碼文末可以掃。

在前面一篇文章中,我們已經介紹了 tap/tun 的基本原理,本文將介紹如何使用工具 tunctlip tuntap 來創建並使用 tap/tun 設備。

tunctl

安裝

首先在 centos 的環境中安裝 tunctl

[root@localhost ~]# vim /etc/yum.repos.d/nux-misc.repo

[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

ubuntuapt-get install uml-utilities

man tunctl 查看 tunctl 手冊,用法如下:

Synopsis
tunctl [ OPTIONS ] [ -u owner ] [-g group] [ -t device-name ]
  • -u 參數指定用戶名,表明這個接口只受該用戶控制,這個接口發生的事不會影響到系統的接口。
  • -g 指定一組用戶
  • -t 指定要創建的 tap/tun 設備名。

[OPTIONS] 部分:

  • -b 簡單打印創建的接口名字
  • -n 創建 tun 設備
  • -p 創建 tap 設備,默認創建該設備
  • -f tun-clone-device 指定 tun 設備對應的文件名,默認是 /dev/net/tun,有些系統是 /dev/misc/net/tun
  • -d interfacename 刪除指定接口

使用

常見用法:

默認創建 tap 接口:

tunctl

以上等價於 tunctl -p

為用戶 user 創建一個 tap 接口:

# tunctl -u user

創建 tun 接口:

tunctl -n

為接口配置 IP 並啟用:

# ifconfig tap0 192.168.0.254 up

為接口添加路由:

# route add -host 192.168.0.1 dev tap0

刪除接口:

# tunctl -d tap0

ip tuntap

安裝

命令行輸入 ip help 查看 ip 命令是否支持 tuntap 工具,支持的話就會顯示 tuntap 選項:

[root@localhost ~]# ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
                   netns | l2tp | tcp_metrics | token }

不支持就請升級或下載最新的 iproute2 工具包,或者使用上面介紹的 tunctl 工具。

使用

輸入 ip tuntap help 查看詳細使用命令:

[root@localhost ~]# ip tuntap help
Usage: ip tuntap { add | del } [ dev PHYS_DEV ]
          [ mode { tun | tap } ] [ user USER ] [ group GROUP ]
          [ one_queue ] [ pi ] [ vnet_hdr ] [ multi_queue ]

Where: USER  := { STRING | NUMBER }
       GROUP := { STRING | NUMBER }

常見用法:

創建 tap/tun 設備:

ip tuntap add dev tap0 mod tap # 創建 tap 
ip tuntap add dev tun0 mod tun # 創建 tun

刪除 tap/tun 設備:

ip tuntap del dev tap0 mod tap # 刪除 tap 
ip tuntap del dev tun0 mod tun # 刪除 tun

PS: usergroup 參數和 tunctl 的 -u、 -g 參數是一樣的。

以上兩個工具,我們更推薦使用 ip tuntap,一個是因為 iproute2 更全更新,已經逐步在替代老舊的一些工具,另一個是因為 tunctl 在某些 Debian 類的系統上支持不全。

總結

tunctlip tuntap 的常見使用方式。

更推薦使用 ip tuntap 工具。


我的公眾號 「Linux雲計算網絡」(id: cloud_dev) ,號內有 10T 書籍和視頻資源,后台回復 「1024」 即可領取,分享的內容包括但不限於 Linux、網絡、雲計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎大家關注。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM