tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。
开源项目openvpn ( http://openvpn.sourceforge.net)和Vtun( http://vtun.sourceforge.net)都是利用tun/tap驱动实现的隧道封装。

有时候,为了服务器测试,或虚拟机应用(VMware就自带了,但VBox没有),我们会需要一个虚拟网卡,这对Linuxer来说真是太简单了
如果使用Ubuntu,安装一条命令就够了

sudo apt-get install uml-utilities

现在,我们可以来创建虚拟网卡了

tunctl -t tap0 -u peter

创建了一个名为tap0的虚拟网卡(就象第一块网卡通常称为eth0),拥有者是用户peter。不过这里的拥有者不是指创建的设备文件/dev/net/tun的拥有者,有些应用可能需要对/dev/net/tun拥有写权限,需要另行处理,一个简单的办法就是把该用户加入uml-net用户组。

删除虚拟网卡tap0可以这样

tunctl -d tap0

我们可以象配置eth0那样配置它:

ifconfig tap0 192.168.0.12 netmask 255.255.255.0

如果需要一开机就自动创建,并且配置好,你可以在 /etc/network/interfaces中添加如下内容

 

auto tap0 iface tap0 inet manualup ifconfig $IFACE 192.168.0.12 updown ifconfig $IFACE downtunctl_user peter

如果你很好奇这一切是怎么创建的,可以查看interfaces的man页,以及/etc/network/if-*目录下的uml-utilities文件。

下面使我系统上的创建例程:

root@ubuntu:~# apt-get install uml-utilities
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
建议安装的软件包:
  user-mode-linux
下列【新】软件包将被安装:
  uml-utilities
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 52 个软件包未被升级。
需要下载 58.5 kB 的软件包。
解压缩后会消耗掉 336 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu/ natty/universe uml-utilities i386 20070815-1.1ubuntu2 [58.5 kB]
下载 58.5 kB,耗时 1秒 (46.1 kB/s)       
选中了曾被取消选择的软件包 uml-utilities。
(正在读取数据库 ... 系统当前共安装有 184633 个文件和目录。)
正在解压缩 uml-utilities (从 .../uml-utilities_20070815-1.1ubuntu2_i386.deb) ...
正在处理用于 man-db 的触发器...
正在处理用于 ureadahead 的触发器...
ureadahead will be reprofiled on next reboot
正在设置 uml-utilities (20070815-1.1ubuntu2) ...
 * Starting User-mode networking switch uml_switch                                         [ OK ]
root@ubuntu:~# tunctl -t tap0 -u root
Set 'tap0' persistent and owned by uid 0
root@ubuntu:~# ifconfig
eth0      Link encap:以太网  硬件地址 f0:4d:a2:eb:d1:da  
          inet 地址:192.168.15.20  广播:192.168.15.255  掩码:255.255.255.0
          inet6 地址: fe80::f24d:a2ff:feeb:d1da/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:269800 错误:0 丢弃:24 过载:0 帧数:0
          发送数据包:24588 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:31748279 (31.7 MB)  发送字节:3586783 (3.5 MB)
          中断:19
lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  跃点数:1
          接收数据包:8925 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:8925 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0
          接收字节:1067385 (1.0 MB)  发送字节:1067385 (1.0 MB)
root@ubuntu:~# ifconfig tap0 192.168.15.252 netmask 255.255.255.0
root@ubuntu:~# ifconfig
eth0      Link encap:以太网  硬件地址 f0:4d:a2:eb:d1:da  
          inet 地址:192.168.15.20  广播:192.168.15.255  掩码:255.255.255.0
          inet6 地址: fe80::f24d:a2ff:feeb:d1da/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:271081 错误:0 丢弃:24 过载:0 帧数:0
          发送数据包:24613 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:31837822 (31.8 MB)  发送字节:3589830 (3.5 MB)
          中断:19
lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  跃点数:1
          接收数据包:8925 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:8925 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0
          接收字节:1067385 (1.0 MB)  发送字节:1067385 (1.0 MB)
tap0      Link encap:以太网  硬件地址 d6:6b:43:4c:26:a0  
          inet 地址:192.168.15.252  广播:192.168.15.255  掩码:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  跃点数:1
          接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:500
          接收字节:0 (0.0 B)  发送字节:0 (0.0 B)
root@ubuntu:~# ping 192.168.15.252
PING 192.168.15.252 (192.168.15.252) 56(84) bytes of data.
64 bytes from 192.168.15.252: icmp_req=1 ttl=64 time=0.043 ms
64 bytes from 192.168.15.252: icmp_req=2 ttl=64 time=0.032 ms
64 bytes from 192.168.15.252: icmp_req=3 ttl=64 time=0.041 ms
64 bytes from 192.168.15.252: icmp_req=4 ttl=64 time=0.037 ms
^C
--- 192.168.15.252 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.032/0.038/0.043/0.006 ms

tun/tap 驱动相关推荐

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

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

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

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

  3. linux tap 源码分析,tun/tap 驱动源码分析

    此驱动运行时可设置tun模式和tap模式,tun模式能取到IP数据包,无法获得ARP数据,而tap模式取到的是以太包,可以得到链路层以上的一切数据包. 由于项目需要使用tun驱动,而又不想不求甚解,从 ...

  4. 云原生虚拟化:一文读懂网络虚拟化之 tun/tap 网络设备

    2021年12月2日,火山引擎边缘计算节点正式发布,对外提供稳定.高性能.功能丰富的一站式边缘计算云平台服务.网络作为边缘虚机的底层基础设施之一,其重要性也是不言而喻,它承担着虚拟机实例南北向.东西向 ...

  5. tun/tap虚拟网卡

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

  6. linux虚拟网络设备之tun/tap(一)

    在现在的云时代,到处都是虚拟机和容器,它们背后的网络管理都离不开虚拟网络设备,所以了解虚拟网络设备有利于我们更好的理解云时代的网络结构.从本篇开始,将介绍Linux下的虚拟网络设备. 虚拟设备和物理设 ...

  7. Linux虚拟网络设备之tun/tap

    Table of Contents 虚拟设备和物理设备的区别 tun/tap的另一端是什么? tun/tap设备有什么用? tun和tap的区别 示例 示例程序 演示 结束语 参考 在现在的云时代,到 ...

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

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

  9. linux下使用tun/tap虚拟网卡

    tun/tap虚拟网卡介绍 tun是一种虚拟网络设备,tun设备一端连接着用户程序,一端连接着内核协议栈,任何时候从协议栈发到tun网卡的数据都能从用户程序中读到,而从用户程序写入/dev/net/t ...

最新文章

  1. 直播变局下百度移动生态新“野望”
  2. Android电视关闭的闪屏动画效果
  3. zune自搭虚拟服务器离线升级,Zune 30g 固件更新至 3.3 记录
  4. 如何将c语言程序封装供python调用_C++调用python
  5. hibernate学习——Set集合配置
  6. 面向对象风格的合理架构
  7. 实践角度,谈谈库存扣减和锁
  8. 监听关闭页面事件 ajax,Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
  9. uni-app中image组件的基本使用
  10. 一些好用的nginx第三方模块
  11. 将RGB图像和depth深度图像存入同一个HDF5文件中
  12. 故障解决 | win10没声音及找不到Realtek高清音频管理器
  13. AD学习问题记录(三):AD21版本如何重新定义板子形状
  14. python中三元运算符_Python中三元表达式的几种写法介绍
  15. 服务器蓝屏显示7f,电脑蓝屏代码7f怎么解决 如何处理电脑蓝屏代码7f
  16. 热力图回归Adaptive Wing Loss [ICCV2019] 论文阅读
  17. Chrome漏洞分析与利用(三)——Issue-1062091漏洞分析
  18. 网店美工之你不知道的图片设计技巧
  19. css设置始终显示滚动条
  20. 车削加工参数优化切削参数 ( 切削速度、进给量、背吃刀量) 对表面粗糙度的影响

热门文章

  1. 报名开启!KunlunBase今年首场线下MeetUP,期待与您的见面!
  2. 一位学生来信:别去打听丧钟为谁而鸣,它为你敲响
  3. node判断某一端口是否被占用
  4. HDU 1848 SG函数
  5. B.FRIENDit壁虎忍者电竞游戏耳机CH3 耳麦7.1发光震动
  6. 名帖91 宋徽宗赵佶 楷书《千字文》
  7. Facebook 发币后的 48 小时
  8. java中关于数组的长度
  9. 毕业设计 - 车道线检测(自动驾驶 机器视觉)
  10. CAD2007安装的一些问题