文章目录
环境
安装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链接你的虚拟机啦