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

C. *_*aul 6 linux networking network-programming tap tun

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

$ sudo ip tuntap add mode tap tap0
Run Code Online (Sandbox Code Playgroud)

之后,我设置了接口,并使用常用的IP命令对其进行寻址.我可以看到我的界面和简单的地址ifconfig.

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

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

chr*_*hrk 11

问题提出已经很长时间了,但我认为发布一个实际答案以供将来参考是一个好主意.

Tap接口以及tun接口是由内核内TUN/TAP设备驱动程序提供的虚拟接口.此驱动程序最初提供的唯一接口是/dev/net/tun问题中提到的字符设备.

发出:

$ sudo ip tuntap add mode tap tap0
Run Code Online (Sandbox Code Playgroud)

我们指示ip tuntap创建一个名为的网络接口tap0,使用ioctl(2)上述设备文件上的正确调用来完成/dev/net/tun与底层TUN/TAP设备驱动程序的通信,我们可以ip tuntap源代码中观察到.

其中一个ioctl(2)调用(带有TUNSETIFF选项的调用,首先调用)返回与创建的新虚拟接口关联的文件描述符,并可由进程使用.


总结一下:

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

/dev/net/tun设备文件只是作为一个起点,以创建两个抽头和桶接口,通过用户空间公用事业等iproute2.在这个问题的背景下,没有必要像ip tuntap我们这项工作那样处理它.

任何额外的/dev/net/tap0设备文件不是需要或预期要创建的进程使用水龙头接口.

  • “不需要或不需要为使用 Tap 接口的进程创建任何额外的 /dev/net/tap0 设备文件。” 为什么?如果没有设备文件或文件描述符,我将如何使用设备? (2认同)

小智 5

您需要使用命令激活该链接

ip link set dev tap0 up

之后你就可以使用它了。