
在前面一篇文章中,我们已经介绍了 tap/tun 的基本原理,本文将介绍如何使用工具 tunctl 和 ip tuntap 来创建并使用 tap/tun 设备。
首先在 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.roubuntu 是 apt-get install uml-utilities。
man tunctl 查看 tunctl 手册,用法如下:
Synopsis
tunctl [ OPTIONS ] [ -u owner ] [-g group] [ -t device-name ][OPTIONS] 部分:
/dev/net/tun,有些系统是 /dev/misc/net/tun。常见用法:
默认创建 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 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 # 删除 tunPS: user 和 group 参数和 tunctl 的 -u、 -g 参数是一样的。
以上两个工具,我们更推荐使用 ip tuntap,一个是因为 iproute2 更全更新,已经逐步在替代老旧的一些工具,另一个是因为 tunctl 在某些 Debian 类的系统上支持不全。
tunctl 和 ip tuntap 的常见使用方式。
更推荐使用 ip tuntap 工具。