linux下使用tun/tap虚拟网卡
tun/tap虚拟网卡介绍
tun是一种虚拟网络设备,tun设备一端连接着用户程序,一端连接着内核协议栈,任何时候从协议栈发到tun网卡的数据都能从用户程序中读到,而从用户程序写入/dev/net/tun的数据都会被内核协议栈收到。通过程序打开/dev/net/tun设备时,就会发现主机上多了一张网卡,打开多次会新增多张网卡,命名依次为tun0/tun1/tun2…,读写tun网卡的方式与正常读写一个文件一样。
更多参考:https://blog.csdn.net/VE_Edge/article/details/122721863
创建虚拟网卡
创建虚拟网卡程序:tun.c
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <sys/types.h>
#include <linux/if_tun.h>
#include<stdlib.h>
#include<stdio.h>
int main()
{int tun_fd, nread, err;char buffer[1500];struct ifreq ifr;if ((tun_fd = open("/dev/net/tun", O_RDWR)) < 0) {return tun_fd;}memset(&ifr, 0, sizeof(ifr));/**ifr_flags:* IFF_TUN:tun* IFF_TAP:tap*/ifr.ifr_flags = IFF_TUN | IFF_NO_PI; if ((err = ioctl(tun_fd, TUNSETIFF, (void *) &ifr)) < 0) {close(tun_fd);return err;}printf("open tun device: %s for reading...\n", ifr.ifr_name);if (tun_fd < 0) {perror("opening tun error");exit(1);}while (1) {nread = read(tun_fd, buffer, sizeof(buffer));if (nread < 0) {perror("reading tun error");close(tun_fd);exit(1);}printf("read %d bytes from %s\n", nread,ifr.ifr_name);}return 0;
}
使用虚拟网卡
编译运行会生成名字为tun0/tap0的网卡,运行虚拟网卡之前要确保系统已经加载tun.ko驱动
TUN 与 TAP 的区别
TUN 和 TAP 的区别在于工作的网络层次不同,用户程序通过 TUN 设备只能读写网络层的 IP 数据包,而 TAP 设备则支持读写链路层的数据包(通常是以太网数据包,带有 Ethernet headers)
tun.ko驱动
https://download.csdn.net/download/qq_43799679/86402345
linux下使用tun/tap虚拟网卡相关推荐
- tun/tap虚拟网卡收发机制解析
文章目录 收发机制原理 共性 虚拟网卡和物理网卡的通信 网络传输包格式 接收机制 发送机制 服务器端的转发机制 本章要研究的是openxxx的收发原理,实际上研究就是研究tun/tap网卡驱动的相关原 ...
- 介绍Linux下的 Tun/Tap
在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备.不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能. 什么 ...
- Linux TUN/TAP 虚拟网卡编程入门https://backreference.org/2010/03/26/tuntap-interface-tutorial/...
原文: https://backreference.org/2010/03/26/tuntap-interface-tutorial/ (为防和谐,下文中p=屁) Tun/Tap interface ...
- tun/tap虚拟网卡
简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...
- linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上
目录 linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上 一.tun/tap设备简介 二.在linux上使用tun/tap设备模拟一个虚拟网卡 三. 创建网桥连接到 ...
- 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN
Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...
- (OK) 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN
http://blog.csdn.net/dog250/article/details/45788279 Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tu ...
- 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN(转)
Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...
- 自动修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本
此脚本修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件中的网卡一.网卡二的IP地址(IPADDR).子网掩码(NETMASK)信息 #!/bi ...
最新文章
- cocos2d-x android 移植 问题
- 为什么要使用spring IOC
- java set hashcode_Java学习笔记_180724_HashSet_hashCode()
- C#窗体在任务栏对窗体放大或缩小
- Jurassic.ScriptEngine 简易示例
- SQL Server - THROW字句对比RAISERROR子句
- Windows中解压Linux中产生的tar.gz分卷压缩包
- 初识 Hbase 数据库
- java线程栈日志_Java线程堆栈
- 百度网盘为何下载总是那么慢?如何才能实现快速下载?
- 经验分享 针式打印机经典案例分析
- html多重阴影效果,如何使用css3实现文字的单阴影效果和多重阴影效果(附完整代码)...
- 与开发团队合作的8个技巧
- 计算机科学博士点,全国计算机博士点排名(全国前70名)
- 【西电—英美国家概况(英美概况/英美文化)2023第一学期】第十章参考课后答案
- javascript显示本地服务器图片,JavaScript图片本地预览功能的实现方法
- C语言实现银行ATM存取款系统 | 附源码
- TCHAR和string的转换
- (超详细)微信公众号菜单栏设置历史文章入口
- 阿里云网盘,开放申请啦!非会员下载 10MB/s!