Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。
在前面一篇文章中,我们已经介绍了 tap/tun 的基本原理,本文将介绍如何使用工具 tunctl
和 ip 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
ubuntu
是 apt-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: user
和 group
参数和 tunctl
的 -u、 -g 参数是一样的。
以上两个工具,我们更推荐使用 ip tuntap
,一个是因为 iproute2
更全更新,已经逐步在替代老旧的一些工具,另一个是因为 tunctl
在某些 Debian
类的系统上支持不全。
总结
tunctl
和 ip tuntap
的常见使用方式。
更推荐使用 ip tuntap
工具。
我的公众号 「Linux云计算网络」(id: cloud_dev) ,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。
相关文章
- linux(ubuntu) mysql安装使用
- linux系统vsftpd登陆慢卡怎么办
- Linux下MemCache的安装
- Linux基础之查看linux发行版以及内核版本
- Atitit.linux 内核 新特性 新功能
- 信号概述 硬件异常将产生信号 进程间通信概述 进程间通信 进程间通信功能 Linux 操作系统支持的主要进程间通信的通信机制 linux 进程间通信(IPC)由以下几个部分发展而来 数据传输 信号
- 【Android 逆向】Linux 文件分类 ( 普通文件 | 目录文件 | 链接文件 | 字符设备文件 | 管道文件 | 块设备文件 )
- 《Linux设备驱动开发具体解释(第3版)》进展同步更新
- Linux I2C设备驱动编写(三)-实例分析AM3359
- Linux I2C设备驱动编写(一)
- L86.linux命令每日一练 -- 第12章 Linux系统常用内置命令(二)
- L79.linux命令每日一练 -- 第11章 Linux系统管理命令 -- sar和chkconfig
- L75.linux命令每日一练 -- 第11章 Linux系统管理命令 -- lsof和uptime
- 嵌入式Linux开发,Ubuntu22下交叉编译报错:make[1]: aarch64-linux-gnu-gcc: No such file or directory
- Linux温馨提示1--安装U板块和Windwos划分
- 【Linux】linux经常使用基本命令
- 周立功arm linux教程,极速搭建周立功IMX287A ARM Linux开发环境
- Linux下的的GDB调试技巧一 —— 基础知识和介绍
- Linux驱动之设备树