我正在使用ip tuntap
创建一个tap界面,如下所示:
$ sudo ip tuntap add mode tap tap0
之后,我设置了接口,并使用常用的IP命令对其进行寻址。我可以看到我的界面,并通过一个简单的ifconfig
来解决。
现在,老师告诉我,通过创建一个tap接口(在这种情况下名为tap0),我会找到一个/dev/net/tap0
节点,我可以在其中写入或读取它。但是,我找不到它。我“只是”有一个/dev/net/tun
。
我是否必须处理此tun节点,或者我应该真的有tap0节点?
答案 0 :(得分:7)
问题提出已经很长时间了,但我认为发布一个实际的答案以供将来参考是个好主意。
Tap接口以及tun接口是由内核内TUN / TAP设备驱动程序提供的虚拟接口。此驱动程序最初提供的唯一接口是问题中提到的字符设备/dev/net/tun
。
发出:
$ sudo ip tuntap add mode tap tap0
我们指示ip tuntap
创建名为tap0
的网络接口,该接口是使用上述设备文件/dev/net/tun
上的正确ioctl(2)
调用来完成的,以便与底层TUN进行通信/ TAP设备驱动程序,我们可以观察in ip tuntap
's source code。
其中一个ioctl(2)
调用(具有TUNSETIFF
选项的调用(最先调用))返回与新虚拟接口关联的文件描述符,该虚拟接口已创建并可供进程使用。
总结:
我是否必须处理此tun节点,或者我应该真的有tap0节点?
/dev/net/tun
设备文件仅用作iproute2
等用户空间实用程序创建tap和tun接口的起点。在这个问题的背景下,没有必要处理它,因为ip tuntap
为我们做这项工作。
任何额外的/dev/net/tap0
设备文件不需要或预期为进程创建使用分接接口。
答案 1 :(得分:2)
您需要使用命令
激活该链接之后你可以使用它。