Linux虚拟网卡TUN和TAP
简介
在 Linux 网络管理中,虚拟网卡(Virtual Network Interface)是一个重要的概念,广泛应用于虚拟化、网络仿真和隧道技术中。本文将重点介绍 TUN(Network TUNnel)和 TAP(Network TAP),并详细解释它们的工作原理、应用场景及其配置方法。
什么是虚拟网卡?
虚拟网卡是软件实现的网络接口,与物理网卡不同,它没有物理硬件,只存在于操作系统的内存中。虚拟网卡可以用来模拟网络环境,进行数据包的捕获、分析和处理。

TUN 和 TAP 的基本概念
1. Tun (Network TUNnel)
TUN 是三层(网络层)的虚拟网络设备,主要用于 IP 数据包的处理。TUN 设备会模拟一个网络层接口,接收到的数据包会被传递给用户空间的程序进行处理,处理完的数据包会被发送回内核网络栈。
2. TAP(Network TAP)
TAP 是二层(数据链路层)的虚拟网络设备,主要用于以太网帧的处理。TAP 设备可以模拟一个以太网接口,能够接收和发送原始的以太网帧。这使得 TAP 设备非常适合用于桥接不同的网络环境,或者在虚拟机中模拟物理网卡。TAP是数据链路层的虚拟网络设备。
Tun和Tap的异同
Tun是三层的设备,该设备没有MAC地址,从字符设备上读取IP数据包,写入的也是IP数据包,因此不能进行二层的操作,例如发ARP包和以太网广播
Tab是二层的设备,该设备有MAC地址,处理的是数据链路层的数据帧,从字符设备上读取的是数据链路层的数据帧,写入的也是数据。
在使用上面,两者都是通过字符设备的方式进行读取和写入,Tun是三层网络设备,而Tab是二层网络设备,Tun常用于VPN等技术,由于工作在IP层,无法与物理网卡做bridge,但可以通过三层交换(如 ip_forward)与物理网卡连通,Tab设备工作在第二层,收发的是MAC层数据包,拥有MAC层的功能,可以与物理网卡做bridge,支持MAC层广播

TUN和TAP应用场景
Tun是一个网络层设备,支持点到点的网络通信,常用于tunnel隧道和VPN的构建,tunnel技术是网络设备把网络层数据包封装到另一个协议中以跨过网络传送到另一个网络设备的处理过程,主要用于公网主机和私有网络互联互通。在Linux系统中支持多种隧道技术,其底层实现原理都是基于Tun设备。

TAP接口的典型应用场景是在虚拟化网络中。例如,我们通过KVM创建的多个VM(虚拟机),以LinuxBridge(桥接网络)互通;实际上即是通过像vnet0这样的TAP接口来接入LinuxBridge的。在这种场景下,KVM程序就是向TAP接口读写数据的用户空间程序。当VM0向本机的eth0接口发送数据,KVM会将数据发送到TAP接口vnet0,再通过LinuxBridge将数据转发到vnet1上。然后,KVM将数据发送到VM1的eth0口。

Linux虚拟网卡TUN和TAP的更多相关文章
- 虚拟网卡 TUN/TAP 驱动程序设计原理
简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...
- 虚拟网卡TUN/TAP 驱动程序设计原理
昨天韦哥写了<Linux下Tun/Tap设备通信原理>一文,只提到了两个使用Tun的用户进程之间的通信路径,并没有说明Tun虚拟网卡驱动是如何实现的,而正好看到了这里的一篇讲解这方面的文章 ...
- 虚拟网卡 TUN/TAP 驱动程序设计原理(经典)
盗用-收藏 简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱 ...
- linux 虚拟网卡
linux中可以通过一个物理网卡,模拟出多个虚拟网卡,并在网卡中配置ip. 下面做一个实验. 实验描述: 我们有server A (ip 10.79.148.205),server B (10.79. ...
- SecureCRT无法连接虚拟机Linux—虚拟网卡(NAT方式)IP(169.254.xx.xx)无效问题
搞了一晚上,终于解决了http://blog.csdn.net/zengxianyang/article/details/50394809
- tun/tap设备_虚拟网卡
tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装.利用tun/tap 驱动,可以将tcp/ip协议栈处理好的 ...
- linux下TUN/TAP虚拟网卡的使用
转载:http://wushank.blog.51cto.com/3489095/1306849 tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设 ...
- 一文总结 Linux 虚拟网络设备 eth, tap/tun, veth-pair
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Linux 虚 ...
- [转]Linux虚拟网络设备之tun/tap
转, 原文:https://segmentfault.com/a/1190000009249039 -------------------------------------------------- ...
- Linux下的TUN/TAP编程
linux下实现虚拟网卡我们在使用VMWARE的虚拟化软件时经常会发现它们能都能虚拟出一个网卡,貌似很神奇的技术,其实在Linux下很简单,有两种虚拟设 备,TUN时点对点的设备,tap表示以太网设备 ...
随机推荐
- Flutter+FaaS一体化任务编排的思考与设计
作者:闲鱼技术-古风 Flutter+Serverless三端一体研发架构,客户端不仅仅是编写双端的代码,而是扩展了客户端的工作边界,形成完整的业务闭环.在新的研发模式落地与实践的过程中,一直在思考如 ...
- MySQL 深潜 - MDL 锁的实现与获取机制
简介:本文将介绍在 MDL 系统中常用的数据结构及含义,然后从实现角度讨论 MDL 的获取机制与死锁检测,最后分享在实践中如何监控 MDL 状态. 作者 | 泊歌 来源 | 阿里技术公众号 一 背 ...
- TDA-04D8变送器数据上报阿里云
简介:本文将以TDA-04D8变送器作为采集对象,使用海创微联采集控制系统对TDA-04D8变送器进行采集,然后将设备上的毛重.净重.皮重数据采集上传到阿里云物联网平台,阿里云物联网平台将数据实时可 ...
- 划重点|iOS15正式发布, 全新的通知推送系统,你必须要知道!
简介: 今年友盟+联合达摩院决策智能实验室讲算法技术,推出国内首个智能推送功能,帮助产品运营人员实现一键式触达的精细化运营.通过精心打磨的在线学习与优化算法,对推送人群与推送文案进行精准匹配,最大化 ...
- 堆优化模拟退火(List-Based Simulated Annealing|LBSA)
申明 本文部分内容来自List-Based Simulated Annealing Algorithm for Traveling Salesman Problem[1] 如有侵权,请联系删除 引入 ...
- WEB服务与NGINX(11)-NGINX状态页
nginx状态页 nginx的状态页功能用于输出nginx的基本状态信息,基于ngx_http_stub_status_module模块实现. 默认情况下不生成此模块,应使用--with-http_s ...
- WordPress 整合Bootstrap制作分页代码
1.整合Bootstrap分页代码 * 因为wordpress默认仅仅提供简单分页, 所以要实现数字分页,需要自定义函数,wordpress可以结合bootstrap制作分页,bootstrap提供了 ...
- cesium常见问题和解决
- Clion代码自动格式化保存
目录 前言 使用外部工具Artistic Style Clion 插件配置 注意 前言 使用Clion的时候,可以自动格式化代码的操作. 使用外部工具Artistic Style 序号 名称 地址 1 ...
- 4G EPS 中的 PDN Connection
目录 文章目录 目录 前文列表 PDN PDN Connection APN APN 与 PGW POOL APN 与 vPGW APN 与漫游 PDN Type IP 类型 Non-IP 类型 MM ...