CentOS下使用TUN/TAP虛擬網卡的基本教程

來源:互聯網
上載者:User

標籤:tap tun centos tapctl

在電腦網路中,TUN與TAP是作業系統核心中的虛擬網路裝置。不同於普通靠硬體網路板卡實現的裝置,這些虛擬網路裝置全部用軟體實現,並向運行於作業系統上的軟體提供與硬體的網路裝置完全相同的功能。
TAP 等同於一個乙太網路裝置,它操作第二層資料包如乙太網路資料幀。TUN類比了網路層裝置,操作第三層資料包比如IP資料封包。
作業系統通過TUN/TAP裝置向綁定該裝置的使用者空間的程式發送資料,反之,使用者空間的程式也可以像操作硬體網路裝置那樣,通過TUN/TAP裝置發送資料。在後種情況下,TUN/TAP裝置向作業系統的網路棧投遞(或“注入”)資料包,從而類比從外部接受資料的過程。
伺服器如果擁有TUN/TAP模組,就可以開啟VPN代理功能。
虛擬網卡TUN/TAP 驅動程式設計原理:
650) this.width=650;" alt="20151120120604752.jpg (553×396)" src="http://files.jb51.net/file_images/article/201511/20151120120604752.jpg?2015102012612" style="border:1px solid rgb(204,204,204);vertical-align:bottom;padding:1px;" />

tun/tap 驅動程式實現了虛擬網卡的功能,tun表示虛擬是點對點裝置,tap表示虛擬是乙太網路裝置,這兩種裝置針對網路包實施不同的封裝。
利用tun/tap 驅動,可以將tcp/ip協議棧處理好的網路分包傳給任何一個使用tun/tap驅動的進程,由進程重新處理後再發到物理鏈路中。
開源項目openvpn ( http://openvpn.sourceforge.net)和Vtun( http://vtun.sourceforge.net)都是利用tun/tap驅動實現的隧道封裝。

1. 確認核心是否支援tun/tap
確認核心是否有tun模組

[[email protected]_196_26_centos ~]# modinfo tun

filename:       /lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/net/tun.ko

alias:          devname:net/tun

alias:          char-major-10-200

license:        GPL

author:         (C) 1999-2004 Max Krasnyansky <[email protected]>

description:    Universal TUN/TAP device driver

rhelversion:    7.2

srcversion:     B59BCB1255A36FBC7557FC3

depends:        

intree:         Y

vermagic:       3.10.0-327.el7.x86_64 SMP mod_unload modversions 

signer:         CentOS Linux kernel signing key

sig_key:        79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3

sig_hashalgo:   sha256

載入核心模組

[[email protected]_196_26_centos ~]# modprobe tun

[[email protected]_196_26_centos ~]# lsmod | grep tun

tun                    27141  0 

執行以上命令後,出現如上輸出,說明模組載入成功

2. 建立和配置虛擬網卡
確認是否有tunctl命令,如果沒有通過yum安裝即可

centos6通過直接通過yum install tunctl -y安裝

(以上參考的http://www.jb51.net/LINUXjishu/401735.html)

centos7安裝之前需要新增yum源(參考的https://pkgs.org/centos-7/nux-misc-x86_64/tunctl-1.5-12.el7.nux.x86_64.rpm.html)

Install Howto

  1. Create the repository config file /etc/yum.repos.d/nux-misc.repo:

    [nux-misc]name=Nux Miscbaseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/enabled=0gpgcheck=1gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
  2. Install tunctl rpm package:

    # yum --enablerepo=nux-misc install tunctl

建立虛擬網卡裝置


[[email protected]_196_26_centos ~]# tunctl -t tap0 -u root

Set ‘tap0‘ persistent and owned by uid 0

[[email protected]_196_26_centos ~]# ifconfig tap0 192.168.0.1 netmask 255.255.255.0 promisc

[[email protected]_196_26_centos ~]# ifconfig tap0                                          

tap0: flags=4355<UP,BROADCAST,PROMISC,MULTICAST>  mtu 1500

        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255

        ether 5e:04:f6:78:9a:01  txqueuelen 500  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

經過如上操作後,虛擬網卡已經建立和配置好了。

下面再用另一個命令添加一個tap1(參考https://www.mylinuxplace.com/create-taptun-device-centos-7/)


[[email protected]_196_26_centos ~]# ip tuntap add tap1 mode tap

[[email protected]_196_26_centos ~]# ifconfig tap1 10.0.0.1/30

[[email protected]_196_26_centos ~]# ifconfig tap1

tap1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

        inet 10.0.0.1  netmask 255.255.255.252  broadcast 10.0.0.3

        ether 2e:69:ab:20:0d:a7  txqueuelen 500  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


3.最後怎麼刪除tap0、tap1呢?(參考的http://blog.csdn.net/zhaihaifei/article/details/23168621)

[[email protected]_196_26_centos ~]# tunctl -d tap0

Set ‘tap0‘ nonpersistent

[[email protected]_196_26_centos ~]# tunctl -d tap1

Set ‘tap1‘ nonpersistent

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/8A/12/wKioL1glt42AtAaXAAB3KlT59k8433.png" title="刪除tap0 tap1.png" alt="wKioL1glt42AtAaXAAB3KlT59k8433.png" />



CentOS下使用TUN/TAP虛擬網卡的基本教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.