溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行macvlan網(wǎng)絡(luò)結(jié)構(gòu)分析

發(fā)布時(shí)間:2021-11-19 10:32:10 來源:億速云 閱讀:163 作者:柒染 欄目:云計(jì)算

如何進(jìn)行macvlan網(wǎng)絡(luò)結(jié)構(gòu)分析,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

macvlan 網(wǎng)絡(luò)結(jié)構(gòu)分析

macvlan 不依賴 Linux bridge,brctl show 可以確認(rèn)沒有創(chuàng)建新的 bridge。

查看一下容器 bbox1 的網(wǎng)絡(luò)設(shè)備

除了 lo,容器只有一個(gè) eth0,請(qǐng)注意 eth0 后面的 @if4,這表明該 interface 有一個(gè)對(duì)應(yīng)的 interface,其全局的編號(hào)為 4。根據(jù) macvlan 的原理,我們有理由猜測(cè)這個(gè) interface 就是主機(jī)的 enp0s9,確認(rèn)如下:

可見,容器的 eth0 就是 enp0s9 通過 macvlan 虛擬出來的 interface。容器的 interface 直接與主機(jī)的網(wǎng)卡連接,這種方案使得容器無需通過 NAT 和端口映射就能與外網(wǎng)直接通信(只要有網(wǎng)關(guān)),在網(wǎng)絡(luò)上與其他獨(dú)立主機(jī)沒有區(qū)別。當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)如圖所示:

用 sub-interface 實(shí)現(xiàn)多 macvlan 網(wǎng)絡(luò)

macvlan 會(huì)獨(dú)占主機(jī)的網(wǎng)卡,也就是說一個(gè)網(wǎng)卡只能創(chuàng)建一個(gè) macvlan 網(wǎng)絡(luò),否則會(huì)報(bào)錯(cuò):

但主機(jī)的網(wǎng)卡數(shù)量是有限的,如何支持更多的 macvlan 網(wǎng)絡(luò)呢?

好在 macvlan 不僅可以連接到 interface(如 enp0s9),也可以連接到 sub-interface(如 enp0s9.xxx)。

VLAN 是現(xiàn)代網(wǎng)絡(luò)常用的網(wǎng)絡(luò)虛擬化技術(shù),它可以將物理的二層網(wǎng)絡(luò)劃分成多達(dá) 4094 個(gè)邏輯網(wǎng)絡(luò),這些邏輯網(wǎng)絡(luò)在二層上是隔離的,每個(gè)邏輯網(wǎng)絡(luò)(即 VLAN)由 VLAN ID 區(qū)分,VLAN ID 的取值為 1-4094。

Linux 的網(wǎng)卡也能支持 VLAN(apt-get install vlan),同一個(gè) interface 可以收發(fā)多個(gè) VLAN 的數(shù)據(jù)包,不過前提是要?jiǎng)?chuàng)建 VLAN 的 sub-interface。

比如希望 enp0s9 同時(shí)支持 VLAN10 和 VLAN20,則需創(chuàng)建 sub-interface enp0s9.10 和 enp0s9.20。

在交換機(jī)上,如果某個(gè) port 只能收發(fā)單個(gè) VLAN 的數(shù)據(jù),該 port 為 Access 模式,如果支持多 VLAN,則為 Trunk 模式,所以接下來實(shí)驗(yàn)的前提是:

enp0s9 要接在交換機(jī)的 trunk 口上。不過我們用的是 VirtualBox 虛擬機(jī),則不需要額外配置了。

如果大家想了解更多 Linux VLAN 實(shí)踐,可參看 CloudMan 《每天5分鐘玩轉(zhuǎn) OpenStack》中的相關(guān)章節(jié)。

下面演示如何在 enp0s9.10 和 enp0s9.20 上創(chuàng)建 macvlan 網(wǎng)絡(luò)。

首先編輯 host1 和 host2 的 /etc/network/interfaces,配置 sub-

auto enp0s9

iface enp0s9 inet manual

auto enp0s9.10

iface enp0s9.10 inet manual

vlan-raw-device enp0s9

auto enp0s9.20

iface enp0s9.20 inet manual

vlan-raw-device enp0s9

然后啟用 sub-interface:

ifup enp0s9.10

ifup enp0s9.20


創(chuàng)建 macvlan 網(wǎng)絡(luò):

docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.1 -o parent=enp0s9.10 mac_net10

docker network create -d macvlan --subnet=172.16.20.0/24 --gateway=172.16.20.1 -o parent=enp0s9.20 mac_net20


在 host1 中運(yùn)行容器:

docker run -itd --name bbox1 --ip=172.16.10.10 --network mac_net10 busybox

docker run -itd --name bbox2 --ip=172.16.20.10 --network mac_net20 busybox


在 host2 中運(yùn)行容器:

docker run -itd --name bbox3 --ip=172.16.10.11 --network mac_net10 busybox

docker run -itd --name bbox4 --ip=172.16.20.11 --network mac_net20 busybox

關(guān)于如何進(jìn)行macvlan網(wǎng)絡(luò)結(jié)構(gòu)分析問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI