玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

在雲和容器今天,基礎的虛擬架構更先得重要了。而其中基於Linux內核的開放虛擬機KVM更是最重要虛擬化基礎架構。本文蟲蟲將帶領大家一起實例學習利用KVN構建自己的虛擬平臺。其中包括:基於Centos 7.6安裝KVM、組網、配置VNC、安裝webvirtcloud進行KVM虛擬平臺管理,安裝kalil inux虛擬機實例。

KVM安裝

開啟虛擬化加速

KVM依賴CPU虛擬加速,需要確保機器已經開啟,可以通過linux命令查看該信息:

grep -E 'svm |vmx' /proc/cpuinfo

如果顯示如下:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

上面表示已經啟動了Intel的虛擬化加速。其中vmx表示Intel CPU的虛擬技術Intel Virtualization Technology, Intel VT-x。svm是AMD CPU的虛擬技術AMD Secure Virtual Machine, AMD SVM

如果你的終端執行後沒有輸出,你需要重啟電腦進入BIOS開啟用虛擬化。開機按鍵進入BIOS:

自攢機看主板:華碩按F8、Intel按F12,其他主板按ESC、F11或F12;

筆記本:聯想ThinkPad系列按F1,其他品牌按F2;

品牌臺式機按品牌分, Dell按ESC,其他按F12;

進入BIOS後,進入Configuration中設置開啟:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

AMD CPU:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

安裝KVM和相關的軟件組件

我們所有安裝都在Centos字符終端下,不會安裝任何圖形工具來管理虛擬機。

安裝KVM需要安裝一下相關軟件包:

yum install qemu-kvm qemu-img libvirt virt-install libvirt-client libvirt-python

yum安裝時候會自動安裝必須的許多依賴項。安裝完成後,可以通過以下命令檢查:

lsmod | grep kvm

如果安裝無誤,輸入應該顯示類似如下:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

配置網絡

默認情況下,KVM會在虛擬機管理程序上設置名為"virbr0"的網絡接口。它為為虛擬機創建一個網絡,該網絡使用NAT(網絡地址轉換)訪問它所駐留的網絡之外的資源,在本例中使用的是192.168.122.0/24。

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

為了虛擬機能有單獨的網絡,我們需要配置橋接網絡:

cd /etc/sysconfig/network-scripts/

cp ifcfg-eno1 ifcfg-bridge0

注意加重部分根據實際情況換成實際的網卡名

修改ifcfg-eno1配置為:

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

NAME= eno1

DEVICE= eno1

ONBOOT=yes

BRIDGE= bridge0

修改ifcfg-bridge0配置為:

TYPE=Bridge

BOOTPROTO=static

DEFROUTE=yes

NAME= bridge0

DEVICE= bridge0

ONBOOT=yes

IPADDR=10.0.15.240

GATEWAY=10.0.15.254

DNS=114.114.114.114

注意網絡按照實際情況修改,網卡ifcfg-eno1中的ip地址信息配置刪除,新增加"BRIDGE= bridge0",而在ifcfg-bridge0中配置ip地址等信息。

然後重啟網絡:

systemctl restart network

配置VNC

修改監聽地址

在KVM創建虛擬機時候virt-install添加使用'-vnc'選項時,就會在localhost(127.0.0.1)地址啟動一個監聽。為了遠程訪問,我們需要修改vnc的默認配置。我們修改/etc/libvirt/qemu.conf,查找:

# vnc_listen ="0.0.0.0"

去掉改語句前面的#註釋符號,使得該配置生效,這樣就可以遠程反問vnc了。

防火牆開放端口

相應我們需要在防火牆開放規則,開啟vnc的端口。VNC的默認端口範圍從TCP 5900開始,往下順延,一臺虛擬機佔用一個端口。我們在防火牆上開啟TCP 5900 -> 6100段端口就足矣。

firewall-cmd --zone = public --permanent --add-port = 5900-6100/tcp

如果使用iptables:

iptables -A INPUT -p tcp -m state --state NEW --dport 6000:6500 -j ACCEPT

添加後通過運行來驗證我們的規則條目

firewall-cmd --zone = public --permanent --list-ports

iptables使用

iptabes iptables -n -L

構建虛擬機

準備安裝鏡像

構建虛擬機之前需要先下載好安裝ISO鏡像,本例子中我們選擇國內鏡像站,下載kali最新安裝包鏡像kali-linux-light-2019.2-amd64.iso。

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

下載完成後,使用

sha1sum kali-linux-light-2019.2- amd64.iso 並比對鏡像站提供的哈希值做校對,確保安裝包無誤。

生成虛擬機

OK,萬事具備只欠東風,生成虛擬機也很容易只需要用virt-install命令即可:

virt-install --name kali --ram 1024 --file=/var/lib/libvirt/images/kali.img --file-size=10 --vnc --cdrom=kali-linux-2019.2-amd64.iso

在應該看到以下內容:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

上面提示機器已經創建成功,需要我們完成具體安裝,這時候就需要VNC介入開啟安裝窗口了。

VNC安裝kali linux

可以通過命令行

virsh vncdisplay kali

可以獲得該臺虛擬機vnc監聽端口:

本例中為:

:1

啟動安裝界面

這樣我們就可以通過VNC客戶端(需要先下載)連接到虛擬機管理程序,比如本例中為10.0.15.240:5900 (或者10.0.15.240:1)

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

上面已經顯示了kali安裝界面,我們直接選擇圖形安裝,然後按照正常安裝步驟安裝即可。

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

問題解決

安裝步驟中在安裝引導一步中報錯:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

需要在安裝包設置一步驟,選擇網絡鏡像時候選擇否

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

安裝後登陸中界面亂碼

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

通過dpkg-reconfigure locales"。選擇locals選項選中en_US.UTF-8和zh_CN.UTF-8,確定後,將en_US.UTF-8選為默認。

安裝中文字庫

apt install xfonts-intl-chinese

apt install ttf-wqy-microhei

KVM常見管理命令


KVM的虛擬機都是可以使用命令行管理的,此處我們簡單的總結下常見命令。

virsh list:查看啟動中的虛擬機

virsh list --all:列出所有虛擬機

irsh start name:啟動虛擬機

virsh shutdown name:關閉虛擬機

virsh destroy name:強制關閉虛擬機

virsh suspend name:掛起虛擬機(暫停,保存運行狀態)

virsh resume name:恢復掛起的虛擬機

virsh edit name:編輯虛擬機的xml配置文件

virsh undefine name:刪除創建的KVM虛擬機

virsh snapshot-create name 創建快照

virsh snapshot-revert name 恢復快照

webvirtcloud管理KVM平臺

雖然完全可以基於命令工具來管理KVM,但是不夠直接方便。為此我們最後介紹一個通過Web管理KVM虛擬平臺的系webvirtcloud。關於這個軟件目前介紹還比較少,他是WebVirtMgr軟件的升級版本,WebVirtMgr網上有很多文檔介紹,大家可以參考學習。

安裝

webvirtcloud直接安裝比較費勁,為了便捷直接使用容器化方式安裝。

拉取鏡像:

docker pull mplx/docker-webvirtcloud:latest

docker啟動:

docker run -d \\

-p 8080:80 \\

-v /srv/webvirtcloud/data:/srv/webvirtcloud/data \\

-v /srv/webvirtcloud/ssh:/var/www/.ssh \\

--name webvirtcloud \\

mplx/docker-webvirtcloud:latest

compose方式啟動,配置如下

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

啟動後遠程瀏覽器訪問,默認用戶密碼是admin admin

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

宿主機SSH證書登陸

為了管理KVM虛擬平臺需要在宿主機上創建ssh證書鏈接配置。首先創建一個KVM實例管理用戶webvirtmgr。

adduser webvirtmgr

配置證書登陸

mkdir /home/webvirtmgr/.ssh

cd /srv/webvirtcloud/ssh/

這個/srv/webvirtcloud/ssh目錄為我們管理系統容器中映射來的目錄

cp id_rsa.pub /home/webvirtmgr/.ssh/authorized_keys

chmod 0600 /home/webvirtmgr/.ssh/authorized_keys

chown -R webvirtmgr:webvirtmgr /home/webvirtmgr/.ssh

將該用戶添加到libvirtd管理組

usermod -a -G libvirtd webvirtmgr

為libvirt添加一條polkit策略

vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla

內容如下:

[libvirt group Management Access]

Identity=unix-group:libvirt

Action=org.libvirt.unix.manage

ResultAny=yes

ResultInactive=yes

ResultActive=yes

重啟libvirtd服務

systemctl restarts libvirtd.service

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

注意上述步奏很重要,如果配置不對,則下一步添加實例時候會報錯:

添加實例

首選我們需要添加KVM示例,默認支持4種方式,由於我們的管理系統是在容器中,我們使用SSH鏈接方式:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

添加實例名稱、IP地址,用戶後點擊ADD,就會添加了實例

實例管理

添加實例成功後就可以對實例進行配置,包括虛擬機(Instances)、存儲、網絡,網卡、NWFilters和密鑰等

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

添加主機


選擇instances標籤頁,點擊右上"+"就可添加主機,可以使用默認6中配置,也可以custom自定義配置或者通過模版和XML文件設置配置。

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

主機管理

創建一個主機後,可以點擊主機,進行主機管理界面如下圖:

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

可以進行開關機Power、訪問、resize擴容、鏡像、設置、統計和銷燬主機的操作。注意所有改變主機配置的操作,都必須在關機後才能進行。

實例監控

webvirtcloud也提供了從KVM實例到每一臺虛擬主機的監控信息。

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

日誌記錄

webvirtcloud同樣也提供了實例到主機層次的操作日誌記錄。

玩轉虛擬化之KVM:利用VNC、webvirtcloud自建虛擬平臺

總結

KVM是一個非常強大的虛擬化程序,是現代虛擬化解決方案的骨幹之一。本文我們通實例詳細介紹了KVM的安裝配置,最後成功安裝了kali linux虛擬機。還介紹了一款基於Web管理強大KVM 虛擬平臺管理軟件,通過這些我們可以自建和管理個性化虛擬化基礎架構。

"


分享到:


相關文章: