使用ip tuntap命令点击接口和/ dev / net / tun设备

时间:2013-03-25 22:33:31

标签: linux networking network-programming tap tun

我正在使用ip tuntap创建一个tap界面,如下所示:

$ sudo ip tuntap add mode tap tap0

之后,我设置了接口,并使用常用的IP命令对其进行寻址。我可以看到我的界面,并通过一个简单的ifconfig来解决。

现在,老师告诉我,通过创建一个tap接口(在这种情况下名为tap0),我会找到一个/dev/net/tap0节点,我可以在其中写入或读取它。但是,我找不到它。我“只是”有一个/dev/net/tun

我是否必须处理此tun节点,或者我应该真的有tap0节点?

2 个答案:

答案 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)

您需要使用命令

激活该链接

ip link set dev tap0 up

之后你可以使用它。