centos7 使用libvirt創建kvm虛擬機並vnc連接

環境

安裝libvirt

yum install -y qemu-kvm libvirt virt-install

啓動:systemctl start libvirtd.service
不然會報:Failed to connect socket to ‘/var/run/libvirt/libvirt-sock’: No such file or directory

查看libvirt的一些默認配置

查看libvirt的默認網絡配置

[[email protected]]# virsh net-list

 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

[[email protected]]# cat /etc/libvirt/qemu/networks/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default
or other application using the libvirt API.
-->

<network>
  <name>default</name>
  <uuid>850af4ff-a872-4c56-86e6-c3c0e8f7a5a8</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:54:49:d1'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

kvm虛擬機搭建與連接

創建虛擬機

創建磁盤

在/data 目錄下創建虛擬鏡像,也可以在別的目錄

[[email protected]]# qemu-img create -f qcow2 /data/10g.qcow2 10G

下載鏡像

隨意在centos官網上下載一個鏡像

[[email protected]]# wget xxx

使用libvirt創建kvm虛擬機

libvirt常用參數

-n --name= 客戶端虛擬機名稱
-r --ram= 客戶端虛擬機分配的內存
-u --uuid= 客戶端UUID 默認不寫時,系統會自動生成
–vcpus= 客戶端的vcpu個數
-v --hvm 全虛擬化
-p --paravirt 半虛擬化
-l --location=localdir 安裝源,有本地、nfs、http、ftp幾種,多用於ks網絡安裝
–vnc 使用vnc ,另有–vnclient=監聽的IP --vncport =VNC監聽的端口
-c --cdrom= 光驅 安裝途徑
–disk= 使用不同選項作爲磁盤使用安裝介質
-w NETWORK, --network=NETWORK 連接客戶機到主機網絡
-s --file-size= 使用磁盤映像的大小 單位爲GB
-f --file= 作爲磁盤映像使用的文件
–cpuset=設置哪個物理CPU能夠被虛擬機使用
–os-type=OS_TYPE 針對一類操作系統優化虛擬機配置(例如:‘linux’,‘windows’)
–os-variant=OS_VARIANT 針對特定操作系統變體(例如’rhel6’, ’winxp’,‘win2k3’)進一步優化虛擬機配置
–host-device=HOSTDEV 附加一個物理主機設備到客戶機。HOSTDEV是隨着libvirt使用的一個節點設備名(具體設備如’virsh nodedev-list’的顯示的結果)
–accelerate KVM或KQEMU內核加速,這個選項是推薦最好加上。如果KVM和KQEMU都支持,KVM加速器優先使用。
-x EXTRA, --extra-args=EXTRA 當執行從"–location"選項指定位置的客戶機安裝時,附加內核命令行參數到安裝程序
–nographics “virt-install” 將默認使用–vnc選項,使用nographics指定沒有控制檯被分配給客戶機

創建kvm常用指令
[[email protected]]# virt-install --virt-type kvm --name test --ram 1024 \
> --cdrom=/data/CentOS-7-x86_64-DVD-1908.iso \
> --disk /data/10.qcow2,format=qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 --noautoconsole \
> --os-type=linux

使用vnc連接kvm虛擬機

查看kvm虛擬機佔用的vnc端口

[[email protected]]# virsh vncdisplay test
:0

查看當前的iptables情況:

[[email protected]]# iptable -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

放行5900端口

[[email protected]]# iptables -A INPUT -p tcp -m tcp --dport 5900 -j ACCEPT

添加完畢後,再查看下規則

[[email protected]]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5900
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5900

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

注意放行5900規則的順序在最末尾,而前面有下面的一條規則:

REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
這條規則會將所以的包都攔截了,因爲規則是按順序應用的,所以這樣的話設置的放行規則是不起作用的,應該將放行規則放在這條規則前面。
iptables -I INPUT 2 -p tcp -m tcp --dport 5900 -j ACCEPT 將規則放在第二條

使用vnc軟件連接

可以下載vnc鏈接你的虛擬機啦
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章