Tun虚拟接口应用总结
一、实现原理
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虚拟接口应用总结相关推荐
- Tun/Tap接口教材-[翻译:Tun/Tap interface tutorial]
英文原文:https://backreference.org/2010/03/26/tuntap-interface-tutorial/ 翻译原文:https://www.jianshu.com/p/ ...
- Tun/Tap接口指导
转载来源: 本文来自博客园,作者:charlieroro,转载请注明原文链接:https://www.cnblogs.com/charlieroro/p/13497340.html ========= ...
- 虚拟接口+tx+linux,Linux使用笔记: 解决Xen虚拟机中VLAN接口不能ping大包的问题
出于调试的需要,想在两个Xen虚拟机间使用VLAN相互访问.在Linux上启用VLAN非常简单,只需要使用命令vconfig配置一个VLAN接口就可以了: vconfig add eth0 3 ifc ...
- linux 怎么创建接口文件,我们如何在Linux上创建多个虚拟接口?
在Linux上创建伪以太网虚拟接口,我们首先使用以下命令初始化虚拟接口驱动程序: / sbin / modprobe dummy. 然后,我们为上面刚刚初始化的虚拟驱动程序分配以太网接口别名. 但是它 ...
- 虚拟接口和SD-WAN
当我们谈论 SD-WAN 虚拟连接或接口时,我们只是指将多个 Internet 连接组合成一个逻辑和管理实体--虚拟接口.这是通过使用覆盖在物理资产(通常是通过电缆.光纤.卫星.DSL.MPLS.无线 ...
- linux修改vlan子接口mac地址,macvlan虚拟接口
macvlan是kernel提供的一种网卡虚拟化技术,可以将网卡(不一定是真是的物理网卡,virtio等虚拟网卡也可以)虚拟出多个接口,这个网卡称为master或者父接口,这些虚拟接口和外面环境通信都 ...
- tun虚拟网卡该怎么玩不该怎么玩
tun设备多用来在用户态模拟网络转发设备,比如隧道的端点,路由器,NAT网关等,但作为转发设备的模拟,其编程模型和作为数据始发站的服务器编程模型有着大不同. 我们先看一下最简单的tun程序模型: tu ...
- linux tun内核配置,如何在linux中正确配置tun / tap接口?
基本上我正在尝试创建自定义TCP堆栈.您可能知道我不能使用eth0,因为Linux内核TCP堆栈使用它,因为我需要创建一个tun / tap接口并将其用于我的自定义TCP堆栈. 的/ etc /网络/ ...
- Golang Window TUN 虚拟网卡
1. wintun Linux 2.4以后下有一种特殊的虚拟网络设备tun,用户可以直接创建虚拟网卡tun,直接以文件读写方式从设备处读取到网络层数据包(IP数据包),该网卡可以像是真实网卡一样设置I ...
最新文章
- 使用脚本恢复Windows XP系统的用户密码
- 厦门试点医疗大数据 产值有望达1200亿
- 逃出你的肖申克(三):遇见20万年前的自己
- MySQL软件的下载
- 软 件 学 院 实践环节报告
- P1525-关押罪犯【并查集】
- 用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件
- linux pwm控制蜂鸣器 滴滴_51单片机PWM直流电机PID控制转速源程序
- java求最小生成树的权重_给定有权无向图的邻接矩阵如下,求其最小生成树的总权重,代码。...
- 微商如何突破月入过万
- 阿里java电话面试题
- delphi过时了吗?王者归来!从Pascal到Embarcadero Delphi 10.4.1的发展历史回顾
- 使用gcov和lcov测试代码覆盖率
- linux查看执行过哪些命令,linux查看执行过的所有命令
- 美创科技与联通(浙江)产互签署战略合作协议
- UE4 Niagara UI Renderer插件使用
- 第六章 网络学习相关技巧1(最优路径梯度)
- 为什么单线程的Redis能这么快?
- SQL Server 2008 复制 遇到: 进程无法执行 'sp_replcmds' 命令
- python自动排版 html_python自动生成易于阅读的html文档——使用Sphinx
热门文章
- python中escape_Python语言 escape 的使用
- 后端修行 - JD-GUI 反编译class文件
- FPGA基础知识,应用,ASIC、ASSP区别(四)
- 原型模式的深浅克隆区别
- Science|改变微生物群落可以增强树木对气候变化的耐受性
- 【1】WiFi——————ESP8266 SDK编程 之 GPIO输入、输出、中断模式
- 如何定义带有可选参数的函数python_Python如何定义有默认参数的函数
- 2022年面试必问的1000道Java面试题及答案整理
- 中国洗涤用品市场供需调研与前景方向预测报告2022年版
- android四大组件基础介绍及打电话,发短信简单应用 单元测试