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口。

相关推荐
by209996 小时前
Linux 基础指令与文件操作
linux·1024程序员节
Escalating_xu7 小时前
【Linux 网络编程】手写序列化与反序列化:从 x op y 到能校验的文本协议
linux·运维·网络
todoitbo8 小时前
在 Ubuntu ARM64 上运行 Q1 V3.0 MuJoCo 模型:加载、步进和单执行器响应
linux·运维·ubuntu·ai·机器人·仿真教程·启元
AR-26710-9 小时前
Linux Day26——传输层与三次握手
linux·运维
隔窗听雨眠9 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
xinruoqianqiu10 小时前
记录Linux
linux
额额额对了10 小时前
嵌入式 Linux 实战:i.MX6ULL 上的 CAN 通信与摄像头采集
linux·运维·服务器
牛马鸡niumasi10 小时前
【Linux】进程替换
linux
灯澜忆梦10 小时前
【Linux】#10 | Linux 终端实用快捷键 + 安装应用
linux·运维·服务器
码士集团小青11 小时前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节