linux虚拟网络设备-- TUN/TAP MACVLAN MACVTAP(八)
TUN 设备
TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:
所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序。下面看看 TUN 的工作方式:
普通的网卡通过网线收发数据包,但是 TUN 设备通过一个文件收发数据包。所有对这个文件的写操作会通过 TUN 设备转换成一个数据包送给内核;当内核发送一个包给 TUN 设备时,通过读这个文件可以拿到包的内容。
如果我们使用 TUN 设备搭建一个基于 UDP VPN,那么整个处理过程就是这样:
数据包会通过内核网络栈两次。但是经过 App 的处理后,数据包可能已经加密,并且原有的 ip 头被封装在 udp 内部,所以第二次通过网络栈内核看到的是截然不同的网络包。
TAP 设备
TAP 设备与 TUN 设备工作方式完全相同,区别在于:
- TUN 设备的 /dev/tunX 文件收发的是 IP 层数据包,只能工作在 IP 层,无法与物理网卡做 bridge,但是可以通过三层交换(如 ip_forward)与物理网卡连通。
- TAP 设备的 /dev/tapX 文件收发的是 MAC 层数据包,拥有 MAC 层功能,可以与物理网卡做 bridge,支持 MAC 层广播
MACVLAN
有时我们可能需要一块物理网卡绑定多个 IP 以及多个 MAC 地址,虽然绑定多个 IP 很容易,但是这些 IP 会共享物理网卡的 MAC 地址,可能无法满足我们的设计需求,所以有了 MACVLAN 设备,其工作方式如下:
MACVLAN 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡。单独使用 MACVLAN 好像毫无意义,但是配合之前介绍的 network namespace 使用,我们可以构建这样的网络:
由于 macvlan 与 eth0 处于不同的 namespace,拥有不同的 network stack,这样使用可以不需要建立 bridge 在 virtual namespace 里面使用网络。
MACVTAP
MACVTAP 是对 MACVLAN的改进,把 MACVLAN 与 TAP 设备的特点综合一下,使用 MACVLAN 的方式收发数据包,但是收到的包不交给 network stack 处理,而是生成一个 /dev/tapX 文件,交给这个文件:
由于 MACVLAN 是工作在 MAC 层的,所以 MACVTAP 也只能工作在 MAC 层,不会有 MACVTUN 这样的设备。
原文链接:https://blog.kghost.info/2013/03/27/linux-network-tun/
linux虚拟网络设备-- TUN/TAP MACVLAN MACVTAP(八)相关推荐
- Linux 虚拟网络设备 tun/tap veth pair
Linux 虚拟网络设备 tun/tap veth pair 本篇主要介绍一下 linux 下面的 虚拟网络设备 tun/tap veth pair 随着容器逐步取代虚拟机,成为云基础架构的标准,然而 ...
- linux虚拟网络设备--eth, tap/tun, veth-pair(九)
Linux 虚拟网络的背后都是由一个个的虚拟设备构成的.虚拟化技术没出现之前,计算机网络系统都只包含物理的网卡设备,通过网卡适配器,线缆介质,连接外部网络,构成庞大的 Internet. 然而,随着虚 ...
- 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设备是如何工作的: 所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 So ...
- linux虚拟网络设备之tun/tap驱动程序设计原理(五)
简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...
- linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上
目录 linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上 一.tun/tap设备简介 二.在linux上使用tun/tap设备模拟一个虚拟网卡 三. 创建网桥连接到 ...
- Linux 虚拟网络设备
一.tun/tap(虚拟网卡) TUN/TAP设备浅析(一) – 原理浅析 - 简书 (jianshu.com) (3条消息) Linux-虚拟网络设备-tun/tap_sld880311的专栏-CS ...
- linux 虚拟网络设备详解(四)
Linux 抽象网络设备简介 和磁盘设备类似,Linux 用户想要使用网络功能,不能通过直接操作硬件完成,而需要直接或间接的操作一个 Linux 为我们抽象出来的设备,既通用的 Linux 网络设备来 ...
- 虚拟网卡 TUN/TAP 驱动程序设计原理
简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...
- 网络设备中的linux,理解linux虚拟网络设备veth
原标题:理解linux虚拟网络设备veth 前面介绍了linux network namespace,接着介绍一下如何让一个独立的网络命名空间和主机的网络互通,这里我们需要用到linux虚拟网络设备v ...
最新文章
- FrostSullivan:2012年中国数据库安全审计与防护产品市场分析
- rethat安装MySQL多例_Spring框架-Bean作用域中单例模式和多例模式的区别
- opengl嵌入pyqt5编译的分割窗口中
- c++ Linux中查找查找文件夹中的所有文件
- IDEA中双击两下shift全局搜索怎样取消和修改
- LAMP(linux下apache+mysql+php)平台编译安装的实现
- 适用于高级Java开发人员的十大书籍
- 小黄鸡 php,PHP调用小黄鸡 api post发送
- Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理) - willian12345...
- RichEdit控件的使用(未完)
- python窗口消息处理_在Python中将鼠标光标悬停在某些内容上时显示消息
- __cplusplus、extern “C”关键字意义
- BigDecimal 小数 浮点数 精度 财务计算
- 鲜花销售管理系统jsp全部代码_基于Java的鲜花销售管理系统设计与实现.zip
- java reader 组合_Java IText 拼接合并PDF的三种方法
- 物联网通信协议-modbus
- 用Word做一个漂亮的网页
- 吉他入门:吉他音阶训练入门教程(二)
- 服务器系统宽带拔号,宽带拨号上网什么意思?宽带拨号上网的操作步骤
- 安装texlive时出现No such file or directory问题
热门文章
- 在哪里可以免费学python-在合肥哪里可以学Python
- python自带的shell是什么-python shell是什么东西?
- python初学者web还是爬虫-python 爬虫《从入门到放弃》
- c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c
- 爬虫python下载-python 下载 爬虫
- 鱼c论坛python课后题-【零基础】Python3学习课后练习题(十九)
- python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)
- python一般用什么编译器-Python必学之编译器用哪个好?你用错了吧!
- python3菜鸟教程中文-Python3 日期和时间
- 简明python教程txt-Python新手的数据批量处理教程(TXT文件)