创建自己的tap、tun设备(待深入研究)

tunctl

安装tunctl工具

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

tee /etc/yum.repos.d/nux-misc.repo <<-'EOF'
[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
EOF

yum --enablerepo=nux-misc install tunctl

tunctl [OPTIONS] [ -u owner ] [ -g group ] [ -t device-name ]

  • t:指定要创建的tap、tun设备名
  • g:指定一组用户
  • u:参数指定用户名,表明这个接口只受该用户控制,这个接口发生的事不会印象到系统的接口

OPTIONS:

  • p:创建tap设备,默认创建该设备
  • n:创建tun设备
  • b:打印创建的接口名字
  • d:INTERFACE_NAME:删除指定接口
  • f:TUN_CLONE_DEVICE:指定tun设备对应的文件名,默认是/dev/net/tun,有些系统是/dev/misc/net/tun

创建、修改、删除该tap接口

  1. 创建指令如下

tunctl -p

该指令我执行了多次,分别生成了tap0、tap1、tap2,此时我使用ifconfig查看,是查看不到这些tapX的,当我执行下面的指令,为tap0设置了IP后,可以通过ifconfig查看,这使我想到我在另一篇教程中看到的说明:tapX设备文件会在该设备文件被使用的时候,由相应的驱动程序生成网口设备。

  1. 为接口设置ip地址:

ifconfig tap0 192.168.0.154 up

  1. 可以使用如下的方式关闭该接口:

ifconfig tap down

  1. 为接口添加路由:

route add -host 192.168.0.1 dev tap0

  1. 删除该tap0接口:

tunctl -d tap0

我执行了多次该指令,甚至删除了本应该不存在的tapX,但是其返回值基本都是一样的。

ip taptun

  1. 创建tap/tun设备

ip tuntap add dev tap0 mod tap
ip tuntap add dev tun0 mod tun

  1. 删除tap/tun设备

ip tuntap del dev tap0 mod tap
ip tuntap del dev tun0 mod tun

参考资料

  1. CentOS 7 安装tunctl
  2. Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备