在Linux系统下使用TUN/TAP虚拟网卡的基本教程 |
本文标签:Linux,虚拟网卡 在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备 。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能 。 tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装 。 1. 确认内核是否支持tun/tap 复制代码 代码如下:[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 执行以上命令后,出现如上输出,说明模块加载成功
复制代码 代码如下:[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 经过如上操作后,虚拟网卡已经建立和配置好了 。
复制代码 代码如下:[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 来进行创建和启动操作 |