Linux虛擬網路基礎 tap(虛擬以太裝置)

2021-08-26 11:52:54 字數 3318 閱讀 5123

虛擬網絡卡tun/tap驅動是乙個開源專案,支援很多的類unix平台,openvpn和vtun都是基於它實現隧道包封裝。本文將介紹tun/tap驅動的使用並分析虛擬網絡卡tun/tap驅動程式在linux環境下的設計思路。

tun/tap驅動程式實現了虛擬網絡卡的功能,tun表示虛擬的是點對點裝置,tap表示虛擬的是乙太網裝置,這兩種裝置針對網路包實施不同的封裝。利用tun/tap驅動,可以將tcp/ip協議棧處理好的網路分包傳給任何乙個使用tun/tap驅動的程序,由程序重新處理後再發到物理鏈路中。

tap 和 tun 的區別:

tap位於網路osi模型的二層(資料鏈路層),tun位於網路的三層。這裡就先簡單的對tap進行一下說明。

如果想使用linux命令列操作乙個tap,首先linux得有tun模組(linux使用tun模組實現了tun和tap)。

檢查方法如下:

# 如果使用命令 modinfo tun,有輸出的話,就說明具有tun模組

[root@public ~]# modinfo tun

filename: /lib/modules/3.10

.0-693.11

.1.el7.x86_64/kernel/drivers/net/tun.ko

.xzalias: devname:net/tun

alias: char-major-10-200

license: gpl

author: (c) 1999-2004 max krasnyansky .com>

description: universal tun/tap device driver

rhelversion:

7.4srcversion:

4e9f57a6269cfd0f4be4021

depends:

intree:

yvermagic:

3.10

.0-693.11

.1.el7.x86_64 smp mod_unload modversions

signer: centos linux kernel signing key

sig_key:

61:b8:e8:7b:84:11:84:f6:2f:80:d6:07:79:ab:69:2a:49:d8:3b:af

sig_hashalgo: sha256

[root@public ~]#

當linux版本具有tun模組時,還得看看其是否已經載入,檢查方式如下:

# 使用該命令檢查後,無回顯,表示當前未載入該模組

[root@public ~]# lsmod | grep tun

[root@public ~]#

# 使用該命令載入該模組

[root@public ~]# modprobe tun

[root@public ~]#

[root@public ~]# lsmod | grep tun

tun 31621

0

載入模組後,還需要linux是否有操作tun/tap的命令列工具tunctl。

[root@public ~]# yum -y install tunctl

具備tun模組和tunctl以後,就可以建立乙個tap裝置,命令:

[root@public ~]# tunctl -t tap_test

set 'tap_test' persistent and owned by uid 0

[root@public ~]# ip link list

1: lo: mtu 65536 qdisc noqueue state unknown mode default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0:

mtu 1500 qdisc pfifo_fast state up mode default qlen 1000

link/ether fa:16:3e:08:0b:39 brd ff:ff:ff:ff:ff:ff

3: tap_test:

mtu 1500 qdisc noop state down mode default qlen 1000

link/ether ce:cc:18:91:1e:ba brd ff:ff:ff:ff:ff:ff

[root@public ~]#

[root@public ~]# ip addr add local 192.168.10.100/24 dev tap_test

[root@public ~]# ip a s

1: lo: mtu 65536 qdisc noqueue state unknown qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0:

mtu 1500 qdisc pfifo_fast state up qlen 1000

link/ether fa:16:3e:08:0b:39 brd ff:ff:ff:ff:ff:ff

inet 192.168.10.93/24 brd 192.168.10.255 scope global noprefixroute dynamic eth0

valid_lft 75733sec preferred_lft 75733sec

inet6 fe80::f816:3eff:fe08:b39/64 scope link

valid_lft forever preferred_lft forever

3: tap_test:

mtu 1500 qdisc noop state down qlen 1000

link/ether ce:cc:18:91:1e:ba brd ff:ff:ff:ff:ff:ff

inet 192.168.10.100/24 scope global tap_test

valid_lft forever preferred_lft forever

[root@public ~]#

linux下的tap新增(虛擬網絡卡)

決定堅持混linux,當然繼續走低端路線,用ubuntu。因為很多資料庫都在各種雲上,開了openvpn還不夠,還要同時幾個不同的資料庫一起開著查東西。於是又兼職當了回網管。基本的修改步驟是先ifconfig查好自己的乙太網的inte ce name 接下來去修改 etc network inte ...

Linux 虛擬機器使用tap裝置

但是bochs使用tap模式,卻一直提示tap0 is not running,比較發現正常介面會有running狀態,但是tap介面只有up狀態,沒有running,那就沒辦法了,我只知道如何讓乙個介面up,不知道怎麼讓他running。所以就放棄了,然後使用tuntap模式,ethdev指定為 ...

網路虛擬化之linux虛擬網路基礎

在linux裡面devic 裝置 與傳統網路概念裡的物理裝置 如交換機 路由器 不同,linux所說的裝置,其背後指的是乙個類似於資料結構 核心模組或裝置驅動這樣的含義。就是說device可能只是軟體系統裡的乙個驅動,乙個函式介面。tap位於二層資料鏈路層,tun位於三層網路層,兩者在linux裡的...