tun是linux的另一种虚拟网络设备,与前面讲过的veth类似,只是另一端连的不一样,veth设备是一端连着内核协议栈,另一端连着另一个netns的协议栈;而tun设备是一端连着内核协议栈,另一端连接着一个用户程序,任何时候从协议栈发到tun网卡的数据都能从用户程序中读到,而从用户程序写入/dev/net/tun的数据都会被内核协议栈收到。
当我们通过程序打开/dev/net/tun设备时,就会发现我们的主机上多了一张网卡,打开多次会新增多张网卡,命名依次为tun0/tun1/tun2....,我们读写tun网卡的方式与正常读写一个文件一样,下面通过示例来了解一下。
首先编写一个c程序,文件名为tun.c,代码如下:


然后编译并执行:

本文介绍了Linux中的tun虚拟网络设备,它连接内核协议栈与用户程序,允许直接读写网络数据。通过示例展示了如何创建、配置tun接口,并解释了为何需要ping同网段地址才能使tun设备接收到数据包。
最低0.47元/天 解锁文章
1733

被折叠的 条评论
为什么被折叠?



