千家信息网

如何解析Linux tun/tap

发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,本篇文章给大家分享的是有关如何解析Linux tun/tap,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Linux tun/tap 详
千家信息网最后更新 2024年12月01日如何解析Linux tun/tap

本篇文章给大家分享的是有关如何解析Linux tun/tap,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Linux tun/tap 详解

> 在计算机网络中,tuntap是操作系统内核中的虚拟网络设备。不同于普通靠硬件网络适配器实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。

tun/tap是什么?

tun是网络层的虚拟网络设备,可以收发第三层数据报文包,如IP封包,因此常用于一些点对点IP隧道,例如OpenVPN,IPSec等。

tap是链路层的虚拟网络设备,等同于一个以太网设备,它可以收发第二层数据报文包,如以太网数据帧。Tap最常见的用途就是做为虚拟机的网卡,因为它和普通的物理网卡更加相近,也经常用作普通机器的虚拟网卡。

如何操作tun/tap?

Linux tun/tap可以通过网络接口和字符设备两种方式进行操作。

当应用程序使用标准网络接口socket API操作tun/tap设备时,和操作一个真实网卡无异。

当应用程序使用字符设备操作tun/tap设备时,字符设备即充当了用户空间和内核空间的桥梁直接读写二层或三层的数据报文。在 Linux 内核 2.6.x 之后的版本中,tun/tap 对应的字符设备文件分别为:

tun:/dev/net/tuntap:/dev/tap0

当应用程序打开字符设备时,系统会自动创建对应的虚拟设备接口,一般以tunX和tapX方式命名,虚拟设备接口创建成功后,可以为其配置IP、MAC地址、路由等。当一切配置完毕,应用程序通过此字符文件设备写入IP封包或以太网数据帧,tun/tap的驱动程序会将数据报文直接发送到内核空间,内核空间收到数据后再交给系统的网络协议栈进行处理,最后网络协议栈选择合适的物理网卡将其发出,到此发送流程完成。而物理网卡收到数据报文时会交给网络协议栈进行处理,网络协议栈匹配判断之后通过tun/tap的驱动程序将数据报文原封不动的写入到字符设备上,应用程序从字符设备上读取到IP封包或以太网数据帧,最后进行相应的处理,收取流程完成。

> 注意:当应用程序关闭字符设备时,系统也会自动删除对应的虚拟设备接口,并且会删除掉创建的路由等信息。

tun/tap的区别

tun/tap 虽然工作原理一致,但是工作的层次不一样。

tun是三层网络设备,收发的是IP层数据包,无法处理以太网数据帧,例如OpenVPN的路由模式就是使用了tun网络设备,OpenVPN Server重新规划了一个网段,所有的客户端都会获取到该网段下的一个IP,并且会添加对应的路由规则,而客户端与目标机器产生的数据报文都要经过OpenVPN网关才能转发。

tap是二层网络设备,收发以太网数据帧,拥有MAC层的功能,可以和物理网卡通过网桥相连,组成一个二层网络。例如OpenVPN的桥接模式可以从外部打一条隧道到本地网络。进来的机器就像本地的机器一样参与通讯,丝毫看不出这些机器是在远程。如果你有使用过虚拟机的经验,桥接模式也是一种十分常见的网络方案,虚拟机会分配到和宿主机器同网段的IP,其他同网段的机器也可以通过网络访问到这台虚拟机。

使用方式

Linux 提供了一些命令行程序方便我们来创建持久化的tun/tap设备,但是如果没有应用程序打开对应的文件描述符,tun/tap的状态一直会是DOWN,还好的是这并不会影响我们把它当作普通网卡去使用。

使用ip tuntap help查看使用帮助

Usage: ip tuntap { add | del | show | list | lst | help } [ dev PHYS_DEV ]        [ mode { tun | tap } ] [ user USER ] [ group GROUP ]        [ one_queue ] [ pi ] [ vnet_hdr ] [ multi_queue ] [ name NAME ]Where:  USER  := { STRING | NUMBER }        GROUP := { STRING | NUMBER }

示例

# 创建 tap ip tuntap add dev tap0 mode tap # 创建 tunip tuntap add dev tun0 mode tun # 删除 tapip tuntap del dev tap0 mode tap# 删除 tunip tuntap del dev tun0 mode tun

tun/tap 设备创建成功后可以当作普通的网卡一样使用,因此我们也可以通过ip link命令来操作它。

# 例如使用ip link命令也可以删除tun/tap设备ip link del tap0ip link del tun0

以上就是如何解析Linux tun/tap,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

设备 网络 数据 程序 字符 网卡 网络设备 应用程序 报文 机器 应用 以太网 以太 普通 内核 接口 系统 二层 物理 空间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 并发数数据库连接数 成立网络安全服务公司的可行性 绿色生鲜配送软件开发哪家专业 鄂州订制软件开发价格 北京交友软件开发定制 数据库的并交差笛卡尔积 南邮网络技术与应用 软件开发过程通常包括 国际版微信如何用国外服务器 嘉定区软件开发 计算机网络技术课程主要内容 烦人的村民模组手机版服务器 网络安全检测装置图片 数据库中常采用的安全措施 软件开发二次开发是什么 王源参加网络安全 山西网络技术咨询五星服务 服务器电源跟主板怎么连接 新仙境传说在线服务器 管家婆错访问的数据库不存在 网络安全认证和技术服务平台 服务器虚拟主机的管理 镇专题研究网络安全工作 网络安全周志愿活动 海口网络软件开发 金山区手机软件开发管理 分布式数据库多租户 各国的网络安全措施 自贸区网络安全条例 网络技术是什么学位
0