LINUX虛擬化網(wǎng)絡(luò)

Linux虛擬化網(wǎng)絡(luò)之veth設(shè)備

在linux系統(tǒng)中,veth設(shè)備模擬成對(duì)的網(wǎng)卡接口,veth設(shè)備總是成對(duì)出現(xiàn),當(dāng)一個(gè)設(shè)備接收到協(xié)議棧的數(shù)據(jù)后,會(huì)將數(shù)據(jù)發(fā)送另外一個(gè)設(shè)備上。

下面通過(guò)例子說(shuō)明veth設(shè)備如何使用

1:通過(guò)ip link命令添加一個(gè)veth設(shè)備

ip link add veth0

type veth peer name veth1

2:此時(shí)通過(guò)ip link可以查看到新增加的設(shè)備

3:激活設(shè)備

ip link set veth0 up

ip link set veth1 up

4:為veth0和veth1配置IP地址

ip addr add 172.17.10.10/24 dev veth0

ip addr add 172.17.10.11/24 dev veth1

5:查看配置的IP地址

6:使用ping命令互相ping可以ping通

LINUX虛擬設(shè)備tun/tap

Tun/tap是linux下的虛擬網(wǎng)卡設(shè)備,該設(shè)備一端連接linux內(nèi)核協(xié)議棧,一端連接應(yīng)用程序。其與普通硬件網(wǎng)卡差別如下圖所示:

Tun設(shè)備的另外一端是一個(gè)應(yīng)用程序,通常情況下,可以使用tun/tap設(shè)備完成vpn工作。

Tun只能支持處理IP層的數(shù)據(jù)包,Tap設(shè)備支持處理鏈路mac層數(shù)據(jù)包。

Tun/tap設(shè)備使用

使用之前需要安裝tunctl命令工具(Ubuntu下可以通過(guò)apt install uml-utilities安裝)

1:創(chuàng)建一個(gè)tap設(shè)備

tunctl -t liw-tab

2:為tap設(shè)備添加IP地址

ip addr add 172.18.10.10/24 dev liw-tab

3:激活tab設(shè)備

ip link set liw-tab up

4:一般場(chǎng)景下,tun/tap設(shè)備經(jīng)常被用于實(shí)現(xiàn)vpn,其過(guò)程如下

1)創(chuàng)建一個(gè)tun/tap設(shè)備,在該設(shè)備上配置IP地址等信息,這樣,其他應(yīng)用程序(這里稱這些程序?yàn)锳)將看到一個(gè)配置了IP地址的網(wǎng)卡。

2)? Vpn程序B打開(kāi)設(shè)備/dev/net/tun,并從該設(shè)備上讀取數(shù)據(jù)。

3) 此時(shí)A程序發(fā)送出的任何數(shù)據(jù)包,都會(huì)被系統(tǒng)送到VPN程序B上,從而B(niǎo)可以對(duì)這些數(shù)據(jù)包進(jìn)行處理,當(dāng)B處理完成后,B將打包后的數(shù)據(jù)包通過(guò)真實(shí)的網(wǎng)絡(luò)接口發(fā)送到網(wǎng)絡(luò)上。

LINUX虛擬設(shè)備虛擬網(wǎng)橋

Linux系統(tǒng)中的bridge可以看作現(xiàn)實(shí)網(wǎng)絡(luò)中的交換機(jī)設(shè)備,linux-bridge具備網(wǎng)絡(luò)設(shè)備的一切特征,可以有多個(gè)端口。

Linux-bridge使用方式如下

1:在系統(tǒng)中創(chuàng)建也給網(wǎng)橋

可以通過(guò)brctl addbr liw-br0命令創(chuàng)建一個(gè)名稱為liw-br0的網(wǎng)橋設(shè)備。

2:可以將veth設(shè)備連接到網(wǎng)橋上

ip link set dev veth0 master liw-br0

3:可以將tap設(shè)備連接到網(wǎng)橋上

ip link set dev tap0 master liw-br0

此時(shí)通過(guò)veth1 ping veth0的地址,無(wú)法正常訪問(wèn),此時(shí)說(shuō)明veth0上的ip地址已經(jīng)無(wú)意義,可以刪除掉veth0的地址,并將地址配置在bridge上,然后通過(guò)ip link set dev liw-br0 up激活網(wǎng)橋設(shè)備,此時(shí)則可以正常訪問(wèn)veth0的地址。

Linux-bridge常用在如下場(chǎng)景下

1:虛擬機(jī)場(chǎng)景下,虛擬機(jī)通過(guò)tun設(shè)備,將虛擬機(jī)內(nèi)的網(wǎng)卡同br0連接起來(lái),這樣虛擬機(jī)內(nèi)部發(fā)出的數(shù)據(jù)包,不需要經(jīng)過(guò)host主機(jī)的協(xié)議棧,從而達(dá)到和真實(shí)交換機(jī)相同的效果。

2:docker場(chǎng)景

處于不同namespace下的容器,通過(guò)veth設(shè)備將dockers容器內(nèi)的網(wǎng)卡與bridge連接起來(lái),從而支持dockers內(nèi)訪問(wèn)外部網(wǎng)絡(luò)的能力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容