也想出现在这里? 联系我们

在Linux系统下使用TUN/TAP虚拟网卡的基本教程

作者 : 小编 本文共2335个字,预计阅读时间需要6分钟 发布时间: 2022-10-31 共1.94K人阅读
也想出现在这里? 联系我们

在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包。操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TUN/TAP设备发送数据。在后种情况下,TUN/TAP设备向操作系统的网络栈投递(或“注入”)数据包,从而模拟从外部接受数据的过程。服务器如果拥有TUN/TAP模块,就可以开启VPN代理功能。虚拟网卡TUN/TAP 驱动程序设计原理:20151120120604752.jpg (553×396)

tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。开源项目openvpn ( http://openvpn.sourceforge.net)和Vtun( http://vtun.sourceforge.net)都是利用tun/tap驱动实现的隧道封装。在使用virtualbox虚拟机测试网络启动服务时,由于主机的网络接口是通过DHCP获得ip地址,每次重新启动机器后,都需要更改dhcp的配置文件.非常麻烦,所以想到使用虚拟网卡(TUN/TAP)来生成一个虚拟的网卡,设置静态ip,将virtualbox网络设置为桥接模式,而且可以和主机网络做到相对隔离(不同网段) 下面我们就以fedora13 来举例,来看看如何创建虚拟网卡设备

1. 确认内核是否支持tun/tap确认内核是否有tun模块

复制代码

代码如下:

[root@hunterfu]# modinfo tun filename: /lib/modules/2.6.34.7-56.fc13.i686.PAE/kernel/drivers/net/tun.ko alias: char-major-10-200 license: GPL author: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> description: Universal TUN/TAP device driver srcversion: 880DE258930FE60D765B735 depends: vermagic: 2.6.34.7-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 192.168.0.1 netmask 255.255.255.0 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=\”192.168.0.1\” TAP_DEV_NUM=0 DESC=\”TAP config\” do_start() { if [ ! -x /usr/sbin/tunctl ]; then echo \”/usr/sbin/tunctl was NOT found!\” exit 1 fi tunctl -t tap$TAP_DEV_NUM -u root ifconfig tap$TAP_DEV_NUM ${TAP_NETWORK} netmask 255.255.255.0 promisc ifconfig tap$TAP_DEV_NUM } do_stop() { ifconfig tap$TAP_DEV_NUM down } do_restart() { do_stop do_start } check_status() { ifconfig tap$TAP_DEV_NUM } case $1 in start) do_start;; stop) do_stop;; restart) do_restart;; status) echo \”Status of $DESC: \” check_status exit \”$?\” ;; *) echo \”Usage: $0 {start|stop|restart|status}\” exit 1 esac

可以根据具体需求修改此脚本加入到系统服务中

复制代码

代码如下:

[root@hunterfu ~]# chkconfig –add config_tap [root@hunterfu ~]# chkconfig –level 345 config_tap on

操作完成后,就可以像其他标准服务一样,通过 service config_tap start 来进行创建和启动操作

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 在Linux系统下使用TUN/TAP虚拟网卡的基本教程

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录