TAP虚拟网卡的使用.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 linux下TUN/TAP虚拟网卡的使用 tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个用法tun/tap驱动的进程,由进程重新处理后再发到物理链路中。 开源项目openvpn ()和Vtun()都是利用tun/tap驱动实现的隧道封装。 一、Tun/Tap驱动程序工作原理 做为虚拟网卡驱动,Tun/Tap驱动程序的数据接收和发送并不挺直和真切网卡打交道,他在Linux内核中添加了一个TUN/TAP虚拟网络设备的驱动程序和一个与之相关连的字符设备 /dev/net/tun,字符设备tun作为用户空间和内核空间交换数据的接口。当内核将数据包发送到虚拟网络设备时,数据包被保存在设备相关的一个队列中,直到用户空间程序通过打开的字符设备tun的描述符读取时,它才会被拷贝到用户空间的缓冲区中,其效果就相当于,数据包挺直发送到了用户空间。通过系统调用write发送数据包时其原理与此类似。 在linux下,要实现内核空间和用户空间数据的交互,有多种方式:可以通用socket创建特别套接字,利用套接字实现数据交互;通过proc文件系统创建文件来举行数据交互;还可以用法设备文件的方式,拜访设备文件会调用设备驱动相应的例程,设备驱动本身就是内核空间和用户空间的一个接口,Tun/tap驱动就是利用设备文件实现用户空间和内核空间的数据交互。 从结构上来说,Tun/tap驱动并不单纯是实现网卡驱动,同时它还实现了字符设备驱动部分。以字符设备的方式衔接用户空间和内核空间。下面是暗示图: Tun/tap 驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡驱动部分。利用网卡驱动部分接收来自TCP/IP协议栈的网络分包并发送或者反过来将接收到的网络分包传给协议栈处理,而字符驱动部分则将网络分包在用户空间和内核空间之间传送,模拟物理链路的数据接收和发送。Tun/tap驱动很好的实现了两种驱动的结合。 二、Tun/Tap网卡创建 1. 确认内核是否支持tun/tap [root@hunterfu] modinfo tun filename: /lib/modules/-56.fc13.i686.PAE/kernel/drivers/net/tun.ko alias: char-major-10-200 license: GPL author: (C) 1999-2004 Max Krasnyansky maxk@ description: Universal TUN/TAP device driver srcversion: 880DE258930FE60D765B735 depends: vermagic: -56.fc13.i686.PAE SMP mod_unload 686 加载内核模块 - [root@hunterfu ~] modprobe tun [root@hunterfu ~] lsmod | grep tun tun 10548 1 执行以上指令后,浮现如上输出,解释模块加载胜利; 2.创建和配置虚拟网卡 确认是否有tunctl指令,假如没有通过yum安装即可 [root@hunterfu ~] yum install tunctl 创建虚拟网卡设备 [root@hunterfu ~] tunctl -t tap0 -u root 设置虚拟网卡 [root@hunterfu ~] ifconfig tap0 netmask promisc 经过如上操作后,虚拟网卡已经建立和配置好了。 3.作为系统服务随系统自动启动创建虚拟网卡 编写配置脚本(符合chkconfig规范) [root@hunterfu ~] cat /etc/init.d/config_tap !/bin/bash config_tap Start up the tun/tap virtual nic chkconfig: 2345 55 25 USER= root TAP_NETWORK= TAP_DEV_NUM=0 DESC= TAP config do_start() { if [ ! -x /usr/sbin/tunctl ]; then echo

文档评论(0)

158****9345 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档