Linux中的TUN/TAP设备

今天才发现这家伙。。。怎么讲。。。深以为耻。晚上的任务是加深对它的了解,就这么定了。

1. General questions.
1.1 What is the TUN ? 
 The TUN is Virtual Point-to-Point network device.
 TUN driver was designed as low level kernel support for
 IP tunneling. It provides to userland application
 two interfaces:
   - /dev/tunX - character device;
   - tunX - virtual Point-to-Point interface.

Userland application can write IP frame to /dev/tunX
 and kernel will receive this frame from tunX interface. 
 In the same time every frame that kernel writes to tunX 
 interface can be read by userland application from /dev/tunX
 device.

1.2 What is the TAP ? 
 The TAP is a Virtual Ethernet network device.
 TAP driver was designed as low level kernel support for
 Ethernet tunneling. It provides to userland application
 two interfaces:
   - /dev/tapX - character device;
   - tapX - virtual Ethernet interface.

Userland application can write Ethernet frame to /dev/tapX
 and kernel will receive this frame from tapX interface. 
 In the same time every frame that kernel writes to tapX 
 interface can be read by userland application from /dev/tapX
 device.

1.3 What platforms are supported by TUN/TAP driver ? 
 Currently driver has been written for 3 Unices:
    Linux kernels 2.2.x, 2.4.x 
    FreeBSD 3.x, 4.x, 5.x
    Solaris 2.6, 7.0, 8.0

1.4 What is TUN/TAP driver used for? 
 As mentioned above, main purpose of TUN/TAP driver is tunneling. 
 It used by VTun (http://vtun.info).

1.5 How does Virtual network device actually work ? 
 Virtual network device can be viewed as a simple Point-to-Point or
 Ethernet device, which instead of receiving packets from a physical 
 media, receives them from user space program and instead of sending 
 packets via physical media sends them to the user space program.

Let‘s say that you configured IPX on the tap0, then whenever 
 kernel sends any IPX packet to tap0, it is passed to the application
 (VTun for example). Application encrypts, compresses and sends it to 
 the other side over TCP or UDP. Application on other side decompress 
 and decrypts them and write packet to the TAP device, kernel handles 
 the packet like it came from real physical device.

1.6 What is the difference between TUN driver and TAP driver? 
 TUN works with IP frames. TAP works with Ethernet frames.

1.7 What is the difference between BPF and TUN/TAP driver? 
 BFP is a advanced packet filter. It can be attached to existing
 network interface. It does not provide virtual network interface.
 TUN/TAP driver does provide virtual network interface and it is possible
 to attach BPF to this interface.

1.8 Does TAP driver support kernel Ethernet bridging? 
 Yes. Linux and FreeBSD drivers support Ethernet bridging.

时间: 2024-10-07 01:50:10

Linux中的TUN/TAP设备的相关文章

TUN/TAP设备浅析

https://www.jianshu.com/p/660e69326e65 在 linux 2.4 及之后的内核版本中,tun/tap 驱动是默认编译进内核中的. (tun编译到内核中, tap作为内核模块编译) TUN/TAP设备浅析(一) -- 原理浅析 https://www.jianshu.com/p/09f9375b7fa7 TUN/TAP设备浅析(二) -- TUN/TAP的编程 https://www.jianshu.com/p/ab91f7cd98cd TUN/TAP设备浅析(

Linux下Tun/Tap设备通信原理

Tun/Tap都是虚拟网卡,没有直接映射到物理网卡,是一种纯软件的实现.Tun是三层虚拟设备,能够处理三层即IP包,Tap是二层设备,能处理链路层网络包如以太网包.使用虚拟网络设备,可以实现隧道,如OpenVPN的实现.这篇文章我主要根据自己画的一个图来简单说明在隧道实现中两个虚拟网络设备数据包的流程. 上面的图中,左右两边分别为两台机器.一台有一块物理网卡配置了IP:172.16.1.11,这台机器的系统里有一个Tun(以Tun为例,不讲Tap了)设备,配置了IP:192.168.1.11;

在 Linux 中永久修改 USB 设备权限

问题 当我尝试在 Linux 中运行 USB GPS 接收器时我遇到了下面来自 gpsd 的错误.看上去 gpsd 没有权限访问 USB 设备(/dev/ttyUSB0).我该如何永久修改它在Linux上的权限? 1. gpsd[377]: gpsd:ERROR: read-only device open failed:Permission denied 2. gpsd[377]: gpsd:ERROR:/dev/ttyUSB0: device activation failed. 3. gp

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

昨天韦哥写了<Linux下Tun/Tap设备通信原理>一文,只提到了两个使用Tun的用户进程之间的通信路径,并没有说明Tun虚拟网卡驱动是如何实现的,而正好看到了这里的一篇讲解这方面的文章,果断转载了,感谢作者,原文在这里:虚拟网卡TUN/TAP 驱动程序设计原理 简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在linux环境下的设计思路. tun

CentOS下使用TUN/TAP虚拟网卡的基本教程

在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备.不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能.TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧.TUN模拟了网络层设备,操作第三层数据包比如IP数据封包.操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TUN/TAP设备发送数据.在后种情况下,TUN/TAP设备向

[原]openstack-networking-neutron(二)---tun/tap

简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在linux环境下的设计思路. tun/tap驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装.利用tun/tap驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链

【转】Linux虚拟网络基础——tap

原文:https://blog.csdn.net/chengqiuming/article/details/80071073 ------------------------------------------------------------------- 一 介绍Linux中谈到tap,经常会和tun并列谈论.两者都是操作系统内核中的虚拟网络设备.tap位于二层,tun位于三层.需要说明的是,这里所说的设备是Linux的概念,并不是我们平时生活中所说的设备.比如,生活中,我们常常把一台物理

【华为云技术分享】《跟唐老师学习云网络》 - TUN/TAP网线

介绍TUN/TAP设备的概念和常见作用(即打通VM和Host间的网络),以及和Veth-pair网线的区别.这一节内部比较简单,因为主要内容已经在Veth网线里面讲了. 什么是TUN/TAP TUN/TAP是Linux中一种虚拟出来的网络设备,简单说,它也是一种“网线”,只是这种网线和Veth牌网线有点不同.Veth网线的2头是一样的,都是水晶头.TUN/TAP网线的2头长得不一样,一头是水晶头,另一头是USB的. 稍正式一点的描述,它是一种用户空间和内核空间传输报文用的网线.一头是普通的网卡,

攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)

一.mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断. major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hda ---------major:3------minor:0~63 /dev/hdb----------major:3------minor:64~127 /dev/sda----------major:8------minor:0~15 ... 命令格式:mknod 设备名 [bcp] [maj