真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux創(chuàng)建租戶命令,Linux創(chuàng)建文本命令

常見的容器安全威脅有哪些?

以Docker 容器的安全問題為例

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),普定企業(yè)網(wǎng)站建設(shè),普定品牌網(wǎng)站建設(shè),網(wǎng)站定制,普定網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,普定網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

(1) Docker 自身安全

Docker 作為一款容器引擎,本身也會(huì)存在一些安全漏洞,CVE 目前已經(jīng)記錄了多項(xiàng)與 Docker 相關(guān)的安全漏洞,主要有權(quán)限提升、信息泄露等幾類安全問題。

(2) 鏡像安全

由于Docker 容器是基于鏡像創(chuàng)建并啟動(dòng),因此鏡像的安全直接影響到容器的安全。具體影響鏡像安全的總結(jié)如下。

鏡像軟件存在安全漏洞:由于容器需要安裝基礎(chǔ)的軟件包,如果軟件包存在漏洞,則可能會(huì)被不法分子利用并且侵入容器,影響其他容器或主機(jī)安全。

倉庫漏洞:無論是Docker 官方的鏡像倉庫還是我們私有的鏡像倉庫,都有可能被攻擊,然后篡改鏡像,當(dāng)我們使用鏡像時(shí),就可能成為攻擊者的目標(biāo)對象。

用戶程序漏洞:用戶自己構(gòu)建的軟件包可能存在漏洞或者被植入惡意腳本,這樣會(huì)導(dǎo)致運(yùn)行時(shí)提權(quán)影響其他容器或主機(jī)安全。

(3) Linux 內(nèi)核隔離性不夠

盡管目前Namespace 已經(jīng)提供了非常多的資源隔離類型,但是仍有部分關(guān)鍵內(nèi)容沒有被完全隔離,其中包括一些系統(tǒng)的關(guān)鍵性目錄(如 /sys、/proc 等),這些關(guān)鍵性的目錄可能會(huì)泄露主機(jī)上一些關(guān)鍵性的信息,讓攻擊者利用這些信息對整個(gè)主機(jī)甚至云計(jì)算中心發(fā)起攻擊。

而且僅僅依靠Namespace 的隔離是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)橐坏﹥?nèi)核的 Namespace 被突破,使用者就有可能直接提權(quán)獲取到主機(jī)的超級權(quán)限,從而影響主機(jī)安全。

(4) 所有容器共享主機(jī)內(nèi)核

由于同一宿主機(jī)上所有容器共享主機(jī)內(nèi)核,所以攻擊者可以利用一些特殊手段導(dǎo)致內(nèi)核崩潰,進(jìn)而導(dǎo)致主機(jī)宕機(jī)影響主機(jī)上其他服務(wù)。

既然容器有這么多安全上的問題,那么我們應(yīng)該如何做才能夠既享受到容器的便利性同時(shí)也可以保障容器安全呢?下面我?guī)銇碇鸩搅私庀氯绾谓鉀Q容器的安全問題。

如何解決容器的安全問題?

(1) Docker 自身安全性改進(jìn)

事實(shí)上,Docker 從 2013 年誕生到現(xiàn)在,在安全性上面已經(jīng)做了非常多的努力。目前 Docker 在默認(rèn)配置和默認(rèn)行為下是足夠安全的。

Docker 自身是基于 Linux 的多種 Namespace 實(shí)現(xiàn)的,其中有一個(gè)很重要的 Namespace 叫作 User Namespace,User Namespace 主要是用來做容器內(nèi)用戶和主機(jī)的用戶隔離的。在過去容器里的 root 用戶就是主機(jī)上的 root 用戶,如果容器受到攻擊,或者容器本身含有惡意程序,在容器內(nèi)就可以直接獲取到主機(jī) root 權(quán)限。Docker 從 1.10 版本開始,使用 User Namespace 做用戶隔離,實(shí)現(xiàn)了容器中的 root 用戶映射到主機(jī)上的非 root 用戶,從而大大減輕了容器被突破的風(fēng)險(xiǎn)。

因此,我們盡可能地使用Docker 最新版本就可以得到更好的安全保障。

(2) 保障鏡像安全

為保障鏡像安全,我們可以在私有鏡像倉庫安裝鏡像安全掃描組件,對上傳的鏡像進(jìn)行檢查,通過與CVE 數(shù)據(jù)庫對比,一旦發(fā)現(xiàn)有漏洞的鏡像及時(shí)通知用戶或阻止非安全鏡像繼續(xù)構(gòu)建和分發(fā)。同時(shí)為了確保我們使用的鏡像足夠安全,在拉取鏡像時(shí),要確保只從受信任的鏡像倉庫拉取,并且與鏡像倉庫通信一定要使用 HTTPS 協(xié)議。

(3) 加強(qiáng)內(nèi)核安全和管理

由于僅僅依賴內(nèi)核的隔離可能會(huì)引發(fā)安全問題,因此我們對于內(nèi)核的安全應(yīng)該更加重視。可以從以下幾個(gè)方面進(jìn)行加強(qiáng)。

宿主機(jī)及時(shí)升級內(nèi)核漏洞

宿主機(jī)內(nèi)核應(yīng)該盡量安裝最新補(bǔ)丁,因?yàn)楦碌膬?nèi)核補(bǔ)丁往往有著更好的安全性和穩(wěn)定性。

使用Capabilities 劃分權(quán)限

Capabilities 是 Linux 內(nèi)核的概念,Linux 將系統(tǒng)權(quán)限分為了多個(gè) Capabilities,它們都可以單獨(dú)地開啟或關(guān)閉,Capabilities 實(shí)現(xiàn)了系統(tǒng)更細(xì)粒度的訪問控制。

容器和虛擬機(jī)在權(quán)限控制上還是有一些區(qū)別的,在虛擬機(jī)內(nèi)我們可以賦予用戶所有的權(quán)限,例如設(shè)置cron 定時(shí)任務(wù)、操作內(nèi)核模塊、配置網(wǎng)絡(luò)等權(quán)限。而容器則需要針對每一項(xiàng) Capabilities 更細(xì)粒度的去控制權(quán)限,例如:

cron 定時(shí)任務(wù)可以在容器內(nèi)運(yùn)行,設(shè)置定時(shí)任務(wù)的權(quán)限也僅限于容器內(nèi)部;

由于容器是共享主機(jī)內(nèi)核的,因此在容器內(nèi)部一般不允許直接操作主機(jī)內(nèi)核;

容器的網(wǎng)絡(luò)管理在容器外部,這就意味著一般情況下,我們在容器內(nèi)部是不需要執(zhí)行ifconfig、route等命令的 。

由于容器可以按照需求逐項(xiàng)添加Capabilities 權(quán)限,因此在大多數(shù)情況下,容器并不需要主機(jī)的 root 權(quán)限,Docker 默認(rèn)情況下也是不開啟額外特權(quán)的。

最后,在執(zhí)行docker run命令啟動(dòng)容器時(shí),如非特殊可控情況,–privileged 參數(shù)不允許設(shè)置為 true,其他特殊權(quán)限可以使用 --cap-add 參數(shù),根據(jù)使用場景適當(dāng)添加相應(yīng)的權(quán)限。

使用安全加固組件

Linux 的 SELinux、AppArmor、GRSecurity 組件都是 Docker 官方推薦的安全加固組件。下面我對這三個(gè)組件做簡單介紹。

SELinux (Secure Enhanced Linux): 是 Linux 的一個(gè)內(nèi)核安全模塊,提供了安全訪問的策略機(jī)制,通過設(shè)置 SELinux 策略可以實(shí)現(xiàn)某些進(jìn)程允許訪問某些文件。

AppArmor: 類似于 SELinux,也是一個(gè) Linux 的內(nèi)核安全模塊,普通的訪問控制僅能控制到用戶的訪問權(quán)限,而 AppArmor 可以控制到用戶程序的訪問權(quán)限。

GRSecurity: 是一個(gè)對內(nèi)核的安全擴(kuò)展,可通過智能訪問控制,提供內(nèi)存破壞防御,文件系統(tǒng)增強(qiáng)等多種防御形式。

這三個(gè)組件可以限制一個(gè)容器對主機(jī)的內(nèi)核或其他資源的訪問控制。目前,容器報(bào)告的一些安全漏洞中,很多都是通過對內(nèi)核進(jìn)行加強(qiáng)訪問和隔離來實(shí)現(xiàn)的。

資源限制

在生產(chǎn)環(huán)境中,建議每個(gè)容器都添加相應(yīng)的資源限制。下面給出一些執(zhí)行docker run命令啟動(dòng)容器時(shí)可以傳遞的資源限制參數(shù):

1??--cpus ?????????????????????????限制 CPU 配額

2??-m, --memory ???????????????????限制內(nèi)存配額

3??--pids-limit ???????????????????限制容器的 PID 個(gè)數(shù)

例如我想要啟動(dòng)一個(gè)1 核 2G 的容器,并且限制在容器內(nèi)最多只能創(chuàng)建 1000 個(gè) PID,啟動(dòng)命令如下:

1 ?$ docker run -it --cpus=1 -m=2048m --pids-limit=1000 busybox sh

推薦在生產(chǎn)環(huán)境中限制CPU、內(nèi)存、PID 等資源,這樣即便應(yīng)用程序有漏洞,也不會(huì)導(dǎo)致主機(jī)的資源完全耗盡,最大限度降低安全風(fēng)險(xiǎn)。

(4) 使用安全容器

容器有著輕便快速啟動(dòng)的優(yōu)點(diǎn),虛擬機(jī)有著安全隔離的優(yōu)點(diǎn),有沒有一種技術(shù)可以兼顧兩者的優(yōu)點(diǎn),做到既輕量又安全呢?

答案是有,那就是安全容器。安全容器是相較于普通容器的,安全容器與普通容器的主要區(qū)別在于,安全容器中的每個(gè)容器都運(yùn)行在一個(gè)單獨(dú)的微型虛擬機(jī)中,擁有獨(dú)立的操作系統(tǒng)和內(nèi)核,并且有虛擬化層的安全隔離。

安全容器目前推薦的技術(shù)方案是Kata Containers,Kata Container 并不包含一個(gè)完整的操作系統(tǒng),只有一個(gè)精簡版的 Guest Kernel 運(yùn)行著容器本身的應(yīng)用,并且通過減少不必要的內(nèi)存,盡量共享可以共享的內(nèi)存來進(jìn)一步減少內(nèi)存的開銷。另外,Kata Container 實(shí)現(xiàn)了 OCI 規(guī)范,可以直接使用 Docker 的鏡像啟動(dòng) Kata 容器,具有開銷更小、秒級啟動(dòng)、安全隔離等許多優(yōu)點(diǎn)。

如何在Linux發(fā)行版上安裝和配置KVM和Open vSwitch

在如今多租戶模式的數(shù)據(jù)中心環(huán)境下,虛擬化技術(shù)正從傳統(tǒng)的基于虛擬機(jī)管理程序的服務(wù)器虛擬化,擴(kuò)展到網(wǎng)絡(luò)虛擬化。在這種環(huán)境下,基于軟件的虛擬交換機(jī)通常連同虛擬機(jī)管理程序一起部署在服務(wù)器上,串聯(lián)起了不同虛擬機(jī)之間傳送的流量。

我在本教程上將演示如何在Ubuntu或Debian上安裝和配置KVM和Open vSwitch(OVS)。KVM和Open vSwitch分別是用于如今的數(shù)據(jù)中心中的最流行的開源虛擬機(jī)管理程序和虛擬交換機(jī)。

將Open vSwitch安裝在Ubuntu或Debian上

雖然OVS以程序包的方式出現(xiàn)在Ubuntu或Debian上,但我在此還是通過源代碼來構(gòu)建OVS,這將擁有最新的功能特性和修正版。

首先,安裝用于構(gòu)建OVS的依賴項(xiàng)。

$?sudo?apt-get?install?build-essential?libssl-dev?linux-headers-$(uname?-r)

通過源代碼來構(gòu)建OVS,如下所示。下列步驟將構(gòu)建OVS內(nèi)核模塊以及OVS用戶空間工具。

$?wget??

$?tar?xvfvz?openvswitch-1.9.3.tar.gz

$?cd?openvswitch-1.9.3

$?./configure?--with-linux=/lib/modules/`uname?-r`/build

$?make

接下來,繼續(xù)在/usr/local/share/下安裝OVS用戶空間組件:

$?sudo?make?install

下一步是,測試OVS內(nèi)核模塊(安裝該模塊之前)。為此,先在內(nèi)核中裝入內(nèi)核模塊。

$?sudo?insmod?./datapath/linux/openvswitch.ko

證實(shí)OVS內(nèi)核模塊已成功裝入。

$?lsmod?|?grep?openvswitch

openvswitch? ? ? ? ? ? 97934? 0

一旦你證實(shí)openvswitch.ko已成功裝入到內(nèi)核中,繼續(xù)安裝內(nèi)核模塊,如下所示。

$?sudo?make?modules_install

配置和啟動(dòng)Open vSwitch

創(chuàng)建一個(gè)框架式OVS配置數(shù)據(jù)庫。

$?sudo?mkdir?/etc/openvswitch

$?sudo?ovsdb-tool?create?/etc/openvswitch/conf.db?./vswit

chd/vswitch.ovsschema

啟動(dòng)OVS數(shù)據(jù)庫服務(wù)器。

$?sudo?ovsdb-server?--remote=punix:/usr/local/var/run/ope

nvswitch/db.sock?-?remote=db:Open_vSwitch,manager_options

--pidfile?--detach

OVS配置數(shù)據(jù)庫初始化。

$?sudo?ovs-vsctl?--no-wait?init

最后,啟動(dòng)OVS守護(hù)程序。

$?sudo?ovs-vswitchd?--pidfile?--detach

將KVM安裝在Ubuntu或Debian上

使用apt-get命令,安裝KVM和必要的用戶空間工具。

$?sudo?apt-get?install?qemu-kvm?libvirt-bin?bridge-utils

virt-manager

將一個(gè)普通的非根用戶(如alice)添加到libvirtd群組,那樣該用戶不需要根用戶權(quán)限,就能啟動(dòng)虛擬機(jī)。

$?sudo?adduser?alice?libvirtd

退出,重新以該用戶身份登錄,讓群組成員的變更生效。

運(yùn)行下面這個(gè)命令。如果你看到空空如也的虛擬機(jī)列表,這意味著KVM已成功設(shè)置完畢。

$?virsh?-c?qemu:///system?list

Id? ? Name? ? ? ? State

為KVM配置Open vSwitch

現(xiàn)在是時(shí)候創(chuàng)建OVS網(wǎng)橋啟動(dòng)腳本了,那樣啟動(dòng)或終止虛擬機(jī)時(shí),OVS就能自動(dòng)配置。

安裝依賴項(xiàng)(用戶模式Linux實(shí)用工具),這些依賴項(xiàng)將用于處理Linux網(wǎng)橋模式。

$?sudo?apt-get?install?uml-utilities

創(chuàng)建網(wǎng)橋啟動(dòng)腳本,如下所示。

$?sudo?vi?/etc/openvswitch/ovs-ifup

#!/bin/sh

switch='br0'

/sbin/ifconfig?$1?0.0.0.0?up

ovs-vsctl?add-port?${switch}?$1

$?sudo?vi?/etc/openvswitch/ovs-ifdown

#!/bin/sh

switch='br0'

/sbin/ifconfig?$1?0.0.0.0?down

ovs-vsctl?del-port?${switch}?$1

$?sudo?chmod?+x?/etc/openvswitch/ovs-if*

然后,創(chuàng)建一個(gè)默認(rèn)的網(wǎng)橋br0,并添加一個(gè)物理網(wǎng)絡(luò)接口,虛擬機(jī)將通過這個(gè)接口與外部網(wǎng)絡(luò)進(jìn)行聯(lián)系。在該教程中,我假設(shè)這類網(wǎng)絡(luò)接口是eth5。

$?sudo?ovs-vsctl?add-br?br0

$?sudo?ovs-vsctl?add-port?br0?eth5

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

現(xiàn)在你可以準(zhǔn)備啟動(dòng)訪客虛擬機(jī)了。

我假設(shè),你已經(jīng)準(zhǔn)備好了一個(gè)訪客虛擬機(jī)映像(比如ubuntu-client.img)。使用下面這個(gè)命令,啟動(dòng)訪客虛擬機(jī)。

$?sudo?kvm?-m?1024?-net?nic,macaddr=11:11:11:EE:EE:EE?-ne

t?tap,script=/etc/openvswitch/ovs-ifup,downscript=/etc/op

envswitch/ovs-ifdown?-vnc?:1?-drive?file=/home/dev/images

/ubuntu-client.img,boot=on

這會(huì)創(chuàng)建并啟動(dòng)一個(gè)訪客虛擬機(jī);一旦訪客虛擬機(jī)啟動(dòng),其虛擬接口就自動(dòng)添加到OVS網(wǎng)橋br0。

你可以使用ovs-vsctl這個(gè)命令,核實(shí)OVS的狀態(tài),如下所示。

這是已啟動(dòng)的虛擬機(jī)的遠(yuǎn)程桌面會(huì)話。

Linux下openstack用neutron更改網(wǎng)絡(luò)的命令?

Neutron能提供虛擬的分布式(這樣就可以實(shí)現(xiàn)跨物理機(jī)虛機(jī)在同一個(gè)vlan)二層vswitch(提供虛擬的network\subnet\port)、三層router、防火墻、負(fù)載均衡等抽象網(wǎng)絡(luò)功能,能為每個(gè)租戶提供獨(dú)立的虛擬網(wǎng)絡(luò)環(huán)境,neutron是用來創(chuàng)建虛擬網(wǎng)絡(luò)的,所謂虛擬網(wǎng)絡(luò),就是虛擬機(jī)啟動(dòng)的時(shí)候會(huì)有一個(gè)虛擬網(wǎng)卡,虛擬網(wǎng)卡會(huì)連接到虛擬switch上,虛擬交換機(jī)連接到虛擬router上,虛擬路由器最終和物理網(wǎng)卡聯(lián)通,從而虛擬網(wǎng)絡(luò)和物理網(wǎng)絡(luò)聯(lián)通起來。

Neutron一般包括三種網(wǎng)絡(luò):

1、External Network/API Network,這個(gè)網(wǎng)絡(luò)是鏈接外網(wǎng)的,無論是用戶調(diào)用OpenStack的API,還是創(chuàng)建出來的虛擬機(jī)要訪問外網(wǎng),或者外網(wǎng)要ssh到虛擬機(jī),都需要通過這個(gè)網(wǎng)絡(luò)。

2、Data Network,數(shù)據(jù)網(wǎng)絡(luò),虛擬機(jī)之間的數(shù)據(jù)傳輸通過這個(gè)網(wǎng)絡(luò)來進(jìn)行,比如一個(gè)虛擬機(jī)要連接到另一個(gè)虛擬機(jī),虛擬機(jī)要連接虛擬路由都是通過這個(gè)網(wǎng)絡(luò)來進(jìn)行

3、Management Network,管理網(wǎng)絡(luò),OpenStack各個(gè)模塊之間的交互,連接數(shù)據(jù)庫,連接Message Queue都是通過這個(gè)網(wǎng)絡(luò)來進(jìn)行。

Horizon上創(chuàng)建一個(gè)neutron網(wǎng)絡(luò)的過程:

1、為這個(gè)Tenant創(chuàng)建一個(gè)private network,不同的private network是需要通過VLAN tagging進(jìn)行隔離的,互相之間廣播(broadcast)不能到達(dá),這里我們我們用的是GRE模式,也需要一個(gè)類似VLANID的東西,稱為Segment ID(當(dāng)然也可以是FLAT模式,不用vlan)

2、為private network創(chuàng)建一個(gè)subnet,subnet才是真正配置IP網(wǎng)段的地方,對于私網(wǎng),我們常常用192.168.0.0/24這個(gè)網(wǎng)段

3、為這個(gè)Tenant創(chuàng)建一個(gè)Router,才能夠訪問外網(wǎng)

4、將private network連接到Router上

5、創(chuàng)建一個(gè)External Network((就是我們上面設(shè)置的192.168.226.138,ens37))

6、創(chuàng)建一個(gè)External Network的Subnet,這個(gè)外網(wǎng)邏輯上代表了我們數(shù)據(jù)中心的物理網(wǎng)絡(luò),通過這個(gè)物理網(wǎng)絡(luò),我們可以訪問外網(wǎng)。因而PUBLIC_GATEWAY應(yīng)該設(shè)為數(shù)據(jù)中心里面的Gateway,PUBLCI_RANGE也應(yīng)該和數(shù)據(jù)中心的物理網(wǎng)絡(luò)的CIDR一致,否則連不通。之所以設(shè)置PUBLIC_START和PUBLIC_END,是因?yàn)樵跀?shù)據(jù)中心中,不可能所有的IP地址都給OpenStack使用,另外的可能搭建了VMware Vcenter,可能有物理機(jī),所以僅僅分配一個(gè)區(qū)間給OpenStack來用。

7、將Router連接到External Network

更多信息可以參考《Linux就該這么學(xué)》

neutron 是怎么創(chuàng)建網(wǎng)絡(luò)

管理員創(chuàng)建外網(wǎng)

我們說過外網(wǎng)要由管理員創(chuàng)建。假設(shè)我們拿到的外部網(wǎng)絡(luò)的IP地址是20.0.2.0/24,可用的地址段是20.0.2.10-20.0.2.20,網(wǎng)關(guān)是20.0.2.1。我們現(xiàn)在就以管理員的身份在horzion上創(chuàng)建一個(gè)外網(wǎng)和子網(wǎng):

以管理員身份登錄后,選擇管理員面板,點(diǎn)擊’Networks’項(xiàng)后顯示當(dāng)前網(wǎng)絡(luò)列表:

在上圖中點(diǎn)擊“Create Network”按鈕彈出“Create Network”窗口:在上面的彈出窗口中,填入網(wǎng)絡(luò)名:ExternalNet,而且勾選External Network然后點(diǎn)擊“Create Network”。

下面是我們剛才創(chuàng)建好的網(wǎng)絡(luò):

現(xiàn)在我們點(diǎn)擊“ExternalNet”查看這個(gè)網(wǎng)絡(luò)的詳細(xì)情況:

在網(wǎng)絡(luò)詳細(xì)情況頁面中,我們點(diǎn)擊“Create Subnet”彈出窗口創(chuàng)建外部網(wǎng)絡(luò)的子網(wǎng):

這是一個(gè)多標(biāo)簽頁面,在上面的“Subnet”頁面中填入子網(wǎng)名,子網(wǎng)CIDR(Network Address)。在下面的“Subnet Detail”頁中填入地址范圍:

注意:因?yàn)橥獠烤W(wǎng)絡(luò)不掛接虛擬機(jī),可以不選澤“Enable DHCP“。最后點(diǎn)擊子網(wǎng)創(chuàng)建窗口上的“Create”完成子網(wǎng)的創(chuàng)建。

租戶demo創(chuàng)建租戶網(wǎng)絡(luò)

我們現(xiàn)在以普通租戶登錄horizon,并點(diǎn)擊“Netowrks”項(xiàng):

點(diǎn)擊上圖的“Create Network”彈出租戶網(wǎng)絡(luò)創(chuàng)建窗口:

顯然,這是一個(gè)多Tab的界面,和我們先前管理員創(chuàng)建網(wǎng)絡(luò)的界面不一樣。在這個(gè)界面里,我們可以一氣完成網(wǎng)絡(luò)和子網(wǎng)的創(chuàng)建。我們在“Network”頁中填入網(wǎng)絡(luò)名,在“Subnet”頁中填入CIDR (Network Address):

“Subnet Datail”頁面可以讓我們填入IP地址池,缺省情況是Neutron使用整個(gè)CIDR規(guī)定的地址范圍。所以我們不關(guān)心“Subnet Datail”頁面。我們點(diǎn)擊“Create”按鈕完成租戶子網(wǎng)的創(chuàng)建。

租戶創(chuàng)建路由器

選擇“Routers”項(xiàng),系統(tǒng)顯示如下頁面:

創(chuàng)建路由器

點(diǎn)擊右面的“Create Router”彈出路由器創(chuàng)建對話框:

這個(gè)對話框及其簡單,我們只需輸入所有的路由器的名字,然后點(diǎn)擊“Create Router”創(chuàng)建路由器。

配置網(wǎng)關(guān)臂

路由器創(chuàng)建出來之后,會(huì)顯示在路由器列表中:

我們點(diǎn)擊“Set Gateway”來設(shè)置這個(gè)路由器的網(wǎng)關(guān)臂:

如上圖所示,我們選擇管理員創(chuàng)建好的外部網(wǎng)絡(luò)“ExternalNet”,然后點(diǎn)擊“Set Gateway”。

配置接口臂

下圖顯示了租戶剛才創(chuàng)建的路由器及其網(wǎng)關(guān)臂:

現(xiàn)在我們點(diǎn)擊路由器名字查看路由器詳情:

為了設(shè)置路由器的接口臂,我們點(diǎn)擊“Add Interface”按鈕彈出“Add Interface”窗口:

上圖顯示的窗口,我們只需選擇我們所要連接的子網(wǎng),然后點(diǎn)擊“Add Interface”。

現(xiàn)在這個(gè)租戶的路由器以及連接了外網(wǎng)和租戶的子網(wǎng),接下來這個(gè)租戶可以創(chuàng)建虛擬機(jī),這個(gè)虛擬機(jī)借助路由器就可以訪問外部網(wǎng)絡(luò)甚至互聯(lián)網(wǎng)。

租戶創(chuàng)建虛擬機(jī)

這里不想詳述創(chuàng)建虛擬機(jī)的過程,我們著重?cái)⑹鲆幌逻@個(gè)過程中如何選擇網(wǎng)絡(luò):

從上面的圖中我們可以看出,租戶可以選擇的網(wǎng)路包括了租戶剛才創(chuàng)建的網(wǎng)絡(luò)。點(diǎn)擊網(wǎng)絡(luò)右邊的“+”符號,或者拖拽這個(gè)網(wǎng)絡(luò)進(jìn)入“Selected Networks”框中,租戶所創(chuàng)建的虛擬機(jī)就會(huì)使用這個(gè)網(wǎng)絡(luò)。

租戶查看網(wǎng)絡(luò)拓?fù)?/p>

最后我想要說的是Horizon工程師費(fèi)盡心思實(shí)現(xiàn)的網(wǎng)絡(luò)拓?fù)鋱D:

從這個(gè)拓?fù)鋱D可以看到我們前面所有操作的結(jié)果:

綠色的是管理員創(chuàng)建的外部網(wǎng)絡(luò)

跨在外部網(wǎng)絡(luò)和租戶網(wǎng)絡(luò)上的是具有網(wǎng)關(guān)臂和接口臂的路由器

藍(lán)色的是租戶網(wǎng)路及其子網(wǎng)

最后是租戶創(chuàng)建的虛擬機(jī)

點(diǎn)擊拓?fù)鋱D上的虛擬機(jī)圖像,我們可以使用VNC訪問虛擬機(jī)的控制臺(tái),如下圖所示:

我們可以看出,這個(gè)虛擬機(jī)從租戶網(wǎng)絡(luò)中獲取到了IP地址:10.0.1.3。它通過租戶自己的路由器能訪問互聯(lián)網(wǎng)。

總結(jié)

是不是有了Neutron就不需要物理網(wǎng)絡(luò)的網(wǎng)絡(luò)工程師了呢?不是的。虛擬網(wǎng)絡(luò)的負(fù)載最終還需要跑到物理網(wǎng)絡(luò)上去傳遞,Neutron只不過是把部分傳統(tǒng)網(wǎng)絡(luò)管理的功能推到了租戶方,比如租戶可以創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò)及其子網(wǎng),創(chuàng)建一個(gè)路由器等等,這個(gè)從上面的操作中可以看出來。在虛擬網(wǎng)絡(luò)功能的幫助下,基礎(chǔ)物理網(wǎng)絡(luò)就可以向外提供額外的網(wǎng)絡(luò)服務(wù)了,比如租戶完全可以創(chuàng)建一個(gè)屬于自己的類似于數(shù)據(jù)中心網(wǎng)絡(luò)的虛擬網(wǎng)絡(luò)。

Neutron提供了比較完善的多租戶環(huán)境下的虛擬網(wǎng)絡(luò)模型以及API。像部署物理網(wǎng)絡(luò)一樣,使用Neutron創(chuàng)建虛擬網(wǎng)絡(luò)時(shí)也需要做一些基本的規(guī)劃和設(shè)計(jì)。本文提出了一個(gè)Neutron環(huán)境下的典型網(wǎng)絡(luò)結(jié)構(gòu)和Horzion下的操作流程。在后續(xù)的博客中,我會(huì)繼續(xù)介紹Neutron的其它功能,比如負(fù)載均衡,防火墻,VPN等。

玩轉(zhuǎn) OpenStack(八.1)Linux Bridge 實(shí)現(xiàn) Neutron 網(wǎng)絡(luò)之Local、Flat、VLAN、DHCP

Neutron 默認(rèn)使用 ML2 作為 core plugin,配置文件 /etc/neutron/neutron.conf 中 core_plugin

計(jì)算節(jié)點(diǎn)和控制節(jié)點(diǎn)都需要在各自的 neutron.conf 中配置 core_plugin

然后配置 ML2 的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中 mechanism_drivers

mechanism_drivers 可以同時(shí)指定多個(gè)。這里只指定了一個(gè)。

查看 linuxbridge 進(jìn)程

控制節(jié)點(diǎn):

計(jì)算節(jié)點(diǎn):

在 Linux Bridge 環(huán)境中,一個(gè)數(shù)據(jù)包從 Instance 發(fā)送到物理網(wǎng)卡會(huì)經(jīng)過下面幾個(gè)類型的設(shè)備:

對于每個(gè) local network,ML2 linux-bridge 會(huì)創(chuàng)建一個(gè) bridge,Instance 的 tap 設(shè)備會(huì)連接到 bridge。位于同一個(gè) local network 的 Instance 會(huì)連接到相同的 bridge,這樣 Instance 之間就可以通訊了。

因?yàn)?local network 沒有與物理網(wǎng)卡相連,所以 Instance 無法與宿主機(jī)之外的網(wǎng)絡(luò)通信。

同時(shí)因?yàn)槊總€(gè) local network 有自己的 bridge,bridge 之間是沒有連通的,所以兩個(gè) local network 之間是不通的。

ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini

type_drivers ML2 加載網(wǎng)絡(luò)類型。

tenant_network_types 普通用戶在自己的 Tenant(Project)中創(chuàng)建網(wǎng)絡(luò)時(shí),默認(rèn)創(chuàng)建哪種 type 的網(wǎng)絡(luò)。

tenant_network_types = vlan, local 意思是當(dāng)沒有 vlan 可創(chuàng)建時(shí),使用 local。

檢測 Neutron Agent 是否正常 管理員 -- 系統(tǒng) -- 系統(tǒng)信息 -- 網(wǎng)絡(luò)代理

從用戶管理創(chuàng)建網(wǎng)絡(luò)

創(chuàng)建網(wǎng)絡(luò) 項(xiàng)目 -- 網(wǎng)絡(luò) -- 網(wǎng)絡(luò)

填寫網(wǎng)絡(luò)名稱

填寫子網(wǎng)信息。 網(wǎng)關(guān) IP 可以不用填寫。默認(rèn)為子網(wǎng)地址的第一個(gè) IP。即:172.16.10.1

添加子網(wǎng) IP 范圍。

點(diǎn)擊網(wǎng)絡(luò)名稱,進(jìn)去相信信息,可以看到子網(wǎng)和端口信息等。

可以看到在端口中已經(jīng)創(chuàng)建了一個(gè) port,名為 “(c45b69e6-04ba)”,IP 為 172.16.10.2。連接設(shè)備為 "network:dhcp"。

打開控制節(jié)點(diǎn)終端,使用 brctl show 查看 linux bridge 的狀態(tài)。

可以看到 bridge 設(shè)備 brqd2fd4378-9e 和 tap 設(shè)備 tapc45b69e6-04

創(chuàng)建 Instance 并選擇剛剛創(chuàng)建的網(wǎng)絡(luò)。

創(chuàng)建 Instance 成功后可以發(fā)現(xiàn)已經(jīng)分配 IP 地址。

在底層中 Neutron 會(huì)在 subnet 中創(chuàng)建一個(gè) port,分配 IP 和 MAC 地址,并將 port 分配給 test。如下圖

點(diǎn)進(jìn)去可以看到詳情

在宿主機(jī)上執(zhí)行 brctl show 可以查看 bridge 的配置。

可以看到 bridge brqd2fd4378-9e 上連接了一個(gè)新的 tap 設(shè)備。

查看 Instance 信息。使用 virsh list 查看 Instance 運(yùn)行中的列表。

使用 virsh edit 1 查看配置信息。

配置信息省略很多。重要的放在上面。

mac address='fa:16:3e:19:e1:57'/ 是 Instance 網(wǎng)卡的 MAC 地址

target dev='tapb337d11f-54'/ 是 Instance 虛擬網(wǎng)卡信息

ping test1 的 IP 地址發(fā)現(xiàn)是可以 ping 通。

查看 brctl show

發(fā)現(xiàn) brqd2fd4378-9e 中又計(jì)入進(jìn)來一個(gè) VIF,因?yàn)閮蓚€(gè) VIF 掛載在同一個(gè) Linux Bridge 上,所以可以通訊。

結(jié)構(gòu)如下:

如果新分的 Instance 在計(jì)算節(jié)點(diǎn)中。不在控制節(jié)點(diǎn)。他們之間將不在互通。

因?yàn)?DHCP agent 在控制節(jié)點(diǎn)上運(yùn)行,test2 在計(jì)算節(jié)點(diǎn)的 local 網(wǎng)絡(luò)上,兩者位于不同物理節(jié)點(diǎn)。由于 local 網(wǎng)絡(luò)的流量只能局限在本節(jié)點(diǎn)之內(nèi),發(fā)送的請求無法到達(dá)計(jì)算節(jié)點(diǎn)。

上圖 物理網(wǎng)卡 eth1 橋接到 brqXXXX,為 Instance 提供 flat 網(wǎng)絡(luò)。

下圖 創(chuàng)建多個(gè) flat Network,就要準(zhǔn)備多個(gè)物理機(jī)網(wǎng)卡。

在 /etc/neutron/plugins/ml2/ml2.conf.ini 配置文件中,修改 tenant_network_types 參數(shù)為 flat

:這里是指定普通用戶使用 flat。因?yàn)?flat 網(wǎng)絡(luò)與物理網(wǎng)卡一一對應(yīng)。一般情況下租戶網(wǎng)絡(luò)不采用 flat。

flat_networks 定義一個(gè) flat 網(wǎng)絡(luò),label 為 “default”

通過 physical_interface_mappings 指名 default 對應(yīng)的物理網(wǎng)卡為 ens35

例如:對于 label 為 “default” 的 flat network,節(jié)點(diǎn) A 可能使用 ens35,配置為:

而 B 節(jié)點(diǎn)則可以使用 ens33,配置為:

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

綁定子網(wǎng)

查看 控制節(jié)點(diǎn)網(wǎng)絡(luò)狀態(tài)

Neutron 自動(dòng)新建了 flat_net 對應(yīng)的網(wǎng)橋 brq9e3013c8-93,以及 dhcp 的 tap 設(shè)備 tap50802894-1a。

此時(shí) tap50802894-1a 和物理網(wǎng)卡 ens35 都已經(jīng)連接到網(wǎng)橋 brq9e3013c8-93 上。

可以看到 Instance 的 tap 設(shè)備 tapc1241c3f-cb 已經(jīng)連接到網(wǎng)橋

配置文件 /etc/neutron/dhcp_agent.ini 中的 dhcp_driver 和 interface_driver

dnsmasq 是一個(gè)提供 DHCP 和 DNS 服務(wù)的開源軟件。

在實(shí)現(xiàn)環(huán)境中使用 ps 命令可以查看到 dnsmasq 進(jìn)程。

DHCP agent 會(huì)為每個(gè) network 創(chuàng)建一個(gè)目錄 /opt/stack/data/neutron/dhcp/xxxx 用于存放該 network 的 dnsmasq 配置文件。

在二層網(wǎng)絡(luò)上,VLAN 可以將一個(gè)交換機(jī)分割成幾個(gè)獨(dú)立的虛擬交換機(jī)。

類似,在三層網(wǎng)絡(luò)上,Linux Network Namespace 可以將一個(gè)物理三層網(wǎng)絡(luò)分割成幾個(gè)獨(dú)立的虛擬三層網(wǎng)絡(luò)。

每個(gè) namespace 都有自己獨(dú)立的網(wǎng)絡(luò)棧,包括 route table,firewall rule,network interface device等

Neutron 通過 dnsmasq 為每個(gè) Network 提供單獨(dú)的 DHCP 和路由服務(wù)。

使用 ip 查看所有 namespcae

使用 neutron 查看 net-list

查看某個(gè) namespace 的詳細(xì)配置

3 個(gè) Instance 通過 tap 設(shè)備連接到名為 “vrqXXXX” 的 Linux Bridge。

在物理網(wǎng)卡 eth1 上創(chuàng)建 eth1.100 的 valn interface,eth1.100 連接到 brqXXXX。

這樣,Instance 通過 eth1.100 發(fā)送到 eth1 的數(shù)據(jù)包就會(huì)打上 vlan100 的 tag。

如果在創(chuàng)建個(gè) network vlan101,eth1 上就會(huì)相應(yīng)的創(chuàng)建多個(gè) vlan interface eht1.101 并連接新的 Linux Bridge “brqYYYY”。

配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中設(shè)置 tenant_network_types 的值為 vlan

配置 vlan 的范圍

意思是:配置定義了 lable 為 “default” 的 valn network,valn id 的范圍是 3001~4000。這里配置的是普通用戶使用的范圍。

admin 可以使用 1~4096 的 valn network

再次指定 vlan network 與物理網(wǎng)卡的對應(yīng)關(guān)系

配置子網(wǎng)

查看系統(tǒng)網(wǎng)橋

這里可以看到:

vlan100 對應(yīng)的網(wǎng)橋?yàn)?brq2b85ebb9-a。

vlan interface 是 ens35.100 (我是用的是 Ubuntu 16.04 默認(rèn)網(wǎng)卡名 ens 開始的。)

DHCP 的 tap 設(shè)備是 tapf85d61d8-c3。

在 計(jì)算節(jié)點(diǎn)查看 網(wǎng)橋信息

可以發(fā)現(xiàn)創(chuàng)建的 Instance 已經(jīng)連接到 vlan100 對應(yīng)的網(wǎng)橋 brq2b85ebb9-a 上。因?yàn)橛?jì)算節(jié)點(diǎn)沒有 DHCP 服務(wù)所以沒有相應(yīng)的 tap 設(shè)備。

另外 網(wǎng)橋的名字與控制節(jié)點(diǎn)是一樣的,都是 brq2b85ebb9-a6,表示是在同一個(gè) network 上。

下圖是我創(chuàng)建 VLAN 后 兩臺(tái) Instance 分別在控制節(jié)點(diǎn)和計(jì)算機(jī)點(diǎn)的網(wǎng)絡(luò)圖

此時(shí)兩臺(tái) Instance 在同一 valn100 下。相互之間是可以 ping 通的。

如果在創(chuàng)建一個(gè) vlan101。如果兩臺(tái) Instance1 和 Instance2 分別連在 vlan100 和 vlan101。此時(shí)兩臺(tái) Instance 是不能 ping 通的。

如下圖兩個(gè) vlan

兩臺(tái) Instance1 和 Instance2 分別連在 vlan100 和 vlan101。此時(shí)兩臺(tái) Instance 是不能 ping 通的。

因?yàn)?vlan 在二層是隔離的。如果想要互通,只能在三層通過路由轉(zhuǎn)發(fā)。


標(biāo)題名稱:linux創(chuàng)建租戶命令,Linux創(chuàng)建文本命令
網(wǎng)頁URL:http://weahome.cn/article/hoicie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部