国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > 深入理解SDN之一-虛擬機(jī)互連

深入理解SDN之一-虛擬機(jī)互連

時(shí)間:2023-06-28 20:18:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-06-28 20:18:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)

深入理解SDN之一-虛擬機(jī)互連:

深入理解SDN之一-虛擬機(jī)互連

在《深入理解k8s網(wǎng)絡(luò)原理》中我們已經(jīng)把容器網(wǎng)絡(luò)的各個(gè)細(xì)節(jié)都介紹過(guò)了,大多數(shù)情況下,容器平臺(tái)都是基于云平臺(tái)的基礎(chǔ)上搭建的,這就意味著在容器平臺(tái)的網(wǎng)絡(luò)和物理網(wǎng)絡(luò)之間還有一層SDN的存在,接下來(lái)我們繼續(xù)探究SDN的相關(guān)原理,還是老套路,百聞不如一練,定個(gè)小目標(biāo),全程用linux命令把一個(gè)SDN搭出來(lái)。

在接下來(lái)的內(nèi)容,會(huì)涉及到云計(jì)算技術(shù)中的虛擬化軟件定義網(wǎng)絡(luò),所以感覺(jué)標(biāo)題更應(yīng)該叫云計(jì)算入門,但我覺(jué)得不用糾結(jié)標(biāo)題叫什么,領(lǐng)會(huì)精神就是了。

下面介紹一下我們的小目標(biāo):

目標(biāo)

我們的目標(biāo)是在兩臺(tái)裸金屬服務(wù)上,使用QEMU、linux虛擬網(wǎng)絡(luò)設(shè)備bridge、veth、tap及network namespace等技術(shù),創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò)(類似VPC),里面包含兩個(gè)子網(wǎng),子網(wǎng)1的網(wǎng)段為172.25.1.0/24,有兩臺(tái)VM,分別為VM1和VM2,子網(wǎng)2的網(wǎng)段為172.25.2.0/24,有VM3和VM4,相同子網(wǎng)的VM使用虛擬交換機(jī)連接,兩個(gè)子網(wǎng)用虛擬路由器連接,同時(shí)演示SDN中的ACL,安全組,浮動(dòng)IP,NAT等功能

鑒于我們?cè)谥暗膬?nèi)容中已經(jīng)介紹過(guò)容器網(wǎng)絡(luò)的原理了,即將要介紹的SDN與容器網(wǎng)絡(luò)有哪些區(qū)別呢?

下面出現(xiàn)的主機(jī)指的是裸金屬服務(wù)器

容器網(wǎng)絡(luò)與SDN的區(qū)別

所以,SDN其實(shí)比容器網(wǎng)絡(luò)要復(fù)雜很多,但實(shí)現(xiàn)的套路還是那幾樣,linux bridge/linux network namespace/veth/tap/iptables等,有些我們前面的內(nèi)容也簡(jiǎn)單介紹過(guò);

另外,一臺(tái)虛擬機(jī)本質(zhì)上就是一個(gè)qemu進(jìn)程,虛擬機(jī)的配置,硬盤,外設(shè)都可以用qemu的啟動(dòng)參數(shù)來(lái)配置,qemu的詳細(xì)參數(shù)有很多,感興趣可以自行g(shù)oogle,這里只介紹用到的。下面正式開(kāi)搞!

環(huán)境介紹

實(shí)驗(yàn)環(huán)境物理拓?fù)?/figcaption>
  • client為ubuntu 16.4
  • server為centos8.0,需要安裝QEMU

安裝QEMU

  • 首先要開(kāi)啟server1和server2的CPU虛擬化(各主板BIOS設(shè)置不同,各位請(qǐng)自行GOOGLE)
  • 在server1和server2中安裝QEMU
yum install -y qemu-kvm qemu

制作操作系統(tǒng)鏡像(如果有制作好的虛擬機(jī)硬盤文件請(qǐng)略過(guò)此步驟)

在server1上進(jìn)行操作

  • 創(chuàng)建虛擬硬盤文件,容量為10G
qemu-img create -f raw /home/vm/centos.raw 10G
  • 下載centos的ISO鏡像
wget https://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso -O /home/os/centos.iso
  • 啟動(dòng)QEMU給虛擬硬盤安裝操作系統(tǒng)
qemu-kvm -enable-kvm -smp 2,cores=2 -m 2048 -hda /home/os/centos.iso -hdb /home/vm/centos.raw /-vnc 0.0.0.0:0
  • 用client的ubuntu自帶的remmina remote desktop client連接上面啟動(dòng)的qemu,完成操作系統(tǒng)的安裝
用rdc連接vm
注意上面的-vnc參數(shù),0.0.0.0:0時(shí),用rdc連的時(shí)候用端口5900連接,0.0.0.0:1時(shí),用5901連接,依次類推……
  • 啟用dhcp
安裝完后,配置一下,把文件/etc/sysconfig/network-scripts/ifcfg-eth0ONBOOT改為yes,這樣vm啟動(dòng)后就會(huì)通過(guò)dhcp去獲取IP地址了,這個(gè)配置主要為后面使用dhcp服務(wù)作準(zhǔn)備;

cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"BOOTPROTO="dhcp"ONBOOT="yes"TYPE="Ethernet"PERSISTENT_DHCLIENT="yes"
ifcfg-eth0文件與網(wǎng)卡名有關(guān),如果你的鏡像的默認(rèn)網(wǎng)卡名為eno1,則文件名為ifcfg-eno1
上面的操作完成后/home/vm/centos.raw就是我們制作好的操作系統(tǒng)模版了,把該文件復(fù)制到server2的相同目錄下

啟動(dòng)虛擬機(jī)

在server1操作:

  • 從模版復(fù)制虛擬機(jī)硬盤文件
cp /home/vm/centos.raw /home/vm/vm1.raw
  • 創(chuàng)建虛擬機(jī)網(wǎng)卡,這里使用tap設(shè)備
ip tuntap add tap1 mode tapip link set tap1 up
  • 啟動(dòng)虛擬機(jī)
qemu-kvm -enable-kvm -name vm1 -smp 1,cores=1 -m 2048 -hda /home/vm/vm1.raw /-netdev tap,id=hostnet0,vhost=on,vhostfd=4,ifname=tap1,script=no 4<>/dev/vhost-net /-device virtio-net-pci,netdev=hostnet0,id=net0 /-vnc 0.0.0.0:1這樣就創(chuàng)建了一臺(tái)1核2G的虛擬機(jī),cores是CPU核數(shù),-m是內(nèi)存,-hda是硬盤文件,-netdev是網(wǎng)卡配置,注意里面的ifname=tap1tap1是我們上一步創(chuàng)建的虛擬網(wǎng)卡設(shè)備,-vnc是通過(guò)vnc連接該vm的地址;

如果要給vm1再掛一個(gè)盤,只需要再創(chuàng)建一個(gè)硬盤文件:

qemu-img create -f raw /home/vm/vm1-ext-hda1.raw 10G然后啟動(dòng):

qemu-kvm -enable-kvm -name vm1 -smp 1,cores=1 -m 2048 -hda /home/vm/vm1.raw -hdb /home/vm/vm1-ext-hda1.raw /-netdev tap,id=hostnet0,vhost=on,vhostfd=4,ifname=tap1,script=no 4<>/dev/vhost-net /-device virtio-net-pci,netdev=hostnet0,id=net0 /-vnc 0.0.0.0:1
所以其實(shí)虛擬機(jī)的一個(gè)盤對(duì)應(yīng)的就是主機(jī)的一個(gè)文件,軟件定義存儲(chǔ)主要就是解決如何在所有物理節(jié)點(diǎn)都可以用/home/vm/vm1.raw訪問(wèn)到相同的文件,例如CEPH,不過(guò)這并不是本篇的重點(diǎn)
  • 用client的remmina remote desktop client連接vm1,設(shè)置IP地址為172.25.1.10/24,默認(rèn)網(wǎng)關(guān)為172.25.1.1
vm1

連接兩臺(tái)vm

其實(shí)連接同子網(wǎng)的多臺(tái)vm非常簡(jiǎn)單,把多臺(tái)vm的網(wǎng)卡插入到一個(gè)linux bridge設(shè)備,并設(shè)置vm在IP在相同的網(wǎng)段即可,不需要其它的配置,下面我們繼續(xù)在server1主機(jī)上創(chuàng)建一臺(tái)名為vm2的虛擬機(jī),并與vm1實(shí)現(xiàn)互連,創(chuàng)建vm2的步驟與上述的vm1類似,不再一一解釋了:

  • 創(chuàng)建vm2
cp /home/vm/centos.raw /home/vm/vm2.rawip tuntap add tap2 mode tapip link set tap2 upqemu-kvm -enable-kvm -name vm2 -smp 1,cores=1 -m 2048 -hda /home/vm/vm2.raw /-netdev tap,id=hostnet0,vhost=on,vhostfd=4,ifname=tap2,script=no 4<>/dev/vhost-net /-device virtio-net-pci,netdev=hostnet0,id=net0 /-vnc 0.0.0.0:2
注意vnc的端口都要在vm1的基礎(chǔ)上加1,否則會(huì)沖突
  • 用client的remmina remote desktop client連接vm2,設(shè)置IP地址172.25.1.11/24,默認(rèn)網(wǎng)關(guān)為172.25.1.1
vm2
  • 創(chuàng)建虛擬交換機(jī),這里我們直接使用linux bridge,當(dāng)然也可以使用ovs
ip link add br0 type bridgeip link set br0 up
  • 把兩臺(tái)VM的網(wǎng)卡連入到虛擬交換機(jī)
ip link set tap1 master br0ip link set tap2 master br0
  • 此時(shí),vm1和vm2應(yīng)該是可以相互ping通了
vm1 ping vm2

VM通過(guò)路由器上外網(wǎng)

所謂的虛擬路由器,其實(shí)就是一個(gè)獨(dú)立的linux network namespace

  • 創(chuàng)建虛擬路由器
ip netns add router
  • 連接虛擬路由器router并接入前面創(chuàng)建的虛擬交換機(jī)br0
ip link add eth-sub1 type veth peer name router-br0ip link set eth-sub1 netns routerip netns exec router ip addr add 172.25.1.1/24 dev eth-sub1ip netns exec router ip link set eth-sub1 upip link set router-br0 master br0ip link set router-br0 up
  • 設(shè)置虛擬路由器與server1主機(jī)連接,給該網(wǎng)絡(luò)分配一個(gè)虛擬的出口IP169.254.10.10
ip link add eth-out type veth peer name router-vethip link set eth-out netns routerip netns exec router ip link set lo upip netns exec router ip addr add 169.254.10.10/32 dev eth-outip netns exec router ip link set eth-out upip netns exec router ip route add default via 169.254.10.253 dev eth-out onlinkip netns exec router iptables -A POSTROUTING -t nat -o eth-out -j MASQUERADE ip link set router-veth upecho 1 > /proc/sys/net/ipv4/conf/router-veth/proxy_arp此時(shí)整個(gè)拓?fù)淙缦拢?br>
物理機(jī)與vm拓?fù)?/figcaption>
  • 主機(jī)上設(shè)置NAT規(guī)則,對(duì)來(lái)源IP為169.254.10.10的數(shù)據(jù)包進(jìn)行源地址轉(zhuǎn)換,去往該地址的包走router-veth網(wǎng)卡(就是引導(dǎo)給虛擬路由器)
ip route add 169.254.10.10 dev router-vethiptables -A POSTROUTING -t nat -s 169.254.10.10 -j MASQUERADE
  • 此時(shí),兩臺(tái)vm應(yīng)該可以ping通百度了
vm1 ping baidu

總結(jié)

我們使用qemu創(chuàng)建了兩臺(tái)VM,并且用linux bridge連接了兩臺(tái)vm,通過(guò)linux network namespace作為虛擬路由器為vm上外網(wǎng)提供了IP偽裝;

其實(shí)從網(wǎng)絡(luò)的角度來(lái)說(shuō),只是連接同節(jié)點(diǎn)的兩臺(tái)VM和連接外網(wǎng),SDN的處理和CNI是有很多相似之處的,后面介紹子網(wǎng)、ACL、安全組時(shí)才慢慢體現(xiàn)出區(qū)別。

上面我們啟動(dòng)完VM后,總是需要使用remmina remote desktop client連接VM設(shè)置IP,有沒(méi)有辦法讓VM啟動(dòng)后自動(dòng)獲取我們指定的IP呢?下一章我們來(lái)介紹給虛擬機(jī)設(shè)置固定IP。

關(guān)鍵詞:虛擬,理解,深入

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉