位置: 编程技术 - 正文
推荐整理分享在Linux系统下使用TUN/TAP虚拟网卡的基本教程(linux用),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:在linux系统中,在linux系统中,用来存放系统所需要的配置文件和子目录,使用linux,在linux系统中,使用linux,在linux系统中,在linux操作系统中,/etc/rc.d/init.d,在linux操作系统中,/etc/rc.d/init.d,内容如对您有帮助,希望把文章链接给更多的朋友!
在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包。操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TUN/TAP设备发送数据。在后种情况下,TUN/TAP设备向操作系统的网络栈投递(或“注入”)数据包,从而模拟从外部接受数据的过程。服务器如果拥有TUN/TAP模块,就可以开启VPN代理功能。虚拟网卡TUN/TAP 驱动程序设计原理:
tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。开源项目openvpn ( 下面我们就以fedora 来举例,来看看如何创建虚拟网卡设备
1. 确认内核是否支持tun/tap确认内核是否有tun模块复制代码代码如下: [root@hunterfu]# modinfo tun filename: /lib/modules/2.6..7-.fc.i.PAE/kernel/drivers/net/tun.ko alias: char-major-- license: GPL author: (C) - Max Krasnyansky <maxk@qualcomm.com> description: Universal TUN/TAP device driver srcversion: DEFEDB depends: vermagic: 2.6..7-.fc.i.PAE SMP mod_unload 加载内核模块 -复制代码代码如下: [root@hunterfu ~]# modprobe tun [root@hunterfu ~]# lsmod | grep tun tun 1 执行以上命令后,出现如上输出,说明模块加载成功
2. 创建和配置虚拟网卡确认是否有tunctl命令,如果没有通过yum安装即可复制代码代码如下: [root@hunterfu ~]# yum install tunctl创建虚拟网卡设备复制代码代码如下: [root@hunterfu ~]# tunctl -t tap0 -u root设置虚拟网卡复制代码代码如下: [root@hunterfu ~]# ifconfig tap0 ..0.1 netmask ...0 promisc经过如上操作后,虚拟网卡已经建立和配置好了。
3. 作为系统服务随系统自动启动创建虚拟网卡编写配置脚本(符合chkconfig规范)复制代码代码如下: [root@hunterfu ~]# cat /etc/init.d/config_tap #!/bin/bash # # config_tap Start up the tun/tap virtual nic # # chkconfig: USER="root" TAP_NETWORK="..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 ...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 config_tap on操作完成后,就可以像其他标准服务一样,通过 service config_tap start 来进行创建和启动操作
配置iptables实现本地端口转发的方法详解 场景假如你在用resin调试一个Web程序,需要频繁地重启resin。这个Web程序需要开在端口上,而Linux限制以下的端口必须有root权限才能开启。但是你又
Linux系统下安装配置postfix邮件服务器的教程 一,安装postfix,cyrus-sasl,cyrus-imapd如果yum提示找不到软件包,请换一下源,请参考centos6推荐使用epel源复制代码代码如下:[root@localhost~]#yuminstallpostfix[root
连接Linux的服务器时使用SSH密钥认证及解决自动断连问题 A机器(ssh连接发起端,即客户端):添加一个测试用户aaa复制代码代码如下:[root@A~]#useraddaaasu成aaa复制代码代码如下:[root@A~]#su-aaa[aaa@A~]$ssh-keygen创建rsa
标签: linux用
本文链接地址:https://www.jiuchutong.com/biancheng/353381.html 转载请保留说明!友情链接: 武汉网站建设