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

相关推荐
2035去旅行9 小时前
bootcmd 详细讲解
linux·嵌入式·arm·soc
陈希12310 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡10 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
且从容.14 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道14 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.17 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落19 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨19 小时前
WSL2的安装与使用
linux·wsl
微小的鱼19 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng19 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器