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虚拟网卡相关推荐

  1. tun/tap虚拟网卡收发机制解析

    文章目录 收发机制原理 共性 虚拟网卡和物理网卡的通信 网络传输包格式 接收机制 发送机制 服务器端的转发机制 本章要研究的是openxxx的收发原理,实际上研究就是研究tun/tap网卡驱动的相关原 ...

  2. 介绍Linux下的 Tun/Tap

    在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备.不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能. 什么 ...

  3. 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 ...

  4. tun/tap虚拟网卡

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

  5. linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

    目录 linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上 一.tun/tap设备简介 二.在linux上使用tun/tap设备模拟一个虚拟网卡 三. 创建网桥连接到 ...

  6. 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

    Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...

  7. (OK) 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

    http://blog.csdn.net/dog250/article/details/45788279 Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tu ...

  8. 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN(转)

    Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...

  9. 自动修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本

    此脚本修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件中的网卡一.网卡二的IP地址(IPADDR).子网掩码(NETMASK)信息 #!/bi ...

最新文章

  1. cocos2d-x android 移植 问题
  2. 为什么要使用spring IOC
  3. java set hashcode_Java学习笔记_180724_HashSet_hashCode()
  4. C#窗体在任务栏对窗体放大或缩小
  5. Jurassic.ScriptEngine 简易示例
  6. SQL Server - THROW字句对比RAISERROR子句
  7. Windows中解压Linux中产生的tar.gz分卷压缩包
  8. 初识 Hbase 数据库
  9. java线程栈日志_Java线程堆栈
  10. 百度网盘为何下载总是那么慢?如何才能实现快速下载?
  11. 经验分享 针式打印机经典案例分析
  12. html多重阴影效果,如何使用css3实现文字的单阴影效果和多重阴影效果(附完整代码)...
  13. 与开发团队合作的8个技巧
  14. 计算机科学博士点,全国计算机博士点排名(全国前70名)
  15. 【西电—英美国家概况(英美概况/英美文化)2023第一学期】第十章参考课后答案
  16. javascript显示本地服务器图片,JavaScript图片本地预览功能的实现方法
  17. C语言实现银行ATM存取款系统 | 附源码
  18. TCHAR和string的转换
  19. (超详细)微信公众号菜单栏设置历史文章入口
  20. 阿里云网盘,开放申请啦!非会员下载 10MB/s!

热门文章

  1. 【对讲机的那点事】业余无线电爱好者问题解读(三)
  2. 解决淘淘第三天无法显示图片
  3. 基于Java坦克大战小游戏设计(1)
  4. ROS下使用dobot越疆科技的M1-B1机器人进行定点抓取代码
  5. 一类6维Lorenz型超混沌系统的有限时间驱动-响应同步
  6. 如何来理解当前中国的房地产市场形势?
  7. dz怎样增加php邮箱注册,Discuz!限制用户注册使用固定邮箱(Email)
  8. 51job.com查询招聘的方法
  9. layUI templet表格数据转换(1,0:男,女)
  10. 《孤独六讲》-蒋勋 摘录1