1.4 SPICE和QEMU
如果要在
QEMU中使用spice,在编译QEMU时需要加上
--enable-spice,如果需要USB重定向的支持则在编译QEMU时加上
--enable-usb-redir 。spice的一些功能是通过QEMU中的-spice选项来开启,可以通过QEMU的help文档来了解该选项。下面是本人在实践中使用的-spice选项,QEMU版本为1.4.0或以上,SPICE版本为0.12.3或以上。
-spice port=$spicePort,image-compression=quic,jpeg-wan-compression=auto,zlib-glz-wan-compression=auto,streaming-video=all,playback-compression=on,agent-mouse=on,disable-ticketing
1.5 开启剪贴板共享
SPICE能够使client OS和 guest OS之间共享剪贴板,可以互相拷贝和粘贴。启动虚拟机时,在QEMU的启动选项里加入下面的选项即可开启剪贴板共享。
-device virtio-serial-pci \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0
1.6 开启USB重定向
SPICE的USB重定向功能够将client上的USB设备重定向到guest,这样就可以在guest OS中访问该USB设备,非常方便,管理员也能控制USB设备的添加和删除,保护企业内部数据不外泄。
1. 新建文件 /etc/qemu/ich9-ehci-uhci.cfg ,并在该文件中加入如下内容,保存。
###########################################################################
#
# You can pass this file directly to qemu using the -readconfig
# command line switch.
#
# This config file creates a EHCI adapter with companion UHCI
# controllers as multifunction device in PCI slot "1d".
#
# Specify "bus=ehci.0" when creating usb devices to hook them up
# there.
#
[device "ehci"]
driver = "ich9-usb-ehci1"
addr = "1d.7"
multifunction = "on"
[device "uhci-1"]
driver = "ich9-usb-uhci1"
addr = "1d.0"
multifunction = "on"
masterbus = "ehci.0"
firstport = "0"
[device "uhci-2"]
driver = "ich9-usb-uhci2"
addr = "1d.1"
multifunction = "on"
masterbus = "ehci.0"
firstport = "2"
[device "uhci-3"]
driver = "ich9-usb-uhci3"
addr = "1d.2"
multifunction = "on"
masterbus = "ehci.0"
firstport = "4"
2. 启动虚拟机的时候,在QEMU启动选项里加入下面的选项就开启了USB重定向功能
-readconfig /etc/qemu/ich9-ehci-uhci.cfg \
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 \
-chardev spicevmc,name=usbredir,id=usbredirchardev2 \
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 \
-chardev spicevmc,name=usbredir,id=usbredirchardev3 \
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3 \
3. linux下的spicec客户端只是个命令工具,不能选择需要重定向的USB设备,spicy可以,用yum就能安装spicy。
1.7 SPICE使用OpenSSL
OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,保证了SPICE在client和server间通信时的数据安全,同时可以防止客户机的恶意伪造。按照下面的简要步骤,就可以使用它的防伪造功能了,但需要补充点非对称加密,数字证书方面的知识。
2. 将生成的ca-cert.pem拷贝到指定位置,如果使用windows下的client来连接客户机,就拷贝到 %APPDATA%\spicec\spice_truststore.pem ,如果使用linux下的client就拷贝到 ~/.spice/spice_truststore.pem
3. 在QEMU启动参数的-spice选项中加入TLS端口和证书路径即可。
-spice tls-port=5931,x509-dir=/home/usr1/pki/
4. 使用客户端连接,$SUBJECT 为步骤1中脚本输出的 --host=subject 内容
spicec -h host -p 5930 -s 5931 --host-subject "$SUBJECT"
2 RFB
RFB(Remote Frame Buffer 远程帧缓冲)协议是一个用于远程访问图形用户界面的简单协议。由于RFB协议工作在帧缓冲层,因此它适用于所有的窗口系统和应用程序,如X11、Windows 3.1/95/NT和Macintosh等。RFB是将远端的客户机系统的显示作为一帧一帧的图像来处理,因此在网络环境差的情况下 体验较差。尤其是鼠标不能同步,而且较占带宽,VNC是基于RFB协议开发的远程操作软件,由于其开源且实现较为简单,因此应用也很广泛,大多数远程桌面产品都支持VNC。VNC先天不足,其功能也较少,于是不同版本的VNC出现,试图解决一些功能问题,比如linux下的TigerVNC强调对带宽的节省,商业版的realvnc支持了加密 文件传输等功能,realvnc支持的平台也较多。