一、实现原理

Linux内核的TUN/TAP虚拟设备,不同于内核的其它设备,其发送和接收数据包都在网络协议栈内部完成,发送的数据包并不会离开协议栈进入到物理网络中,同样,也不会接收到从物理网络中进入协议栈的数据包。

用户空间的设备节点/dev/net/tun用于读写TUN/TAP设备,内核中TUN/TAP设备在发送数据包时,将数据包发送到与/dev/net/tun文件描述符相关联的套接口,用户空间就可从设备节点读取数据。用户空间程序向/dev/net/tun文件描述符写入数据时,TUN/TAP驱动调用内核的数据包接收函数(如netif_rx)将接收到的数据包送入网络协议栈,就像数据包是从物理网络中接收的一样。

使用TUN/TAP设备,可实现各种各样的隧道,如下示意图:

二、网络拓扑图:

三、测试实例

实例网址:https://github.com/gregnietsky/simpletun

路由A:

Eth0.2:192.168.1.4

Br-lan:192.168.11.1

Tun0:192.168.3.1

PC1:192.168.11.188

做为服务端运行:./simpletun -i tun0 –s

Ifconfig tun0 192.168.3.1

route add –net 192.168.3.0/24 dev tun0

route add –net 192.168.12.0/24 gw 192.168.3.2

路由B:

Eth0.2:192.168.1.180

Br-lan:192.168.12.1

Tun0:192.168.3.2

PC2:192.168.12.224

做为客服端运行:./simpletun -i tun0 -c 192.168.1.4

Ifconfig tun0 192.168.3.2

route add –net 192.168.3.0/24 dev tun0

route add –net 192.168.11.0/24 gw 192.168.3.1

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

虚拟接口信息:

1、点到点通信测试:

实例默认是TCP连接,测试ping对端虚拟接口Ip是30-50毫秒左右。Iperf灌包速度1M左右。

修改实例为UDP连接后,测试ping对端虚拟接口Ip是0.7毫秒时间。Iperf灌包速度5M多左右。

2、子网到子网测试:

PC2上ping PC1的地址:

路由1抓tun0接口包:

下载PC1主机上共享目录的文件到PC2:

Tun虚拟接口应用总结相关推荐

  1. Tun/Tap接口教材-[翻译:Tun/Tap interface tutorial]

    英文原文:https://backreference.org/2010/03/26/tuntap-interface-tutorial/ 翻译原文:https://www.jianshu.com/p/ ...

  2. Tun/Tap接口指导

    转载来源: 本文来自博客园,作者:charlieroro,转载请注明原文链接:https://www.cnblogs.com/charlieroro/p/13497340.html ========= ...

  3. 虚拟接口+tx+linux,Linux使用笔记: 解决Xen虚拟机中VLAN接口不能ping大包的问题

    出于调试的需要,想在两个Xen虚拟机间使用VLAN相互访问.在Linux上启用VLAN非常简单,只需要使用命令vconfig配置一个VLAN接口就可以了: vconfig add eth0 3 ifc ...

  4. linux 怎么创建接口文件,我们如何在Linux上创建多个虚拟接口?

    在Linux上创建伪以太网虚拟接口,我们首先使用以下命令初始化虚拟接口驱动程序: / sbin / modprobe dummy. 然后,我们为上面刚刚初始化的虚拟驱动程序分配以太网接口别名. 但是它 ...

  5. 虚拟接口和SD-WAN

    当我们谈论 SD-WAN 虚拟连接或接口时,我们只是指将多个 Internet 连接组合成一个逻辑和管理实体--虚拟接口.这是通过使用覆盖在物理资产(通常是通过电缆.光纤.卫星.DSL.MPLS.无线 ...

  6. linux修改vlan子接口mac地址,macvlan虚拟接口

    macvlan是kernel提供的一种网卡虚拟化技术,可以将网卡(不一定是真是的物理网卡,virtio等虚拟网卡也可以)虚拟出多个接口,这个网卡称为master或者父接口,这些虚拟接口和外面环境通信都 ...

  7. tun虚拟网卡该怎么玩不该怎么玩

    tun设备多用来在用户态模拟网络转发设备,比如隧道的端点,路由器,NAT网关等,但作为转发设备的模拟,其编程模型和作为数据始发站的服务器编程模型有着大不同. 我们先看一下最简单的tun程序模型: tu ...

  8. linux tun内核配置,如何在linux中正确配置tun / tap接口?

    基本上我正在尝试创建自定义TCP堆栈.您可能知道我不能使用eth0,因为Linux内核TCP堆栈使用它,因为我需要创建一个tun / tap接口并将其用于我的自定义TCP堆栈. 的/ etc /网络/ ...

  9. Golang Window TUN 虚拟网卡

    1. wintun Linux 2.4以后下有一种特殊的虚拟网络设备tun,用户可以直接创建虚拟网卡tun,直接以文件读写方式从设备处读取到网络层数据包(IP数据包),该网卡可以像是真实网卡一样设置I ...

最新文章

  1. 使用脚本恢复Windows XP系统的用户密码
  2. 厦门试点医疗大数据 产值有望达1200亿
  3. 逃出你的肖申克(三):遇见20万年前的自己
  4. MySQL软件的下载
  5. 软 件 学 院 实践环节报告
  6. P1525-关押罪犯【并查集】
  7. 用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件
  8. linux pwm控制蜂鸣器 滴滴_51单片机PWM直流电机PID控制转速源程序
  9. java求最小生成树的权重_给定有权无向图的邻接矩阵如下,求其最小生成树的总权重,代码。...
  10. 微商如何突破月入过万
  11. 阿里java电话面试题
  12. delphi过时了吗?王者归来!从Pascal到Embarcadero Delphi 10.4.1的发展历史回顾
  13. 使用gcov和lcov测试代码覆盖率
  14. linux查看执行过哪些命令,linux查看执行过的所有命令
  15. 美创科技与联通(浙江)产互签署战略合作协议
  16. UE4 Niagara UI Renderer插件使用
  17. 第六章 网络学习相关技巧1(最优路径梯度)
  18. 为什么单线程的Redis能这么快?
  19. SQL Server 2008 复制 遇到: 进程无法执行 'sp_replcmds' 命令
  20. python自动排版 html_python自动生成易于阅读的html文档——使用Sphinx

热门文章

  1. python中escape_Python语言 escape 的使用
  2. 后端修行 - JD-GUI 反编译class文件
  3. FPGA基础知识,应用,ASIC、ASSP区别(四)
  4. 原型模式的深浅克隆区别
  5. Science|改变微生物群落可以增强树木对气候变化的耐受性
  6. 【1】WiFi——————ESP8266 SDK编程 之 GPIO输入、输出、中断模式
  7. 如何定义带有可选参数的函数python_Python如何定义有默认参数的函数
  8. 2022年面试必问的1000道Java面试题及答案整理
  9. 中国洗涤用品市场供需调研与前景方向预测报告2022年版
  10. android四大组件基础介绍及打电话,发短信简单应用 单元测试