LXD容器中通过Qemu安装Win7虚拟机(呕心制作-诸多细节)
前言
为了抵御网络攻击,实验复现某些计算机漏洞,需要安装Win7操作系统。
真是呕心制作,反复尝试好多次,搜索很多相关资料,终于总结出这篇文章,其目的是通过虚拟化技术,完成Win7的安装配置。其中还包括别的文章中没有提及的可视化界面、设置Win7网络、同一网段通信等细节,如有用,希望大家点赞收藏。
文章目录
Qemu安装Win7
一. 安装配置qemu
先查看虚拟机是否满足虚拟化配置
LC_ALL=C lscpu | grep Virtualization
egrep -c '(vmx|svm)' /proc/cpuinfo
或者
cat /proc/cpuinfo | grep vmx
lsmod | grep kvm
有输出结果表明支持虚拟化

安装下载qemu及相关软件包
sudo apt install qemu qemu-kvm virt-manager bridge-utils libvirt-bin virtinst libvirt-daemon-system
添加用户
useradd -g $USER libvirt
useradd -g $USER libvirt-kvm
设置开机自启
systemctl enable libvirtd.service && sudo systemctl start libvirtd.service
查看版本
qemu-system-x86_64 --version

二. 安装可视化window7
前置条件:
-
物理机的IP地址为:
10.96.233.24 -
虚拟机的IP地址为:
10.233.73.1 -
容器的IP地址为:
10.233.73.123
其中容器指创建在虚拟机上的LXD,而我们的qemu又是运行在容器中,win7安装在qemu上
2.1 物理机操作
首先本身的物理机要开启虚拟化,进入任务管理器,查看当前CPU,确保虚拟化为已启用

在系统设置中搜索内核隔离,将其关闭

再开启VMWare的虚拟化引擎

2.2 界面转发-容器设置
设置容器的密码为root,否则不允许远程登录
passwd root
由于容器没有界面,所以需要利用SSH的X11完成界面转发到宿主机上
apt-get install openssh-server
修改容器的ssh配置文件
vi /etc/ssh/sshd_config
将PermitRootLogin和X11Forwarding修改为yes,同时去掉注释


重启容器的ssh服务
systemctl restart sshd
查看是否成功开启服务
systemctl status sshd

2.3 界面转发-宿主机设置
修改宿主机的ForwardAgent和forwardx11以及forwardx11trusted为yes,同时去掉注释
vi /etc/ssh/ssh_config
特别注意,这个配置文件名称和上面那个不同

重启宿主机的ssh服务
systemctl restart sshd
查看是否开启服务
systemctl status sshd

2.4 测试界面转发
在容器中下载测试软件
apt-get install x11-apps
宿主机通过ssh -X登录容器
ssh -X root@10.233.73.123
宿主机使用命令查看图形化界面是否转发成功
xclock

2.5 安装win7
2.5.1 驱动下载
我们需要两个驱动:
- 第一个是:下载网卡驱动,点击下载Virtio网卡驱动,下载驱动重命名为
virtio01103.iso,用于给win7设置网络

- 第二个是:下载
win7的镜像,网上很多资源,或者下载我百度网盘里面的镜像,点击下载Win7家庭版64位镜像,下载的镜像重命名为win7x64.iso
将下载好的镜像全部传递到容器中
lxc file push virtio01103.iso Win7/root/MyWin7/
lxc file push win7x64.iso Win7/root/MyWin7/
2.5.2 加载镜像
宿主机利用远程登录到容器
ssh -X root@10.233.73.123

创建一个新的磁盘windows7.qcow2用于放置win7的文件,大小为20G
qemu-img create -f qcow2 windows7.qcow2 20G
此时我们拥有如下文件,包括两个镜像文件和一个磁盘文件

加载镜像
qemu-system-x86_64 -m 1G -cpu host -enable-kvm -boot d -hda /root/MyWin7/windows7.qcow2 -cdrom /root/MyWin7/win7x64.iso -usbdevice tablet -net nic,model=virtio -net user -drive file=/root/MyWin7/virtio01103.iso,media=cdrom
-m 1G:表示划分的内存大小-cpu host:表示使用的cpu使用和主机一样-enable-kvm:用于启动kvm-boot d:从硬盘启动系统-hda windows7.qcow2:加载的磁盘-cdrom winx64.iso:加载的镜像-usbdevice tablet:用于保证qemu中的鼠标和容器中同步-net nic,model=virtio -net user:表示为客户机创建虚拟网卡,其中模式为virtio-drive file:表示加载的网卡镜像
如果成功开启了kvm,但是依旧无法加载镜像,可去除-cpu host -enable-kvm选项,加载镜像
qemu-system-x86_64 -m 1G -boot d -hda /root/MyWin7/windows7.qcow2 -cdrom /root/MyWin7/win7x64.iso -usbdevice tablet -net nic,model=virtio -net user -drive file=/root/MyWin7/virtio01103.iso,media=cdrom
开始加载镜像

直接下一步

选择自定义设置,然后默认磁盘即可

等待安装

安装成功
在安装完成镜像后,我们启动win7,已经不需要加载win7和virtio镜像了,所以,当关机后再次启动win7,命令如下
qemu-system-x86_64 -m 1G -boot d -hda /root/MyWin7/windows7.qcow2 -usbdevice tablet -net nic,model=virtio -net user
2.5.3 网络配置
刚装载好的电脑没有网络,打开设备管理器,选择更新驱动

自定义驱动,选择我们刚才下载的驱动器

确认安装

安装成功,有网啦

2.5.4 统一网段
虽然这个时候可以ping通外网,但是IP地址不在当前宿主机的网段下,而是在qemu的自带网段下面,宿主机无法和qemu直接通信,我们要通过桥接网络接口的方式实现统一网段
将qemu关闭,在容器中下载相关网桥工具
apt-get install bridge-utils # 虚拟网桥工具
apt-get install uml-utilities # UML(User-mode linux)工具
在容器中执行如下命令,创建一个tap0接口
ifconfig eth0 down # 首先关闭宿主机网卡接口
brctl addbr br0 # 添加名为 br0 的网桥
brctl addif br0 eth0 # 在 br0 中添加一个接口
brctl stp br0 off # 如果只有一个网桥,则关闭生成树协议
ifconfig br0 0.0.0.0 promisc up # 启用 br0 接口
ifconfig eth0 0.0.0.0 promisc up # 启用网卡接口
dhclient br0 # 从 dhcp 服务器获得 br0 的 IP 地址
tunctl -t tap0 -u root # 创建一个 tap0 接口,只允许 root 用户访问
brctl addif br0 tap0 # 在虚拟网桥中增加一个 tap0 接口
ifconfig tap0 0.0.0.0 promisc up # 启用 tap0 接口
brctl showstp br0 # 显示 br0 的各个接口
再次加载镜像,但是这次的网络链接方式变为了-net tap,同时指定了名称为ifname=tap0
qemu-system-x86_64 -m 1G -boot d -hda /root/MyWin7/windows7.qcow2 -usbdevice tablet -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=no
我们打开qemu,查看ip,已经和宿主机及容器在同一个网段下面了
此时我们所有的IP信息如下:
-
物理机的IP地址为:
10.96.233.24 -
虚拟机的IP地址为:
10.233.73.1 -
容器的IP地址为:
10.233.73.123 -
qemu中win7的IP为:10.233.73.76

这个时候win7已经可以ping通宿主机和容器,但宿主机和容器无法ping通win7

还要做最后一步,在控制面板中关闭防火墙设置

到现在为止,宿主机可以ping通win7

容器也可以ping通win7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!