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(八)相关推荐

  1. Linux 虚拟网络设备 tun/tap veth pair

    Linux 虚拟网络设备 tun/tap veth pair 本篇主要介绍一下 linux 下面的 虚拟网络设备 tun/tap veth pair 随着容器逐步取代虚拟机,成为云基础架构的标准,然而 ...

  2. linux虚拟网络设备--eth, tap/tun, veth-pair(九)

    Linux 虚拟网络的背后都是由一个个的虚拟设备构成的.虚拟化技术没出现之前,计算机网络系统都只包含物理的网卡设备,通过网卡适配器,线缆介质,连接外部网络,构成庞大的 Internet. 然而,随着虚 ...

  3. 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP

    TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设备是如何工作的: 所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 So ...

  4. linux虚拟网络设备之tun/tap驱动程序设计原理(五)

    简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...

  5. linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

    目录 linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上 一.tun/tap设备简介 二.在linux上使用tun/tap设备模拟一个虚拟网卡 三. 创建网桥连接到 ...

  6. Linux 虚拟网络设备

    一.tun/tap(虚拟网卡) TUN/TAP设备浅析(一) – 原理浅析 - 简书 (jianshu.com) (3条消息) Linux-虚拟网络设备-tun/tap_sld880311的专栏-CS ...

  7. linux 虚拟网络设备详解(四)

    Linux 抽象网络设备简介 和磁盘设备类似,Linux 用户想要使用网络功能,不能通过直接操作硬件完成,而需要直接或间接的操作一个 Linux 为我们抽象出来的设备,既通用的 Linux 网络设备来 ...

  8. 虚拟网卡 TUN/TAP 驱动程序设计原理

    简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...

  9. 网络设备中的linux,理解linux虚拟网络设备veth

    原标题:理解linux虚拟网络设备veth 前面介绍了linux network namespace,接着介绍一下如何让一个独立的网络命名空间和主机的网络互通,这里我们需要用到linux虚拟网络设备v ...

最新文章

  1. FrostSullivan:2012年中国数据库安全审计与防护产品市场分析
  2. rethat安装MySQL多例_Spring框架-Bean作用域中单例模式和多例模式的区别
  3. opengl嵌入pyqt5编译的分割窗口中
  4. c++ Linux中查找查找文件夹中的所有文件
  5. IDEA中双击两下shift全局搜索怎样取消和修改
  6. LAMP(linux下apache+mysql+php)平台编译安装的实现
  7. 适用于高级Java开发人员的十大书籍
  8. 小黄鸡 php,PHP调用小黄鸡 api post发送
  9. Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理) - willian12345...
  10. RichEdit控件的使用(未完)
  11. python窗口消息处理_在Python中将鼠标光标悬停在某些内容上时显示消息
  12. __cplusplus、extern “C”关键字意义
  13. BigDecimal 小数 浮点数 精度 财务计算
  14. 鲜花销售管理系统jsp全部代码_基于Java的鲜花销售管理系统设计与实现.zip
  15. java reader 组合_Java IText 拼接合并PDF的三种方法
  16. 物联网通信协议-modbus
  17. 用Word做一个漂亮的网页
  18. 吉他入门:吉他音阶训练入门教程(二)
  19. 服务器系统宽带拔号,宽带拨号上网什么意思?宽带拨号上网的操作步骤
  20. 安装texlive时出现No such file or directory问题

热门文章

  1. 在哪里可以免费学python-在合肥哪里可以学Python
  2. python自带的shell是什么-python shell是什么东西?
  3. python初学者web还是爬虫-python 爬虫《从入门到放弃》
  4. c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c
  5. 爬虫python下载-python 下载 爬虫
  6. 鱼c论坛python课后题-【零基础】Python3学习课后练习题(十九)
  7. python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)
  8. python一般用什么编译器-Python必学之编译器用哪个好?你用错了吧!
  9. python3菜鸟教程中文-Python3 日期和时间
  10. 简明python教程txt-Python新手的数据批量处理教程(TXT文件)