tap和tun

tun在网络层
tap在二层
lsmod|grep tun

linux下TUN/TAP虚拟网卡的使用
[url]http://www.tuicool.com/articles/mu6vY3[/url]
ibm的文章
[url]http://www.ibm.com/developerworks/cn/linux/l-tuntap/[/url]
skb_buffer
[url]http://blog.chinaunix.net/uid-21768364-id-209652.html[/url]



modinfo tun
modprobe tun
lsmod|grep tun
yum install tunctl -y

centos7没有了
[url]http://heanet.dl.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz[/url]
[url]http://netassist.dl.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz[/url]

yum install docbook* -y
tar zxvf tunctl-1.5.tar.gz
cd tunctl-1.5
make
make install


http://www.blogjava.net/kuuyee/archive/2010/12/07/339987.html
http://www.tuicool.com/articles/mu6vY3


建立
tunctl -t tap0 -u root
删除使用
tunctl -d tap0


设置桥接,
把本机网络eth0通过桥接,连到tap设备上,使tap设备能和外部通信

ip link
ifconfig eth0 0.0.0.0 promisc
brctl addif br0 eth0
ip link set br0 up
dhclient br0
brctl addif br0 tap0


给tap设置网络


ifconfig tap0 10.0.2.2 netmask 255.255.255.0 promisc


[url]http://blog.youkuaiyun.com/ixidof/article/details/10148899[/url]

tunctl的代码非常简单:
tunctl.c:

/* Copyright 2002 Jeff Dike
* Licensed under the GPL
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <linux/if_tun.h>

/* TUNSETGROUP appeared in 2.6.23 */
#ifndef TUNSETGROUP
#define TUNSETGROUP _IOW('T', 206, int)
#endif

static void Usage(char *name)
{
fprintf(stderr, "Create: %s [-b] [-u owner] [-g group] [-t device-name] "
"[-p|-n] [-f tun-clone-device]\n", name);
fprintf(stderr, "Delete: %s -d device-name [-f tun-clone-device]\n\n",
name);
fprintf(stderr, "The default tun clone device is /dev/net/tun - some systems"
" use\n/dev/misc/net/tun instead\n\n");
fprintf(stderr, "-b will result in brief output (just the device name)\n");
fprintf(stderr, "-n will result in a point-to-point tun device,\n");
fprintf(stderr, "-p in an ethernet tap device. Default is a tap,\n");
fprintf(stderr, " except the device contains \"tun\" in the name.\n");
exit(1);
}

int main(int argc, char **argv)
{
struct ifreq ifr;
struct passwd *pw;
struct group *gr;
uid_t owner = -1;
gid_t group = -1;
int tap_fd, opt, delete = 0, brief = 0, type = 0;
char *tun = "", *file = "/dev/net/tun", *name = argv[0], *end;

while((opt = getopt(argc, argv, "bd:f:npt:u:g:h")) > 0){
switch(opt) {
case 'b':
brief = 1;
break;
case 'd':
delete = 1;
tun = optarg;
break;
case 'f':
file = optarg;
break;
case 'p':
if(type != 0)
Usage(name);
type = IFF_TAP;
break;
case 'n':
if(type != 0)
Usage(name);
type = IFF_TUN;
break;
case 'u':
pw = getpwnam(optarg);
if(pw != NULL){
owner = pw->pw_uid;
break;
}
owner = strtol(optarg, &end, 0);
if(*end != '\0'){
fprintf(stderr, "'%s' is neither a username nor a numeric uid.\n",
optarg);
Usage(name);
}
break;
case 'g':
gr = getgrnam(optarg);
if(gr != NULL){
group = gr->gr_gid;
break;
}
group = strtol(optarg, &end, 0);
if(*end != '\0'){
fprintf(stderr, "'%s' is neither a groupname nor a numeric group.\n",
optarg);
Usage(name);
}
break;

case 't':
tun = optarg;
break;
case '?':
case 'h':
default:
Usage(name);
}
}

argv += optind;
argc -= optind;

if(argc > 0)
Usage(name);

if((tap_fd = open(file, O_RDWR)) < 0){
fprintf(stderr, "Failed to open '%s' : ", file);
perror("");
exit(1);
}

if(type == 0) {
type = strstr(tun, "tun") ? IFF_TUN : IFF_TAP;
}

memset(&ifr, 0, sizeof(ifr));

ifr.ifr_flags = type | IFF_NO_PI;
strncpy(ifr.ifr_name, tun, sizeof(ifr.ifr_name) - 1);
if(ioctl(tap_fd, TUNSETIFF, (void *) &ifr) < 0){
perror("TUNSETIFF");
exit(1);
}

if(delete){
if(ioctl(tap_fd, TUNSETPERSIST, 0) < 0){
perror("disabling TUNSETPERSIST");
exit(1);
}
printf("Set '%s' nonpersistent\n", ifr.ifr_name);
}
else {
/* emulate behaviour prior to TUNSETGROUP */
if(owner == -1 && group == -1) {
owner = geteuid();
}

if(owner != -1) {
if(ioctl(tap_fd, TUNSETOWNER, owner) < 0){
perror("TUNSETOWNER");
exit(1);
}
}
if(group != -1) {
if(ioctl(tap_fd, TUNSETGROUP, group) < 0){
perror("TUNSETGROUP");
exit(1);
}
}

if(ioctl(tap_fd, TUNSETPERSIST, 1) < 0){
perror("enabling TUNSETPERSIST");
exit(1);
}

if(brief)
printf("%s\n", ifr.ifr_name);
else {
printf("Set '%s' persistent and owned by", ifr.ifr_name);
if(owner != -1)
printf(" uid %d", owner);
if(group != -1)
printf(" gid %d", group);
printf("\n");
}
}
return(0);
}


执行编译:

gcc -g -Wall -o tunctl tunctl.c
sstap tun虚拟网卡没有安装_虚拟设备之TUN和TAP 前言最近尝试了下 Zerotier,感觉还挺好用的, 比较好奇它的实现原理,查了下,遂有了下文。TAP与TUN是什么不同于硬件物理网卡,TAP/TUN 是在 Linux 内核 2.4.x 版本之后完全由软件实现的虚拟网络设备,在功能上 TAP/TUN 和物理网卡没有区别,它们同样都是网络设备,都可以设置 IP 地址,而且都属于 Linux 网络设备管理模块,由 Linux 网络设备管理模块统一来管... 阅读详情

相关推荐

SMPTE ST 2110 概论(三)

SMPTE ST 2110 概论(三)ST 2110-30:未压缩的PCM音频流ST 2110-31:非PCM音频传输ST 2110-40:辅助数据传输结语 ST 2110-30:未压缩的PCM音频流 鉴于音频系统是广播系统中最复杂,也是最重要的一套系统,我们先来回顾一下广电音频系统的历史。 最老式的音频都是基于模拟信号的,具有有限的动态范围,并且用连续的电压变化来描述音频。再后来就基于数字信号(...

Cidd0422的博客 1万+

Linux:虚拟网卡技术tun/tap

Linux:虚拟网卡技术tun/tap

hhd1988的专栏 5901

STM32F103 CAN通信避坑指南:从标准库配置到收发测试的完整流程

本文详细介绍了STM32F103 CAN通信的实现流程,从标准库配置到收发测试,帮助开发者避开常见陷阱。内容涵盖硬件连接、波特率计算、过滤器配置及错误处理等关键环节,提供实用的代码示例和调试技巧,确保CAN通信的稳定性和可靠性。

weixin_30627341的博客 324

linux下TUN/TAP虚拟网卡的使用

tun在网络层 tap在二层 lsmod|grep tun linux下TUN/TAP虚拟网卡的使用 [url]http://www.tuicool.com/articles/mu6vY3[/url] ibm的文章 [url]http://www.ibm.com/developerworks/cn/linux/l-tuntap/[/url] skb_buffer [url]ht...

走在左边 1002

V.PhyloMaker实战:从物种列表到维管束植物系统发育树的完整流程

本文详细介绍了使用V.PhyloMaker工具包,从物种列表快速构建维管束植物系统发育树的完整实战流程。内容涵盖R包安装、物种名标准化、核心函数phylo.maker的三种构建方案选择、结果树的可视化与导出,以及与picante包的联动分析,为生态学和生物地理学研究提供了高效解决方案。

weixin_29057237的博客 375

TOPSIS+熵权法组合拳:5分钟学会供应商选择决策模型

本文详细介绍了如何运用TOPSIS和熵权法这对黄金组合,快速构建科学、客观的供应商评估决策模型。通过数据标准化、权重计算和综合排序,帮助企业在半小时内完成高效、准确的供应商选择,解决传统主观打分法的弊端,提升供应链管理效率。

weixin_29051149的博客 275

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

简介虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装。本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在linux环境下的设计思路。tun/tap驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap驱动,可以将

Bekars涡轮增压的Blog ^_^ 3716

AI中台系统设计方案探讨

集成JupyterLab、低代码建模工具(如H2O.ai)、预训练模型库(Hugging Face、PaddleHub)。:通过REST/gRPC接口封装AI能力(如OCR、语音识别),支持流量控制与鉴权(如Kong、Apigee)。:服务注册发现(Consul)、熔断降级(Hystrix)、监控告警(Prometheus+Grafana)。:分布式存储(如HDFS、Ceph)与对象存储(如S3、OSS),支持海量数据高速读写。加密传输(TLS)、动态脱敏(如数据掩码)、访问控制(RBAC)。

reset2021的博客 1032

Linux虚拟网络设备

Linux使用tun模块实现tun/tap,tun工作在L3,tap工作在L2。

Jiajun Zhu 1043

探索niri:让你的Linux桌面布局无拘无束

niri是一款基于Wayland的滚动平铺合成器,采用创新的窗口管理方式。它将窗口排列为向右无限延伸的条目,支持独立显示器布局和动态垂直工作区,确保多任务操作流畅性。核心功能包括概要视图、截图界面、屏幕投射、手势操作、窗口分组等,并支持自定义布局和动画效果。niri具备良好的稳定性,兼容xwayland-satellite工具,灵感来自PaperWM但突破了GNOME限制。该项目为追求高效桌面管理的用户提供了全新解决方案,欢迎加入社区交流体验。

weixin_44626085的博客 1816

PrimeTime low power-多电压设计流程(2)

get_power_switches`、`get_supply_nets` 和 `get_supply_ports` 命令的操作方式类似,并具有类似的命令选项。PrimeTime 根据 UPF 命令构建电源供应网络,包括 create_power_domain、create_supply_net、create_supply_set、create_supply_port、set_domain_supply_net 和 connect_supply_net。电源集句柄是为电源域隐式创建的一个抽象电源集。

QRBQ 712

TUN设备和TAP设备

tap设备+NAT虚拟设备 : outter flow & inner flow。tap设备+虚拟网桥 : outter flow。tap设备 : inner flow。

u011011827的博客 1356

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

虚拟设备之TUN和TAP

虚拟设备之TUN和TAP

m0_53157173的博客 1065

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

tap和tun网络设备

概述 创建方法 使用ip命令 # 创建tap设备 ip tuntap add tapxxx mode tap # 删除tap, 如果mode和创建时的不一致,则会报错 ip tuntap del tapxxx mode tap # 创建tun设备 ip tuntap add tunxxx mode tun # 删除tun设备 ip tuntap del tunxxx mode tun...

哲淡笔记 2810

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ip命令添加tun网卡和tap网卡

tun网卡处于三层没有mac地址 添加名称为tun0网卡: ip tuntap add tun0 mode tun tap网卡处于二层有mac地址 添加名称为tap0网卡: ip tuntap add tap0 mode tap

zby枣菠鱼的博客 3578

***-server 虚拟工作模式tun 和tap的区别

长期以来对tun和tap这对兄弟分不太清,今天下定决心研究了一下代码,总算是搞明白了。首先它们都是从/dev/net/tun里ioctl出来的虚拟设备,一个是通过IFF_TUN,另一个是IFF_TAP。最好的例子莫过于***c里面的代码了。PLAINTEXTC:1.inttun_open(char*dev,enumif_mode_enummode)2.{3....

weixin_33985679的博客 1482

Linux 网络工具—— ip tuntap 和 tunctl 创建 tap/tun 设备

本文将介绍如何使用工具tunctl和ip tuntap来创建并使用 tap/tun 设备。 tunctl 安装 首先在centos的环境中安装tunctl。 [root@localhost ~]# vim /etc/yum.repos.d/nux-misc.repo [nux-misc] name=Nux Misc baseurl=http://li.nux.ro/do...

weixin_39094034的博客 1826

Linux虚拟网络设备之tun/tap和veth设备的特点

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

码农崛起 1654

提示tun虚拟网卡没有安装_虚拟设备之TUN和TAP

前言最近尝试了下 Zerotier,感觉还挺好用的, 比较好奇它的实现原理,查了下,遂有了下文。TAP与TUN是什么不同于硬件物理网卡,TAP/TUN 是在 Linux 内核 2.4.x 版本之后完全由软件实现的虚拟网络设备,在功能上 TAP/TUN 和物理网卡没有区别,它们同样都是网络设备,都可以设置 IP 地址,而且都属于 Linux 网络设备管理模块,由 Linux 网络设备管理模块统一来管...

weixin_39574287的博客 6738

Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 在前面一篇文章中,我们已经介绍了 tap/tun 的基本原理,本文将介绍如何使用工具 tunctl 和 ip tuntap 来创建并使用 tap/tun...

weixin_34249367的博客 325

使用tap和tun设备的方法

1.通过网桥链接tap\tun虚拟网卡设备链接到网桥;这时的网桥就相当于一个交换机可以在虚拟网卡和物理网卡之间传输数据; 2.之前看????哥的视频,linux服务器可以是一个网关设备或者是一个路由设备,而且还可以实现Vlan的换分,所以,在看完《内核网络子系统》 内核中关于网络协议栈的内容,是目前接触到的复杂程度,和难度排名第一的,不是不可以理解,关键是无法掌握所有的节点,无法吃透 ...

HongDaYu的搬砖之路 775
上一篇: javascript自定义事件
下一篇: git review (gerrit)
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值