- 浏览: 1482974 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
tun在网络层
tap在二层
lsmod|grep tun
linux下TUN/TAP虚拟网卡的使用
http://www.tuicool.com/articles/mu6vY3
ibm的文章
http://www.ibm.com/developerworks/cn/linux/l-tuntap/
skb_buffer
http://blog.chinaunix.net/uid-21768364-id-209652.html
centos7没有了
http://heanet.dl.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz
http://netassist.dl.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz
http://www.blogjava.net/kuuyee/archive/2010/12/07/339987.html
http://www.tuicool.com/articles/mu6vY3
设置桥接,
把本机网络eth0通过桥接,连到tap设备上,使tap设备能和外部通信
给tap设置网络
http://blog.csdn.net/ixidof/article/details/10148899
tunctl的代码非常简单:
tunctl.c:
执行编译:
tap在二层
lsmod|grep tun
linux下TUN/TAP虚拟网卡的使用
http://www.tuicool.com/articles/mu6vY3
ibm的文章
http://www.ibm.com/developerworks/cn/linux/l-tuntap/
skb_buffer
http://blog.chinaunix.net/uid-21768364-id-209652.html
modinfo tun modprobe tun lsmod|grep tun yum install tunctl -y
centos7没有了
http://heanet.dl.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz
http://netassist.dl.sourceforge.net/project/tunctl/tunctl/1.5/tunctl-1.5.tar.gz
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
http://blog.csdn.net/ixidof/article/details/10148899
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
发表评论
-
建立tap设备的c的代码
2019-01-08 19:09 480tapper.c #include <stdio.h& ... -
jslinux总结帖
2019-01-04 21:33 1161注意个问题: chrome不要用两个tab页,否则ping不通 ... -
br0和tap0的互相影响
2019-01-02 19:17 820转载 http://www.cnblogs.com/wlei/ ... -
jslinux-deobfuscated-network
2017-02-13 22:37 733基础知识 查看网络包 tcpdump -i eth0 -e ... -
Tunnels with iproute2
2016-11-14 15:22 594copy from http://members.ferrar ... -
qemu用tap方式启动vm的网络试验(ip route)
2016-09-14 11:29 2832ip route add 192.168.8.0/24 via ... -
socket的方式使用qemu建立虚拟机
2016-06-24 17:54 1932qemu的-net参数 -net nic 必须有,基本配置mo ... -
tap的方式使用qemu建立虚拟机NAT网络
2016-06-23 18:03 9902基本概念: vm:虚拟机 ... -
qemu用nat的方式使用tap建立虚拟机
2016-06-23 16:15 11普通桥接参考 http://haoningabc.iteye. ... -
tap的方式使用qemu建立虚拟机桥接网络
2016-06-22 20:53 7884需求:建立一个虚拟机,使网络和内网一样,当一台普通接入内网的服 ... -
websocket和tap使用select关联
2016-06-14 22:01 753c语言的socket基础http://haoningabc.i ... -
socket基础和select(python)
2016-06-14 17:21 1807上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 1007不使用select 普通的基础socket连接,对多个客户端的 ...
相关推荐
在IT行业中,网络通信是至关重要的一个领域,而OpenSSL库和TUN/TAP设备则在其中扮演着关键角色。本文将深入探讨标题"opensslPtunPtap.rar_openssl_tun tap_tun/tap"所涉及的核心概念,以及如何利用它们实现TCP通信。...
源代码 : tun/tap应用测试代码 包括原理介绍 设备创建代码及udp icmp包发送及接收代码 描述tun/tap的一个典型应用
tun/tap虚拟网卡驱动
这个主要是针对我写的博文:http://blog.csdn.net/jayxujia123/article/details/37767189给出的tun.ko,希望对有相关问题的朋友有用
在linux系统中实现TUN/TAP编程,既可以当作点对点设备(TUN),也可以当作以太网设备(TAP)。
关于Linux的TUN/TAP编程.pdf
TUN - Universal TUN TAP device driver.
Universal TUN TAP device driver.
易语言伪造ip地址
FNS4TAP v1.5 公共免费软件。 FNS4TAP 实现接受所有传入 TCP 连接的 TUN 虚拟网络接口... http://www.fornesia.com/Thread-Share-FNS4TAP
Universal TUN TAP device driver.
同时,由于TAP网卡是用户空间驱动,它相比传统的TUN( Tunneling Interface)网卡在某些场景下更易于管理和配置。了解并熟练掌握如何在RT-Thread和QEMU中配置和使用TAP网卡驱动,对于进行嵌入式系统的网络开发工作...
易语言TUN/TAP虚拟网卡使用例子
用Tun/tap虚拟设备实现数据安全传送的方法的研究与实现,刘敏,蒋砚军,本文以Tun/tap为理论基础和技术背景,实现了一种安全传送数据的方法。Tun/tap驱动不仅实现了网卡驱动而且还实现了字符设备驱动部分,�
windows TUN 虚拟网卡使用的魔
网络驱动源码, 虚拟网卡驱动源码, 亲测可用。 编译环境winddk7,7600.
TUN和TAP是Linuxn内核的虚拟网络设备,不同于普通靠硬件网络适配器实现的设备,这些虚拟的网络设备全部用软件实现,并可以向运行于Linux上的应用软件提供与硬件的网络设备完全相同的功能; TUN模拟了网络层设备,...
软件介绍: tuntap虚拟网卡官方原版32位和64位驱动程序,安装时要根据你的系统类型选择不同的驱动文件夹。驱动文件列表:oemwin2k.infoemwin2k.PNFtap0901.cattap0901.sys
一个基于tun/tap设备编写的简易的tcp/ip协议栈 实现一个协议栈其实并不是很难的一件事情,arp, icmp,udp这些不带任何状态的协议实现起来没有太大难度,当然,tcp协议的实现还是很有难度的,它的难度不在于编程的技巧,...