生命不息
折腾不止

教程:CentOS服务器安装windows虚拟机(NAT版),解决KVM中windows10安装蓝屏的问题

因为经常能弄到的服务器都是 1 个 IP 的 . 但又想用 windows 怎么办呢 ? 其实可以通过安装虚拟机的方式来实现 . 今天主要就来介绍下 , 就一个 IP 的时候 , 怎么安装 windows 虚拟机 , 并且通过 NAT 的方式来实现端口转换 .

建议安装 Centos6. Centos7 的 firewalld 有部分命令还是需要用到 iptables 命令来实现端口转发 , 没有 centos6 那么方便 . 以下的教程是基于 Centos6.

另外 , 请不要在 VPS 上进行任何尝试 …. 一般被抓到玩虚拟机就是被封号 ..

第一步 : 安装环境

yum -y install qemu-kvm libvirt python-virtinst bridge-utils avahi dmidecode virt-viewer virt-install

第二步 : 配置桥接网络

先拷贝一份目前的网络配置文件 , 命名为 ifcfg-br0

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0

配置 ifcfg-br0. 首先确保下面两行的 . 如果没有的话 , 就在末尾加入就可以了 . 其他的信息不需要动

TYPE=Bridge
DEVICE=br0

修改原网卡的配置文件 ifcfg-eth0. 只需要修改下面两行信息 , 如果没有 , 就在末尾加入 , 其他也不需要动 .

BRIDGE=br0
NM_CONTROLLED=no

重启下网络

service network restart

第三步 : 修改一些配置文件

开启 VNC, 方便使用 vnc 进行连接安装

vim /etc/libvirt/qemu.conf

vnc_listen = "0.0.0.0" 前面的注释 # 去掉

启动 libvirt 等相关服务 .

/etc/init.d/messagebus restart
/etc/init.d/avahi-daemon restart
/etc/init.d/libvirtd restart

开启 IPv4 的转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1  值原来是 0, 改成 1

执行命令 sysctl -p 使配置生效

关闭 selinux

vim /etc/selinux/config

修改为 :SELINUX=disabled

重启生效 .

第四步 : 准备好系统的 ISO

带 virtio 驱动的 windows 的 ISO 可以在这里下载到 : https://soft.91yun.org/Windows/virtio ( 需要梯子 , 你懂的 )

第五步 : 创建系统需要的硬盘文件

qemu-img create -f qcow2 /home/kvm/win10.qcow2 100G

win10.qcow2  是文件名 , 你可以自行修改 , 后面安装命令会用到

100G 是硬盘大小 , 你可以自行修改

第六步 : 使用 virsh-install 开始安装 windows

virt-install \
--hvm \
--name win10 \
--ram 2048 \
--vcpus=2 \
--cpu host \
--accelerate \
--network network=default,model=virtio \
--cdrom=/home/iso/win10.iso \
--disk path=/home/kvm/win2010.qcow2,format=qcow2,sparse=true,cache=none,bus=virtio \
--graphics vnc,listen=0.0.0.0,port=5901,password=91yun \
--os-type=windows \
--autostart

以下是你需要自行修改的参数说明 :

--name win10 这里的 win10 是虚拟机的名字 , 你可以自行修改

--ram 2048  给虚拟机 2048M 内存 (2G), 你可以自行修改

--vcpus=2  给虚拟机分配 2 个 CPU 核心 , 你可以自行修改

--cpu host  这个选项是安装 windows10 专用的 , 因为 windows 不支持很多老的虚拟化的 CPU, 如果安装 windows10 使用了这个选项依然安装的时候蓝屏 , 就把这个选项改成 --cpu core2duo  就是使用 core2duo 的 cpu 配置 . 如果是老的 win2008,win2012 或者 linux, 可以不需要这个选项 .

--cdrom=/home/iso/win10.iso  指定安装的 iso 地址 . 请自行修改

--disk path=/home/kvm/win10.qcow2  在第五步生成的硬盘文件地址 , 请自行修改

--graphics vnc,listen=0.0.0.0,port=5901,password=91yun  这里的 5901 是虚拟机的 vnc 端口 , 每个虚拟机请分配不同的端口 .   password 是设置 vnc 连接使用的密码 , 请自行修改 .

--os-type=windows  如果你安装的是 linux 就把这个改成 linux 就可以了

第七步 : 通过 VNC 来安装系统

vnc 的下载地址 :https://www.realvnc.com/en/connect/download/viewer/

输入你的 服务器地址 : 端口 即可访问你的虚拟机了

如果连不上虚拟机 , 请确认你的 vnc 端口已经在防火墙里面通过 . 通过命令是 :iptables -A INPUT -p tcp --dport 5901 -j ACCEPT

虚拟机安装完系统第一次重启的时候 , 不会自动起来 , 你需要在服务器上执行 virsh start win10  来唤醒虚拟机 . 这个 win10 就是你上面安装代码设置的 –name

第八步 : 配置防火墙 iptables

执行

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
service iptables save
service iptables restart

如果你不需要端口转发 , 那么你执行完这个 iptables 命令 , 你的 windows 虚拟机就已经可以上网了 .

如果你需要端口转发 , 比如需要通过 3389 端口使用远程桌面连接连接你的 windows 虚拟机 . 那么你需要执行以下代码 .

NAT 端口转发设置

首先执行 :

iptables -I FORWARD -o virbr0 -d 192.168.122.111 -j ACCEPT

需要注意的是 , 这里的 192.168.122.111 是你虚拟机的 IP, 如果你需要端口转发 , 建议在虚拟机里面设置成固定 IP, 而不是 dhcp 获取 . 否则你虚拟机 ip 变了就又连不上了 .

下面是一个代码段 , 有要开放的端口都可以依次设置 . 比如要开放 3389, 那么 iptables 命令就是 : 192.168.122.111 是虚拟机的 ip

iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp -i br0 --dport 3389 -j DNAT --to-destination 192.168.122.111:3389
service iptables save
service iptables restart

如果你想把服务器的 2222 端口转发到虚拟机的 22 端口 . 那么就执行

iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp -i br0 --dport 2222 -j DNAT --to-destination 192.168.122.111:22
service iptables save
service iptables restart

ok, 这样你的端口就转发成功了 .

最后 , 虚拟机管理 virsh 命令的常用使用

virsh start 虚拟机 :   启动虚拟机 , 比如 virsh start win10

virsh destroy 虚拟机 : 强制关闭虚拟机 , 比如 virsh destroy win10

最后的最后 : 常见问题解答

如果你通过 vnc 连接虚拟机的时候 ,vnc 闪退 .

虚拟机的属性设置 (properties)>>Expert>>ColorLevel    设置成 full

如果你通过 vnc 连接虚拟机的时候 ,vnc 显示 “ZlibInStream:Inflate Failed/ZlibInStream :exceeded bytesIn” 错误

调整画面质量即可解决 :Options -> General -> Picture quality -> Low

Image 1.jpg

 

如果还有问题 , 欢迎在评论区提出 , 我会不断更新这个 FAQ.

赞(0)
未经允许不得转载:91云(91yun.co) » 教程:CentOS服务器安装windows虚拟机(NAT版),解决KVM中windows10安装蓝屏的问题

留言 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #0

    大佬好,提个小建议。有关禁用SELinux,你的方法可能需要重启才能生效,而且是永久生效的,如果想不重启即刻生效可以使用setenforce 0来解决,这种方法即刻生效,但重启后会失效,可以搭配你的方法一起使用。可能有错,欢迎指出。

    Test IP6年前 (2018-07-13)回复
    • 你说的没错O(∩_∩)O~~

      91yun6年前 (2018-07-13)回复