文章目錄
環境
安裝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鏈接你的虛擬機啦