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

本文首發於個人公衆號 CloudDeveloper(ID: cloud_dev),專一於乾貨分享,號內有大量書籍和視頻資源,後臺回覆 「1024」便可領取,歡迎你們關注,二維碼文末能夠掃。

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

tunctl

安裝

首先在 centos 的環境中安裝 tunctlubuntu

[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-utilitiesvim

man tunctl 查看 tunctl 手冊,用法以下:centos

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 刪除指定接口

使用

常見用法:tcp

默認建立 tap 接口:工具

tunctl

以上等價於 tunctl -p雲計算

爲用戶 user 建立一個 tap 接口:url

# tunctl -u user

建立 tun 接口:spa

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 工具。


個人公衆號 CloudDeveloper(ID: cloud_dev),號內有大量書籍和視頻資源,後臺回覆 「1024」便可領取,分享的內容包括但不限於雲計算虛擬化、容器、OpenStack、K8S、霧計算、網絡、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++編程技術等內容,歡迎你們關注。

相關文章
相關標籤/搜索